§
    (¶Õié  ã                   óš   — d Z ddlZddlZd„ Z G d„ d¦  «        Zedk    r*d„ Z ej        e¦  «        Z e	d e
e¦  «        ¦  «         dS dS )	z:Simple textbox editing widget with Emacs-like keybindings.é    Nc                 óf  — |                       |dz   |t          j        ||z
  dz
  ¦  «         |                      ||dz   t          j        ||z
  dz
  ¦  «         |                      ||dz   t          j        ||z
  dz
  ¦  «         |                       |dz   |t          j        ||z
  dz
  ¦  «         |                      ||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)
ÚvlineÚcursesÚ	ACS_VLINEÚhlineÚ	ACS_HLINEÚaddchÚACS_ULCORNERÚACS_URCORNERÚACS_LRCORNERÚACS_LLCORNER)ÚwinÚulyÚulxÚlryÚlrxs        ú%/usr/lib/python3.11/curses/textpad.pyÚ	rectangler      s
  € ð ‡I‚Iˆc�!‰e�S�&Ô*¨C°#©I¸©MÑ:Ô:Ð:Ø‡I‚Iˆc�3�q‘5�&Ô*¨C°#©I¸©MÑ:Ô:Ð:Ø‡I‚Iˆc�3�q‘5�&Ô*¨C°#©I¸©MÑ:Ô:Ð:Ø‡I‚Iˆc�!‰e�S�&Ô*¨C°#©I¸©MÑ:Ô:Ð:Ø‡I‚Iˆc�3�Ô+Ñ,Ô,Ð,Ø‡I‚Iˆc�3�Ô+Ñ,Ô,Ð,Ø‡I‚Iˆc�3�Ô+Ñ,Ô,Ð,Ø‡I‚Iˆc�3�Ô+Ñ,Ô,Ð,Ð,Ð,ó    c                   ó@   — e Zd ZdZdd„Zd„ Zd„ Zd„ Zd„ Zd„ Z	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                 ó�   — || _         || _        |                      ¦   «          d| _        d | _        |                     d¦  «         d S ©Nr   )r   Úinsert_modeÚ_update_max_yxÚstripspacesÚlastcmdÚkeypad)Úselfr   r   s      r   Ú__init__zTextbox.__init__+   sE   € ØˆŒØ&ˆÔØ×ÒÑÔÐØˆÔØˆŒØ�
