Your IP : 3.135.186.233


Current Path : /opt/alt/python310/lib64/python3.10/curses/__pycache__/
Upload File :
Current File : //opt/alt/python310/lib64/python3.10/curses/__pycache__/textpad.cpython-310.pyc

o

6��f��@sZdZddlZddlZdd�ZGdd�d�Zedkr+dd	�Ze�e�Ze	d
e
e��dSdS)z:Simple textbox editing widget with Emacs-like keybindings.�NcCs�|�|d|tj||d�|�||dtj||d�|�||dtj||d�|�|d|tj||d�|�||tj�|�||tj�|�||tj�|�||tj	�dS)z^Draw a rectangle with corners at the provided upper-left
    and lower-right coordinates.
    �N)
Zvline�cursesZ	ACS_VLINEZhlineZ	ACS_HLINE�addchZACS_ULCORNERZACS_URCORNERZACS_LRCORNERZACS_LLCORNER)�win�uly�ulxZlryZlrx�r�5/opt/alt/python310/lib64/python3.10/curses/textpad.py�	rectanglesr
c@sLeZdZdZddd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	ddd�Z
dS)�TextboxadEditing widget using the interior of a window object.
     Supports the following Emacs-like key bindings:

    Ctrl-A      Go to left edge of window.
    Ctrl-B      Cursor left, wrapping to previous line if appropriate.
    Ctrl-D      Delete character under cursor.
    Ctrl-E      Go to right edge (stripspaces off) or end of line (stripspaces on).
    Ctrl-F      Cursor right, wrapping to next line when appropriate.
    Ctrl-G      Terminate, returning the window contents.
    Ctrl-H      Delete character backward.
    Ctrl-J      Terminate if the window is 1 line, otherwise insert newline.
    Ctrl-K      If line is blank, delete it, otherwise clear to end of line.
    Ctrl-L      Refresh screen.
    Ctrl-N      Cursor down; move down one line.
    Ctrl-O      Insert a blank line at cursor location.
    Ctrl-P      Cursor up; move up one line.

    Move operations do nothing if the cursor is at an edge where the movement
    is not possible.  The following synonyms are supported where possible:

    KEY_LEFT = Ctrl-B, KEY_RIGHT = Ctrl-F, KEY_UP = Ctrl-P, KEY_DOWN = Ctrl-N
    KEY_BACKSPACE = Ctrl-h
    FcCs.||_||_|��d|_d|_|�d�dS�Nr)r�insert_mode�_update_max_yx�stripspaces�lastcmdZkeypad)�selfrr
rrr	�__init__+szTextbox.__init__cCs&|j��\}}|d|_|d|_dSr)rZgetmaxyx�maxy�maxx)rrrrrr	r3s
zTextbox._update_max_yxcCs\|��|j}	tj�|j�||��tjjkr"t|j|d�}	|S|dkr)	|S|d}q)zuGo to the location of the first blank on the given line,
        returning the index of the last non-blank character.Trr)rrr�asciir�inchZSP�min)r�yZlastrrr	�_end_of_line8s���zTextbox._end_of_linecCs�|��|j��\}}d}||jks||jkrW|jr|j��}z|j�|�Wn
tj	y1Ynw|jr;tj
�|�s<n|}|j��\}}|durM||f}||jks||jks|durc|jj|�dSdS�N)
rr�getyxrrr
rrr�errorr�isprint�move)r�chr�xZbackyxZoldchrrr	�_insert_printable_charFs*
���zTextbox._insert_printable_charcCsP|��|j��\}}||_tj�|�r%||jks||jkr#|�	|�dS|tjj
kr4|j�|d�dS|tjjtj
tjjtjfvr�|dkrP|j�||d�n!|dkrUn|jrg|j�|d|�|d��n
|j�|d|j�|tjjtjfvr|j��dS|tjjkr�|j��dS|tjjkr�|jr�|j�||�|��dS|j�||j�dS|tjjtjfvr�||jkr�|j�||d�dS||jkr�	dS|j�|dd�dS|tjjkr�dS|tjjkr�|jdkr�dS||jkr�|j�|dd�dS|tjjk�r'|dk�r|�|�dk�r|j��dS|j�||�|j��dS|tjjk�r5|j��dS|tjjtjfv�rh||jk�rf|j�|d|�||�|d�k�rf|j�|d|�|d��dS|tjj k�rv|j�!�dS|tjj"tj#fv�r�|dk�r�|j�|d|�||�|d�k�r�|j�|d|�|d��dS)z!Process a single editing command.rr)$rrrrrrrrrr!ZSOHrZSTXZKEY_LEFTZBSZ
KEY_BACKSPACErrZdelchZEOTZENQZACKZ	KEY_RIGHTZBEL�NLZVTZdeletelnZclrtoeolZFF�refreshZSOZKEY_DOWNZSIZinsertlnZDLEZKEY_UP)rrrr rrr	�
do_command_s�
8�6�
+�
)�&�$�
!
���

�
�
�

��
�
zTextbox.do_commandc
Cs�d}|��t|jd�D]A}|j�|d�|�|�}|dkr#|jr#q
t|jd�D]}|jr5||kr5n|tt	j
�
|j�||���}q*|jdkrN|d}q
|S)z.Collect and return the contents of the window.�rr�
)r�rangerrrrrr�chrrrr)r�resultr�stopr rrr	�gather�s
 
�zTextbox.gatherNcCs>	|j��}|r||�}|sq|�|�s	|��S|j��q)z2Edit in the widget window and collect the results.)rZgetchr$r#r+)rZvalidaterrrr	�edit�s


��zTextbox.edit)Fr)�__name__�
__module__�__qualname__�__doc__rrrr!r$r+r,rrrr	rs
Ar�__main__cCsfd\}}d\}}|�|d|d�t�||||�}t||d|d||||�|��t|���S)N)�	�)���zUse Ctrl-G to end editing.r)ZaddstrrZnewwinr
r#rr,)ZstdscrZncolsZnlinesrrrrrr	�test_editbox�s r7zContents of text box:)r0rZcurses.asciir
rr-r7�wrapper�str�print�reprrrrr	�<module>s
,
	�

?>