
    ujo	                        d Z ddlmZ ddlmZ ddlmZmZ 	 ddlZ	edd       Zddddd	Zddddd
ZddddZy# e
$ r dZ	Y *w xY w)u  host/clipboard.py

Windows host PC의 텍스트 클립보드 읽기/쓰기 분리 모듈.
현재는 Tk clipboard API를 우선 사용한다. 이미 Tk 메인루프가 있는 yjm_win2rtc 구조에 가장 단순하고
추가 의존성이 없다.

주의:
- Tk clipboard 접근은 가능하면 Tk 메인 스레드에서 실행한다.
- 이미지/파일 클립보드는 아직 지원하지 않는다.
    )annotations)contextmanager)IteratorOptionalNc               #  
  K   t         t        d      t        j                         } | j                          	 |  	 | j	                          y # t
        $ r Y y w xY w# 	 | j	                          w # t
        $ r Y w w xY wxY ww)Nu%   tkinter를 사용할 수 없습니다)tkRuntimeErrorTkwithdrawdestroy	Exception)roots    %D:\_St\RTC8790_8791\host\clipboard.py
_temp_rootr      st     	zBCC557DMMO
	LLN 			LLN 		s]   6BA A B	ABABB  A10B 1	A=:B <A==B  Bi@ 	max_charsc               
   t        dt        |            }| !t               5 }t        ||      cddd       S 	 | j	                         }t        |t              st        |      }|d| S # 1 sw Y   :xY w# t        $ r Y yw xY w)uc   텍스트 클립보드를 읽는다. 텍스트가 아니거나 비어 있으면 None일 수 있다.   Nr   )maxintr   	read_textclipboard_get
isinstancestrr   )r   r   rtexts       r   r   r   '   s}    As9~&I|\QQ)4 \!!#$$t9DJY \  s   A*/A6 *A36	BBc               \   | dn
t        |       }|dt        dt        |             }|"t               5 }t	        |||      cddd       S |j                          |j                  |       	 |j                          t        |      S # 1 sw Y   FxY w# t        $ r Y t        |      S w xY w)uG   텍스트 클립보드에 쓴다. 기록한 문자 수를 반환한다.N r   r   )
r   r   r   r   
write_textclipboard_clearclipboard_appendupdater   len)r   r   r   valuer   s        r   r   r   6   s    ,BCIE*C3y>*+E|\QeQ)< \%  u: \  u:s   B	.B 	B	B+*B+*   )limitc                   | dn
t        |       }|j                  dd      j                  dd      j                         }t        |      |kD  r|d | dz   S |xs dS )Nr    
u   …u   (빈 텍스트))r   replacestripr#   )r   r&   r$   s      r   preview_textr-   G   s`    ,BCIEMM$$,,T37==?E
5zEVe}u$$%%%    )returnzIterator[object])N)r   Optional[object]r   r   r/   z
str | None)r   objectr   r0   r   r   r/   r   )r   r1   r&   r   r/   r   )__doc__
__future__r   
contextlibr   typingr   r   tkinterr   r   r   r   r   r-    r.   r   <module>r8      sk   	 # % %
   PW " 02 &g  	Bs   = AA