Š
�1‰Œˆˆˆr   c                 óf   — | j                              ¦   «         \  }}|dz
  | _        |dz
  | _        d S r   )r   ÚgetmaxyxÚmaxyÚmaxx)r    r$   r%   s      r   r   zTextbox._update_max_yx3   s3   € Ø”X×&Ò&Ñ(Ô(‰
ˆˆdØ˜1‘HˆŒ	Ø˜1‘HˆŒ	ˆ	ˆ	r   c                 ó   — |                       ¦   «          | j        }	 t          j                             | j                             ||¦  «        ¦  «        t          j        j        k    rt          | j        |dz   ¦  «        }n|dk    rn|dz
  }Œq|S )zuGo to the location of the first blank on the given line,
        returning the index of the last non-blank character.Tr   r   )r   r%   r   Úasciir   ÚinchÚSPÚmin)r    ÚyÚlasts      r   Ú_end_of_linezTextbox._end_of_line8   sŠ   € ð 	×ÒÑÔÐØŒyˆð	ÝŒ|×!Ò! $¤(§-¢-°°4Ñ"8Ô"8Ñ9Ô9½V¼\¼_ÒLÐLÝ˜4œ9 d¨1¡fÑ-Ô-�ØØ˜’�ØØ˜!‘8ˆDð	ð ˆr   c                 ó   — |                       ¦   «          | j                             ¦   «         \  }}d }|| j        k     s|| j        k     r²| j        r| j                             ¦   «         }	 | j                             |¦  «         n# t          j	        $ r Y nw xY w| j        rt          j
                             |¦  «        sn:|}| j                             ¦   «         \  }}|€||f}|| j        k     °§|| j        k     °²|� | j        j        |Ž  d S d S ©N)r   r   Úgetyxr$   r%   r   r(   r
   r   Úerrorr'   ÚisprintÚmove)r    Úchr+   ÚxÚbackyxÚoldchs         r   Ú_insert_printable_charzTextbox._insert_printable_charF   s&  € Ø×ÒÑÔÐØ”—’Ñ!Ô!‰ˆˆAØˆØ�$”)Šmˆm˜q 4¤9š}˜}ØÔð (ØœŸš™œ�ðØ”—’˜rÑ"Ô"Ð"Ð"øÝ”<ð ð ð Ø�ðøøøàÔ#ð ­6¬<×+?Ò+?ÀÑ+FÔ+Fð ØØˆBØ”X—^’^Ñ%Ô%‰FˆQ�àˆ~Ø˜A˜�ð! �$”)Šmˆm˜q 4¤9š}˜}ð$ ÐØˆDŒHŒM˜6Ð"Ð"Ð"Ð"ð Ðs   Á*B ÂBÂBc                 ó€
  — |                       ¦   «          | j                             ¦   «         \  }}|| _        t          j                             |¦  «        r-|| j        k     s|| j        k     r|  	                    |¦  «         �nº|t          j        j
        k    r| j                             |d¦  «         �nˆ|t          j        j        t          j        t          j        j        t          j        fv rÅ|dk    r| j                             ||dz
  ¦  «         nf|dk    rn_| j        r5| j                             |dz
  |                      |dz
  ¦  «        ¦  «         n#| j                             |dz
  | j        ¦  «         |t          j        j        t          j        fv r| j                             ¦   «          �n‰|t          j        j        k    r| j                             ¦   «          �nY|t          j        j        k    rY| j        r0| j                             ||                      |¦  «        ¦  «         �n| j                             || j        ¦  «         �në|t          j        j        t          j        fv rX|| j        k     r | j                             ||dz   ¦  «         �n¡|| j        k    r�n”| j                             |dz   d¦  «         �nt|t          j        j        k    rdS |t          j        j        k    r8| j        dk    rdS || j        k     r| j                             |dz   d¦  «         �n|t          j        j        k    rp|dk    r4|                      |¦  «        dk    r| j                             ¦   «          �nÁ| j                             ||¦  «         | j                             ¦   «          �n‹|t          j        j        k    r| j                             ¦   «          �n[|t          j        j        t          j        fv rz|| j        k     rn| j                             |dz   |¦  «         ||                      |dz   ¦  «        k    r4| j                             |dz   |                      |dz   ¦  «        ¦  «         nÂ|t          j        j         k    r| j         !                    ¦   «          n“|t          j        j"        t          j#        fv rt|dk    rn| j                             |dz
  |¦  «         ||                      |dz
  ¦  «        k    r4| j                             |dz
  |                      |dz
  ¦  «        ¦  «         dS )z!Process a single editing command.r   r   )$r   r   r0   r   r   r'   r2   r$   r%   r8   ÚSOHr3   ÚSTXÚKEY_LEFTÚBSÚKEY_BACKSPACEr   r-   ÚdelchÚEOTÚENQÚACKÚ	KEY_RIGHTÚBELÚNLÚVTÚdeletelnÚclrtoeolÚFFÚrefreshÚSOÚKEY_DOWNÚSIÚinsertlnÚDLEÚKEY_UP)r    r4   r+   r5   s       r   Ú
