Ë
    òT•jJ  ã                   ó†   — 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«      «       yy)	z:Simple textbox editing widget with Emacs-like keybindings.é    Nc                 ód  — | j                  |dz   |t        j                  ||z
  dz
  «       | j                  ||dz   t        j                  ||z
  dz
  «       | j                  ||dz   t        j                  ||z
  dz
  «       | j                  |dz   |t        j                  ||z
  dz
  «       | j                  ||t        j                  «       | j                  ||t        j                  «       | j                  ||t        j                  «       | j                  ||t        j                  «       y)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.12/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
y)Ú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
    c                 ó~   — || _         || _        | j                  «        d| _        d | _        |j                  d«       y ©Nr   )r   Úinsert_modeÚ_update_max_yxÚstripspacesÚlastcmdÚkeypad)Úselfr   r   s      r   Ú__init__zTextbox.__init__+   s7   € ØˆŒØ&ˆÔØ×ÑÔØˆÔØˆŒØ�
‰
�1�r   c                 óf   — | j                   j                  «       \  }}|dz
  | _        |dz
  | _        y r   )r   ÚgetmaxyxÚmaxyÚmaxx)r    r$   r%   s      r   r   zTextbox._update_max_yx3   s.   € Ø—X‘X×&Ñ&Ó(‰
ˆˆdØ˜1‘HˆŒ	Ø˜1‘Hˆ�	r   c                 ó8  — | j                  «        | j                  }	 t        j                  j                  | j                  j                  ||«      «      t        j                  j                  k7  rt        | j                  |dz   «      }	 |S |dk(  r	 |S |dz
  }Œ~)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   ÚinchÚSPÚmin)r    ÚyÚlasts      r   Ú_end_of_linezTextbox._end_of_line8   s‰   € ð 	×ÑÔØ�y‰yˆØÜ�|‰|×!Ñ! $§(¡(§-¡-°°4Ó"8Ó9¼V¿\¹\¿_¹_ÒLÜ˜4Ÿ9™9 d¨1¡fÓ-�Øð ˆð ˜’Øàˆð ˜!‘8ˆDð r   c                 ón  — | j                  «        | j                  j                  «       \  }}d }|| j                  k  s|| j                  k  r³| j
                  r| j                  j                  «       }	 | j                  j                  |«       | j
                  rt        j                  j                  «      snE|}| j                  j                  «       \  }}|€||f}|| j                  k  rŒ£|| j                  k  rŒ³|� | j                  j                  |Ž  y y # t        j                  $ r Y Œ£w xY w©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˜q 4§9¡9š}Ø×ÒØŸ™Ÿ™›�ðØ—‘—‘˜rÔ"ð ×#Ò#¬6¯<©<×+?Ñ+?ÀÔ+FØØˆBØ—X‘X—^‘^Ó%‰FˆQ�àˆ~Ø˜A˜�ð! �$—)‘)‹m˜q 4§9¡9›}ð$ ÐØˆD�H‰H�M‰M˜6Ò"ð øô —<‘<ò Ùðús   Á5D ÄD4Ä3D4c                 ó  — | j                  «        | j                  j                  «       \  }}|| _        t        j
                  j                  |«      r0|| j                  k  s|| j                  k  r| j                  |«       y|t        j
                  j                  k(  r| j                  j                  |d«       y|t        j
                  j                  t        j                  t        j
                  j                  t        j                  t        j
                  j                   fv rò|dkD  r | j                  j                  ||dz
  «       nm|dk(  rng| j"                  r2| j                  j                  |dz
  | j%                  |dz
  «      «       n)| j                  j                  |dz
  | j                  «       |t        j
                  j                  t        j                  t        j
                  j                   fv r| j                  j'                  «        y|t        j
                  j(                  k(  r| j                  j'                  «        y|t        j
                  j*                  k(  r_| j"                  r,| j                  j                  || j%                  |«      «       y| j                  j                  || j                  «       y|t        j
                  j,                  t        j.                  fv r`|| j                  k  r | j                  j                  ||dz   «       y|| j                  k(  r	 y| j                  j                  |dz   d«       y|t        j
                  j0                  k(  ry|t        j
                  j2                  k(  r?| j                  dk(  ry|| j                  k  r| j                  j                  |dz   d«       y|t        j
                  j4                  k(  rk|dk(  r/| j%                  |«      dk(  r| j                  j7                  «        y| j                  j                  ||«       | j                  j9                  «        y|t        j
                  j:                  k(  r| j                  j=                  «        y|t        j
                  j>                  t        j@                  fv rw|| j                  k  rg| j                  j                  |dz   |«       || j%                  |dz   «      kD  r1| j                  j                  |dz   | j%                  |dz   «      «       y|t        j
                  jB                  k(  r| j                  jE                  «        y|t        j
                  jF                  t        jH                  fv rl|dkD  rg| j                  j                  |dz
  |«       || j%                  |dz
  «      kD  r1| j                  j                  |dz
  | j%                  |dz
  «      «       y)z!Process a single editing command.r   r   )%r   r   r0   r   r   r'   r2   r$   r%   r8   ÚSOHr3   ÚSTXÚKEY_LEFTÚBSÚKEY_BACKSPACEÚDELr   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ØˆŒÜ�<‰<×Ñ Ô#Ø�4—9‘9Š}  D§I¡I¢Ø×+Ñ+¨BÔ/ðv ðu ”6—<‘<×#Ñ#Ò#Ø�H‰H�M‰M˜!˜QÔðr ðq ”F—L‘L×$Ñ$¤V§_¡_Ü—L‘L—O‘OÜ×(Ñ(Ü—L‘L×$Ñ$ð&ñ &ð �1ŠuØ—‘—‘˜a  1¡Õ%Ø�a’ØØ×!Ò!Ø—‘—‘˜a ™c 4×#4Ñ#4°Q°q±SÓ#9Õ:à—‘—‘˜a ™c 4§9¡9Ô-Ø”f—l‘l—o‘o¤v×';Ñ';¼V¿\¹\×=MÑ=MÐNÑNØ—‘—‘Ô ðV ðU ”6—<‘<×#Ñ#Ò#Ø�H‰H�N‰NÔðR ðQ ”6—<‘<×#Ñ#Ò#Ø×ÒØ—‘—‘˜a ×!2Ñ!2°1Ó!5Ô6ðL ðI —‘—‘˜a §¡Ô+ðH ðG ”F—L‘L×$Ñ$¤f×&6Ñ&6Ð7Ñ7Ø�4—9‘9Š}Ø—‘—‘˜a  1¡Ô%ðB ðA �d—i‘i’Øð> ð; —‘—‘˜a ™c 1Ô%ð: ð9 ”6—<‘<×#Ñ#Ò#ØØ”6—<‘<—?‘?Ò"Ø�y‰y˜AŠ~ØØ�T—Y‘Y’Ø—‘—‘˜a ™c 1Ô%ð, ð+ ”6—<‘<—?‘?Ò"Ø�AŠv˜$×+Ñ+¨AÓ.°!Ò3Ø—‘×!Ñ!Ô#ð& ð! —‘—‘˜a Ô#Ø—‘×!Ñ!Ô#ð ð ”6—<‘<—?‘?Ò"Ø�H‰H×ÑÔð ð ”F—L‘L—O‘O¤V§_¡_Ð5Ñ5Ø�4—9‘9Š}Ø—‘—‘˜a ™c 1Ô%Ø�t×(Ñ(¨¨1©Ó-Ò-Ø—H‘H—M‘M ! A¡# t×'8Ñ'8¸¸1¹Ó'=Ô>ð ð ”6—<‘<—?‘?Ò"Ø�H‰H×ÑÔð ð ”F—L‘L×$Ñ$¤f§m¡mÐ4Ñ4Ø�1ŠuØ—‘—‘˜a ™c 1Ô%Ø�t×(Ñ(¨¨1©Ó-Ò-Ø—H‘H—M‘M ! A¡# t×'8Ñ'8¸¸1¹Ó'=Ô>Ør   c                 óö  — d}| j                  «        t        | j                  dz   «      D ]Ë  }| j                  j	                  |d«       | j                  |«      }|dk(  r| j                  rŒBt        | j                  dz   «      D ]Z  }| j                  r||kD  r nG|t        t        j                  j                  | j                  j                  ||«      «      «      z   }Œ\ | j                  dkD  sŒÇ|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‘y ‘{Ó#ò 
	'ˆAØ�H‰H�M‰M˜!˜QÔØ×$Ñ$ QÓ'ˆDØ�qŠy˜T×-Ò-ØÜ˜4Ÿ9™9 Q™;Ó'ò O�Ø×#Ò#¨¨DªÙØ¤#¤f§l¡l×&8Ñ&8¸¿¹¿¹ÀqÈ!Ó9LÓ&MÓ"NÑN‘ðOð �y‰y˜1‹}Ø $™‘ð
	'ð ˆr   Nc                 óÌ   — 	 | j                   j                  «       }|r ||«      }|sŒ(| j                  |«      s	 | j	                  «       S | j                   j                  «        Œd)z2Edit in the widget window and collect the results.)r   ÚgetchrR   rK   rZ   )r    Úvalidater4   s      r   ÚeditzTextbox.edit´   sY   € àØ—‘—‘Ó!ˆBÙÙ˜b“\�ÙØØ—?‘? 2Ô&Øà�{‰{‹}Ðð �H‰H×ÑÔð r   )Fr/   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r!   r   r-   r8   rR   rZ   r^   © r   r   r   r      s,   „ ñó.òò
ò#ò2BòHô"r   r   Ú__main__c                 óú   — d\  }}d\  }}| j                  |dz
  |d«       t        j                  ||||«      }t        | |dz
  |dz
  ||z   ||z   «       | j	                  «        t        |«      j                  «       S )N)é	   é   )é   é   é   zUse Ctrl-G to end editing.r   )Úaddstrr   Únewwinr   rK   r   r^   )ÚstdscrÚncolsÚnlinesr   r   r   s         r   Útest_editboxrp   Â   sz   € Ø‰ˆˆvØ‰ˆˆSØ�‰�c˜!‘e˜SÐ">Ô?Ü�m‰m˜F E¨3°Ó4ˆÜ�&˜#˜a™%  Q¡¨¨f©°c¸E±kÔBØ�‰ÔÜ�s‹|× Ñ Ó"Ð"r   zContents of text box:)rb   r   Úcurses.asciir   r   r_   rp   ÚwrapperÚstrÚprintÚreprrc   r   r   ú<module>rv      sU   ðÙ @ã Û ò-÷lñ lð\ ˆzÒò#ð ˆ&�.‰.˜Ó
&€CÙ	Ð
!¡4¨£9Õ-ð r   