ÿØÿà JFIF      ÿÛ „ 	 ( %!1!%)+//.383,7(-.+



-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ               ÿÄ J  	     ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ              ÿÄ *        !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍÑ¶¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     ÿØÿà JFIF      ÿÛ „ 	 ( %!1!%)+//.383,7(-.+



-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ               ÿÄ J  	     ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ              ÿÄ *        !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍÑ¶¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     U
    e5d                     @   sV   d Z ddlZddlZdd ZG dd dZedkrRdd	 ZeeZe	d
e
e dS )z:Simple textbox editing widget with Emacs-like keybindings.    Nc                 C   s   |  |d |tj|| d  | ||d tj|| d  | ||d tj|| d  |  |d |tj|| d  | ||tj | ||tj | ||tj | ||tj	 dS )z^Draw a rectangle with corners at the provided upper-left
    and lower-right coordinates.
       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.8/curses/textpad.py	rectangle   s    r
   c                   @   sL   e Zd 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 )Textboxad  Editing 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
    Fc                 C   s.   || _ || _|   d| _d | _|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  \}}|d | _|d | _d S r   )r   Zgetmaxyxmaxymaxx)r   r   r   r   r   r	   r   3   s    
zTextbox._update_max_yxc                 C   sX   |    | j}tj| j||tjjkr@t| j|d }qTn
|dkrJqT|d }q|S )zuGo to the location of the first blank on the given line,
        returning the index of the last non-blank character.r   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 \}}d }|| jk s.|| jk r| jr>| j }z| j| W n tj	k
rd   Y nX | jrtj
|szq|}| j \}}|d kr||f}q|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 \}}|| _tj|rJ|| jk s<|| jk rF| 	| n|tjj
krh| j|d n|tjjtjtjjtjfkr|dkr| j||d  nB|dkrn8| jr| j|d | |d  n| j|d | j |tjjtjfkrR| j  nL|tjjkr"| j  n0|tjjkrb| jrN| j|| | n| j|| j n|tjjtjfkr|| jk r| j||d  n || jkrn| j|d d n|tjjkrdS |tjjkr| jdkrdS || jk rR| j|d d nF|tjjkrZ|dkr@| |dkr@| j  n| j|| | j  n|tjjkrt| j  n|tjjtjfkr|| jk rR| j|d | || |d krR| j|d | |d  nz|tjj kr| j!  n`|tjj"tj#fkrR|dkrR| j|d | || |d krR| j|d | |d  dS )z!Process a single editing command.r   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refreshZ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}|    t| jd D ]}| j|d | |}|dkrF| jrFqt| jd D ]4}| jrj||krj q|tt	j

| j|| }qT| jdkr|d }q|S )z.Collect and return the contents of the window. 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<   | j  }|r||}|sq | |s(q4| j   q |  S )z2Edit in the widget window and collect the results.)r   Zgetchr#   r"   r*   )r   Zvalidater   r   r   r	   edit   s    

zTextbox.edit)F)N)__name__
__module____qualname____doc__r   r   r   r    r#   r*   r+   r   r   r   r	   r      s   
Ar   __main__c                 C   sf   d\}}d\}}|  |d |d t||||}t| |d |d || ||  |   t| S )N)	      )         zUse Ctrl-G to end editing.r   )Zaddstrr   Znewwinr
   r"   r   r+   )ZstdscrZncolsZnlinesr   r   r   r   r   r	   test_editbox   s     r6   zContents of text box:)r/   r   Zcurses.asciir
   r   r,   r6   wrapperstrprintreprr   r   r   r	   <module>   s    ,	