do_commandzTextbox.do_command_   s…  € à×ÒÑÔÐØ”—’Ñ!Ô!‰ˆˆAØˆŒÝŒ<×Ò Ñ#Ô#ð 9	?Ø�4”9Š}ˆ}  D¤I¢ Ø×+Ò+¨BÑ/Ô/Ð/ùØ•6”<Ô#Ò#Ð#ØŒH�MŠM˜!˜QÑÔÐÑØ•F”LÔ$¥V¤_µf´l´oÅfÔFZÐ[Ð[Ð[Ø�1ŠuˆuØ”—’˜a  1¡Ñ%Ô%Ð%Ð%Ø�a’�ØØÔ!ð .Ø”—’˜a ™c 4×#4Ò#4°Q°q±SÑ#9Ô#9Ñ:Ô:Ð:Ð:à”—’˜a ™c 4¤9Ñ-Ô-Ð-Ø•f”l”o¥vÔ';Ð<Ð<Ð<Ø”—’Ñ Ô Ð ùØ•6”<Ô#Ò#Ð#ØŒH�NŠNÑÔÐÑØ•6”<Ô#Ò#Ð#ØÔð ,Ø”—’˜a ×!2Ò!2°1Ñ!5Ô!5Ñ6Ô6Ð6Ñ6à”—’˜a ¤Ñ+Ô+Ð+Ñ+Ø•F”LÔ$¥fÔ&6Ð7Ð7Ð7Ø�4”9Š}ˆ}Ø”—’˜a  1¡Ñ%Ô%Ð%Ñ%Ø�d”i’�Ùà”—’˜a ™c 1Ñ%Ô%Ð%Ñ%Ø•6”<Ô#Ò#Ð#Ø�1Ø•6”<”?Ò"Ð"ØŒy˜AŠ~ˆ~Ø�qØ�T”Y’�Ø”—’˜a ™c 1Ñ%Ô%Ð%ùØ•6”<”?Ò"Ð"Ø�AŠvˆv˜$×+Ò+¨AÑ.Ô.°!Ò3Ð3Ø”×!Ò!Ñ#Ô#Ð#Ñ#ð ”—’˜a Ñ#Ô#Ð#Ø”×!Ò!Ñ#Ô#Ð#Ñ#Ø•6”<”?Ò"Ð"ØŒH×ÒÑÔÐÑØ•F”L”O¥V¤_Ð5Ð5Ð5Ø�4”9Š}ˆ}Ø”—’˜a ™c 1Ñ%Ô%Ð%Ø�t×(Ò(¨¨1©Ñ-Ô-Ò-Ð-Ø”H—M’M ! A¡# t×'8Ò'8¸¸1¹Ñ'=Ô'=Ñ>Ô>Ð>øØ•6”<”?Ò"Ð"ØŒH×ÒÑÔÐÐØ•F”LÔ$¥f¤mÐ4Ð4Ð4Ø�1ŠuˆuØ”—’˜a ™c 1Ñ%Ô%Ð%Ø�t×(Ò(¨¨1©Ñ-Ô-Ò-Ð-Ø”H—M’M ! A¡# t×'8Ò'8¸¸1¹Ñ'=Ô'=Ñ>Ô>Ð>Øˆqr   c                 óä  — d}|                       ¦   «          t          | j        dz   ¦  «        D ]Á}| j                             |d¦  «         |                      |¦  «        }|dk    r| j        rŒ@t          | j        dz   ¦  «        D ]Y}| j        r||k    r nI|t          t          j
         
                    | j                             ||¦  «        ¦  «        ¦  «        z   }ŒZ| j        dk    r|dz   }ŒÂ|S )z.Collect and return the contents of the window.Ú r   r   ú
)r   Úranger$   r   r3   r-   r   r%   Úchrr   r'   r(   )r    Úresultr+   Ústopr5   s        r   ÚgatherzTextbox.gather    s÷   € àˆØ×ÒÑÔÐÝ�t”y ‘{Ñ#Ô#ð 
	'ð 
	'ˆAØŒH�MŠM˜!˜QÑÔÐØ×$Ò$ QÑ'Ô'ˆDØ�qŠyˆy˜TÔ-ˆyØÝ˜4œ9 Q™;Ñ'Ô'ð Oð O�ØÔ#ð ¨¨Dª¨Ø�EØ¥#¥f¤l×&8Ò&8¸¼¿ºÀqÈ!Ñ9LÔ9LÑ&MÔ&MÑ"NÔ"NÑN��ØŒy˜1Š}ˆ}Ø $™�øØˆr   Nc                 óÞ   — 	 | j                              ¦   «         }|r ||¦  «        }|sŒ*|                      |¦  «        sn| j                              ¦   «          ŒY|                      ¦   «         S )z2Edit in the widget window and collect the results.)r   ÚgetchrQ   rJ   rY   )r    Úvalidater4   s      r   ÚeditzTextbox.edit±   sx   € ð	Ø”—’Ñ!Ô!ˆBØð "Ø�X˜b‘\”\�Øð ØØ—?’? 2Ñ&Ô&ð ØØŒH×ÒÑÔÐð	ð �{Š{‰}Œ}Ðr   )Fr/   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r!   r   r-   r8   rQ   rY   r]   © r   r   r   r      s’   € € € € € ðð ð.ð ð ð ðð ð ð
ð ð ð#ð #ð #ð2?ð ?ð ?ðBð ð ð"ð ð ð ð ð r   r   Ú__main__c                 ó   — d\  }}d\  }}|                       |dz
  |d¦  «         t          j        ||||¦  «        }t          | |dz
  |dz
  ||z   ||z   ¦  «         |                      ¦   «          t          |¦  «                             ¦   «         S )N)é	   é   )é   é   é   zUse Ctrl-G to end editing.r   )Úaddstrr   Únewwinr   rJ   r   r]   )ÚstdscrÚncolsÚnlinesr   r   r   s         r   Útest_editboxro   ¿   s’   € Ø‰ˆˆvØ‰ˆˆSØ�Š�c˜!‘e˜SÐ">Ñ?Ô?Ð?ÝŒm˜F E¨3°Ñ4Ô4ˆÝ�&˜#˜a™%  Q¡¨¨f©°c¸E±kÑBÔBÐBØ�ŠÑÔÐÝ�s‰|Œ|× Ò Ñ"Ô"Ð"r   zContents of text box:)ra   r   Úcurses.asciir   r   r^   ro   ÚwrapperÚstrÚprintÚreprrb   r   r   ú<module>ru      s¸   ðØ @Ð @à €€€Ø Ð Ð Ð ð-ð -ð -ðið ið ið ið iñ iô ið iðV ˆzÒÐð#ð #ð #ð ˆ&Œ.˜Ñ
&Ô
&€CØ	€EÐ
! 4 4¨¡9¤9Ñ-Ô-Ð-Ð-Ð-ð Ðr   