
    |Ejo	                        d Z ddlmZ ddlmZ ddlmZmZ 	 ddlZ	n# e
$ r dZ	Y nw xY wedd            Zdd	d
ddZdd	d
ddZddddZdS )u  host/clipboard.py

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

주의:
- Tk clipboard 접근은 가능하면 Tk 메인 스레드에서 실행한다.
- 이미지/파일 클립보드는 아직 지원하지 않는다.
    )annotations)contextmanager)IteratorOptionalNreturnIterator[object]c               #  .  K   t           t          d          t          j                    } |                                  	 | V  	 |                                  d S # t
          $ r Y d S w xY w# 	 |                                  w # t
          $ r Y w w xY wxY w)Nu%   tkinter를 사용할 수 없습니다)tkRuntimeErrorTkwithdrawdestroy	Exception)roots    %D:\_St\RTC8790_8791\host\clipboard.py
_temp_rootr      s      	zBCCC577DMMOOO


	LLNNNNN 	 	 	DD		LLNNNN 	 	 	D	sB   A- A 
A*)A*-B/BB
BBBBi@ 	max_charsr   Optional[object]r   int
str | Nonec               V   t          dt          |                    }| 7t                      5 }t          ||          cddd           S # 1 swxY w Y   	 |                                 }t          |t                    st          |          }|d|         S # t          $ r Y dS w xY w)uc   텍스트 클립보드를 읽는다. 텍스트가 아니거나 비어 있으면 None일 수 있다.   Nr   )maxr   r   	read_textclipboard_get
isinstancestrr   )r   r   rtexts       r   r   r   '   s    As9~~&&I|\\ 	5QQ)444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5!!##$$$ 	t99DJYJ   tts$   AAAAB 
B('B(r    objectc                  | dnt          |           }|dt          dt          |                             }|8t                      5 }t	          |||          cddd           S # 1 swxY w Y   |                                 |                    |           	 |                                 n# t          $ r Y nw xY wt          |          S )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   ,BBCIIE*C3y>>***+E|\\ 	=QeQ)<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=%      u::s$   	A((A,/A,B2 2
B?>B?*   )limitr+   r   c                   | dnt          |           }|                    dd                              dd                                          }t          |          |k    r|d |         dz   S |pdS )Nr#    
u   …u   (빈 텍스트))r   replacestripr(   )r    r+   r)   s      r   preview_textr2   G   st    ,BBCIIEMM$$$,,T377==??E
5zzEVeV}u$$%%%    )r   r   )N)r   r   r   r   r   r   )r    r!   r   r   r   r   r   r   )r    r!   r+   r   r   r   )__doc__
__future__r   
contextlibr   typingr   r   tkinterr
   r   r   r   r$   r2    r3   r   <module>r:      s  	 	 # " " " " " % % % % % % % % % % % % % %   	BBB          PW      " 02 & & & & & & & &s    ''