???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................3

  \é  ã               @   sR   d dl Z d dlZ dd„ ZG dd„ dƒZedkrNdd„ Ze jeƒZed	e	eƒƒ dS )
é    Nc             C   s¼   | j |d |tj|| d ƒ | j||d tj|| d ƒ | j||d tj|| d ƒ | j |d |tj|| d ƒ | j||tjƒ | j||tjƒ | j||tjƒ | j||tj	ƒ d S )Né   )
ZvlineÚcursesZ	ACS_VLINEZhlineZ	ACS_HLINEÚaddchZACS_ULCORNERZACS_URCORNERZACS_LRCORNERZACS_LLCORNER)ÚwinÚulyÚulxZlryZlrx© r   ú&/usr/lib64/python3.6/curses/textpad.pyÚ	rectangle   s    r
   c               @   sH   e Zd Zddd„Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Zddd„Z	dS )ÚTextboxFc             C   s.   || _ || _| jƒ  d| _d | _|jdƒ d S )Nr   )r   Úinsert_modeÚ_update_max_yxÚstripspacesÚlastcmdZkeypad)Úselfr   r   r   r   r	   Ú__init__+   s    zTextbox.__init__c             C   s&   | j jƒ \}}|d | _|d | _d S )Nr   )r   ZgetmaxyxÚmaxyÚmaxx)r   r   r   r   r   r	   r   3   s    
zTextbox._update_max_yxc             C   s\   | j ƒ  | j}xHtjj| jj||ƒƒtjjkrBt| j|d ƒ}P n
|dkrLP |d }qW |S )Nr   r   )r   r   r   Úasciir   ÚinchZSPÚmin)r   ÚyZlastr   r   r	   Ú_end_of_line8   s    zTextbox._end_of_linec             C   s¾   | j ƒ  | jjƒ \}}d }xŠ|| jk s0|| jk r¤| jr@| jjƒ }y| jj|ƒ W n tj	k
rf   Y nX | j s~tj
j|ƒ r€P |}| jjƒ \}}|d kr||f}qW |d k	rº| jj|Ž  d S )N)r   r   Úgetyxr   r   r   r   r   r   Úerrorr   ÚisprintÚmove)r   Úchr   ÚxZbackyxZoldchr   r   r	   Ú_insert_printable_charF   s$    
zTextbox._insert_printable_charc             C   sV  | j ƒ  | jjƒ \}}|| _tjj|ƒrJ|| jk s<|| jk rF| j	|ƒ n|tjj
krh| jj|dƒ nê|tjjtjtjjtjfkr|dkr¢| jj||d ƒ nB|dkr¬n8| jrÐ| jj|d | j|d ƒƒ n| jj|d | jƒ |tjjtjfkrR| jjƒ  nL|tjjkr"| jjƒ  n0|tjjkrb| jrN| jj|| j|ƒƒ n| jj|| jƒ nð|tjjtjfkrº|| jk r–| jj||d ƒ n || jkr¤n| jj|d dƒ n˜|tjjkrÌdS |tjjkr| jdkrêdS || jk rR| jj|d dƒ nF|tjjkrZ|dkr@| j|ƒdkr@| jjƒ  n| jj||ƒ | jjƒ  nø|tjjkrt| jjƒ  nÞ|tjjtjfkrØ|| jk rR| jj|d |ƒ || j|d ƒkrR| jj|d | j|d ƒƒ nz|tjj krò| jj!ƒ  n`|tjj"tj#fkrR|dkrR| jj|d |ƒ || j|d ƒkrR| jj|d | j|d ƒƒ dS )Nr   r   )$r   r   r   r   r   r   r   r   r   r   ZSOHr   ZSTXZKEY_LEFTZBSZKEY_BACKSPACEr   r   ZdelchZEOTZENQZACKZ	KEY_RIGHTZBELÚNLZVTZdeletelnZclrtoeolZFFÚrefreshÚSOZKEY_DOWNZSIZinsertlnZDLEZKEY_UP)r   r   r   r   r   r   r	   Ú
do_command_   sr    
zTextbox.do_commandc             C   s¨   d}| j ƒ  x–t| jd ƒD ]„}| jj|dƒ | j|ƒ}|dkrH| jrHqxDt| jd ƒD ]2}| jrl||krlP |tt	j
j
| jj||ƒƒƒ }qXW | jdkr|d }qW |S )NÚ r   r   Ú
)r   Úranger   r   r   r   r   r   Úchrr   r   r   )r   Úresultr   Ústopr   r   r   r	   Úgather    s    
"
zTextbox.gatherNc             C   s@   x6| j jƒ }|r||ƒ}|sq| j|ƒs*P | j jƒ  qW | jƒ S )N)r   Zgetchr#   r!   r*   )r   Zvalidater   r   r   r	   Úedit±   s    

zTextbox.edit)F)N)
Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r#   r*   r+   r   r   r   r	   r      s   
Ar   Ú__main__c             C   sf   d\}}d	\}}| j |d |dƒ tj||||ƒ}t| |d |d || || ƒ | jƒ  t|ƒjƒ S )
Né	   é   é   é   é   zUse Ctrl-G to end editing.r   )r0   r1   )r2   r3   )Zaddstrr   Znewwinr
   r!   r   r+   )ZstdscrZncolsZnlinesr   r   r   r   r   r	   Útest_editbox¿   s     r5   zContents of text box:)
r   Zcurses.asciir
   r   r,   r5   ÚwrapperÚstrÚprintÚreprr   r   r   r	   Ú<module>   s    ,	
