
    uj                    \    d Z ddlmZ ddlZddlZ	 ddlZ G d d      Zy# e$ r dZY w xY w)u  원격 입력 상태를 호스트 PC 화면 위에 작고 반투명하게 표시한다.

목표:
- 원격 제어가 실제 PC에 입력을 넣고 있음을 로컬 사용자에게 알려준다.
- 너무 크지 않게 2줄 정도로 표시한다.
- 드래그 이동 가능.
- X 버튼으로 현재 표시를 닫을 수 있다. 다음 원격 입력이 들어오면 다시 표시된다.
    )annotationsNc                  b    e Zd ZddddZddZddZddZddZddZdd	Z	dd
Z
ddZddZy)RemoteActivityOverlayi  )hold_msc                   || _         t        |      | _        d | _        d | _        d | _        d | _        d | _        d| _        d| _	        d | _
        d | _        y )N g        )rootintr   wintitle_label	msg_labelclose_labelhide_after_id	last_textlast_atuser_pos_drag_start)selfr	   r   s      (D:\_St\RTC8790_8791\yjm_remote_status.py__init__zRemoteActivityOverlay.__init__   sW    	7|'+,0*.,0!04=A    c                h     	  j                   j                  d fd       y # t        $ r Y y w xY w)Nr   c                 &     j                        S N)_show_in_tkr   texts   r   <lambda>z,RemoteActivityOverlay.show.<locals>.<lambda>'   s    t'7'7'=r   )r	   after	Exceptionr   s   ``r   showzRemoteActivityOverlay.show$   s-    	IIOOA=> 		s    % 	11c                   t         r	 t        t        j                  d            }t        t        j                  d            }t        t        j                  d            }t        t        j                  d            }||||fS ddt        | j                  j                               t        | j                  j                               fS # t        $ r Y Sw xY w)NL   M   N   O   r   )win32apir
   GetSystemMetricsr    r	   winfo_screenwidthwinfo_screenheight)r   lefttopwidthheights        r   _virtual_screenz%RemoteActivityOverlay._virtual_screen+   s    844R89(33B78H55b9:X66r:;S%// !S4467TYY=Y=Y=[9\\\  s   A=C 	CCc                0    t        j                   j                         _         j                  j	                  d        j                  j                  dd       	  j                  j                  dd        j                  j                  d       t        j                   j                  ddd	      }|j                  t         j                  d
       t        j                  |d      }|j                  t         j                         t        j                  |ddddddd       _         j                  j                  t         j                  t         j                  d       t        j                  |ddddddd       _         j                  j                  t         j                           j                  j#                  d fd       t        j                  |ddddd d!dd"#	       _         j$                  j                  t         j                          j                  || j                   j$                  fD ]:  }|j#                  d$ j&                         |j#                  d% j(                         < y # t        $ r Y w xY w)&NTz-topmostz-alphag=
ףp=?z#151515)bg   solid)r1   bdrelief)fillexpand)r6   u   원격 알림z#ffdd66)Segoe UI	   bold      w)r   r1   fgfontpadxpadyanchor)sider6   r7      ×z#eeeeee)r8   
   r:      hand2)r   r1   r>   r?   r@   rA   cursor)rC   z
<Button-1>c                $    j                         S r   )hide)_er   s    r   r   z.RemoteActivityOverlay._build.<locals>.<lambda>]   s    tyy{r   r   z#ffffff)r8   rE   rE      r+   )r   r1   r>   r?   r@   rA   rB   justifyz<ButtonPress-1>z<B1-Motion>)tkToplevelr	   r   overrideredirect
attributesr    	configureFramepackBOTHXLabelr   LEFTr   RIGHTbindr   _start_drag_drag)r   outerr,   widgets   `   r   _buildzRemoteActivityOverlay._build8   s   ;;tyy)!!$'J-	HH$/ 	i(iAgF


-hhu+bdd88 (	
 	277dC88)	
 	288,l,BC!

 	&xxT-=-=t~~NFKK)4+;+;<KKtzz2 O]  		s   J 	JJc                L    | j                         \  }}}}||z   |z
  dz
  |dz   fS )N   )r/   )r   r-   r.   vxvyvw_vhs          r   _default_posz"RemoteActivityOverlay._default_posp   s4    ..0BCBw#R"W,,r   c           	        t        |xs d      | _        t        j                         | _        | j                  | j                  j                         s| j                          | j                  rL| j                  j                         }t        |      dkD  r|d d dz   }| j                  j                  |       | j                  J | j                  j                          t        dt        d| j                  j                                     }t        dt        d| j                  j                                     }| j                   r| j                   \  }}n| j#                  ||      \  }}| j                  j%                  | d	| d
| d
|        | j                  j'                          | j                  j)                          | j*                  r&	 | j,                  j/                  | j*                         | j,                  j3                  | j4                  | j6                        | _        y # t0        $ r Y Aw xY w)Nu   원격 입력*   u   …)r      ih  4   V   x+)strr   timer   r   winfo_existsr_   r   striplenrR   update_idletasksmaxminwinfo_reqwidthwinfo_reqheightr   rf   geometry	deiconifyliftr   r	   after_cancelr    r   r   rJ   )r   r   msgr-   r.   rl   ys          r   r   z!RemoteActivityOverlay._show_in_tkt   s   T4_5yy{88488#8#8#:KKM>>..&&(C3x"}#2h&NN$$#$.xx###!!#CS$(("9"9";<=RR!9!9!;<=====DAq$$UF3DAqUG1VHAaS!56		&&t'9'9: "YY__T\\499E  s   %H3 3	H?>H?c                    | j                   y 	 |j                  |j                  | j                   j                         | j                   j	                         f| _        y # t        $ r
 d | _        Y y w xY wr   )r   x_rooty_rootwinfo_xwinfo_yr   r    )r   events     r   r[   z!RemoteActivityOverlay._start_drag   sa    88	$ %ellDHH<L<L<NPTPXPXP`P`PbcD 	$#D	$s   AA A21A2c                \   | j                   | j                  sy | j                  \  }}}}||j                  |z
  z   }||j                  |z
  z   }t	        |      t	        |      f| _        	 | j                   j                  dt	        |       dt	        |              y # t        $ r Y y w xY w)Nrm   )r   r   r   r   r
   r   rx   r    )r   r   sxsywxwynxnys           r   r\   zRemoteActivityOverlay._drag   s    884#3#3))BB5<<"$%5<<"$%R#b'*	HH#b'!CG956 		s   +3B 	B+*B+c                8   	 | j                   r,| j                  j                  | j                          d | _         	 | j                  6| j                  j                         r| j                  j                          y y y # t        $ r Y Ow xY w# t        $ r Y y w xY wr   )r   r	   r{   r    r   rp   withdrawr   s    r   rJ   zRemoteActivityOverlay.hide   s    	!!		&&t'9'9:%)"	xx#(=(=(?!!# )@#  		
  		s#   8A> A B >	B
	B
	BBc                ^   	 | j                   r%| j                  j                  | j                          	 | j                  4| j                  j                         r| j                  j                          d | _        d | _        d | _        d | _	        y # t        $ r Y iw xY w# t        $ r Y 7w xY wr   )
r   r	   r{   r    r   rp   destroyr   r   r   r   s    r   r   zRemoteActivityOverlay.destroy   s    	!!		&&t'9'9:	xx#(=(=(?  "   		
  		s#   1B A B  	BB 	B,+B,N)r	   ztk.Tkr   r
   )r   rn   returnNone)r   ztuple[int, int, int, int])r   r   )r-   r
   r.   r
   r   ztuple[int, int])__name__
__module____qualname__r   r!   r/   r_   rf   r   r[   r\   rJ   r    r   r   r   r      s<    6: B]63p-!FF$
 r   r   )	__doc__
__future__r   ro   tkinterrN   r'   r    r   r   r   r   <module>r      s?    #  
p  p 	  Hs   ! ++