ó
    F\hJ  ã                   óˆ   • S r SSKrSSKrS r " S S5      r\S:X  a%  S r\R                  " \5      r\	" S\
" \5      5        gg)	z:Simple textbox editing widget with Emacs-like keybindings.é    Nc                 óP  • U R                  US-   U[        R                  X1-
  S-
  5        U R                  XS-   [        R                  XB-
  S-
  5        U R                  X2S-   [        R                  XB-
  S-
  5        U R                  US-   U[        R                  X1-
  S-
  5        U R                  X[        R                  5        U R                  X[        R                  5        U R                  X4[        R                  5        U R                  X2[        R                  5        g)zVDraw 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.13/curses/textpad.pyÚ	rectangler      sØ   € ð ‡I�Iˆc�!‰e�Sœ&×*Ñ*¨C©I¸©MÔ:Ø‡I�Iˆc�q‘5œ&×*Ñ*¨C©I¸©MÔ:Ø‡I�Iˆc�q‘5œ&×*Ñ*¨C©I¸©MÔ:Ø‡I�Iˆc�!‰e�Sœ&×*Ñ*¨C©I¸©MÔ:Ø‡I�Iˆcœ×+Ñ+Ô,Ø‡I�Iˆcœ×+Ñ+Ô,Ø‡I�Iˆcœ×+Ñ+Ô,Ø‡I�Iˆcœ×+Ñ+Õ,ó    c                   óJ   • \ rS rSrSrSS jrS rS rS rS r	S r
SS
 jrSrg	)ÚTextboxé   a  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                 óz   • Xl         X l        U R                  5         SU l        S U l        UR                  S5        g ©Nr   )r   Úinsert_modeÚ_update_max_yxÚstripspacesÚlastcmdÚkeypad)Úselfr   r   s      r   Ú__init__ÚTextbox.__init__+   s3   € ØŒØ&ÔØ×ÑÔØˆÔØˆŒØ�
‰
�1�r   c                 ód   • U R                   R                  5       u  pUS-
  U l        US-
  U l        g r   )r   ÚgetmaxyxÚmaxyÚmaxx)r!   r&   r'   s      r   r   ÚTextbox._update_max_yx3   s,   € Ø—X‘X×&Ñ&Ó(‰
ˆØ˜1‘HˆŒ	Ø˜1‘Hˆ�	r   c                 ó<  • U R                  5         U R                  n [        R                  R                  U R                  R                  X5      5      [        R                  R                  :w  a  [        U R                  US-   5      n U$ US:X  a   U$ US-
  nM€  )zmGo 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_lineÚTextbox._end_of_line8   s‡   € ð 	×ÑÔØ�y‰yˆØÜ�|‰|×!Ñ! $§(¡(§-¡-°Ó"8Ó9¼V¿\¹\¿_¹_ÓLÜ˜4Ÿ9™9 d¨1¡fÓ-�Øð ˆð ˜“Øàˆð ˜!‘8ˆDñ r   c                 ó�  • U R                  5         U R                  R                  5       u  p#S nX R                  :  d  X0R                  :  aÃ  U R
                  (       a  U R                  R                  5       n U R                  R                  U5        U R
                  (       a$  [        R                  R                  W5      (       d  OFUnU R                  R                  5       u  p#Uc  X#4nX R                  :  a  M²  X0R                  :  a  MÃ  Ub  U R                  R                  " U6   g g ! [        R                   a     N°f = f©N)r   r   Úgetyxr&   r'   r   r+   r
   r   Úerrorr*   ÚisprintÚmove)r!   Úchr.   ÚxÚbackyxÚoldchs         r   Ú_insert_printable_charÚTextbox._insert_printable_charF   sð   € Ø×ÑÔØ—‘—‘Ó!‰ˆØˆØ—)‘)‹m˜q§9¡9›}Ø××ØŸ™Ÿ™›�ðØ—‘—‘˜rÔ"ð ×#×#¬6¯<©<×+?Ñ+?À×+FÑ+FØØˆBØ—X‘X—^‘^Ó%‰FˆQà‰~Ø˜�ð! —)‘)�m˜q§9¡9�}ð$ ÑØ�H‰H�MŠM˜6Ò"ð øô —<‘<ó Ùðús   Á9D. Ä.EÅEc                 ó\  • U R                  5         U R                  R                  5       u  p#Xl        [        R
                  R                  U5      (       a0  X R                  :  d  X0R                  :  a  U R                  U5        gU[        R
                  R                  :X  a  U R                  R                  US5        gU[        R
                  R                  [        R                  [        R
                  R                  [        R                  [        R
                  R                   4;   aú  US:”  a  U R                  R                  X#S-
  5        OsUS:X  a  OlU R"                  (       a2  U R                  R                  US-
  U R%                  US-
  5      5        O)U R                  R                  US-
  U R                  5        U[        R
                  R                  [        R                  [        R
                  R                   4;   a  U R                  R'                  5         gU[        R
                  R(                  :X  a  U R                  R'                  5         gU[        R
                  R*                  :X  ac  U R"                  (       a+  U R                  R                  X R%                  U5      5        gU R                  R                  X R                  5         gU[        R
                  R,                  [        R.                  4;   a`  X0R                  :  a  U R                  R                  X#S-   5        gX R                  :X  a   gU R                  R                  US-   S5         gU[        R
                  R0                  :X  a  gU[        R
                  R2                  :X  a@  U R                  S:X  a  gX R                  :  a  U R                  R                  US-   S5        gU[        R
                  R4                  :X  am  US:X  a0  U R%                  U5      S:X  a  U R                  R7                  5         gU R                  R                  X#5        U R                  R9                  5          gU[        R
                  R:                  :X  a  U R                  R=                  5         gU[        R
                  R>                  [        R@                  4;   aw  X R                  :  ag  U R                  R                  US-   U5        X0R%                  US-   5      :”  a1  U R                  R                  US-   U R%                  US-   5      5        gU[        R
                  RB                  :X  a  U R                  RE                  5         gU[        R
                  RF                  [        RH                  4;   am  US:”  ag  U R                  R                  US-
  U5        X0R%                  US-
  5      :”  a1  U R                  R                  US-
  U R%                  US-
  5      5        g)z!Process a single editing command.r   r   )%r   r   r4   r   r   r*   r6   r&   r'   r<   ÚSOHr7   ÚSTXÚKEY_LEFTÚBSÚKEY_BACKSPACEÚDELr   r0   ÚdelchÚEOTÚENQÚACKÚ	KEY_RIGHTÚBELÚNLÚVTÚdeletelnÚclrtoeolÚFFÚrefreshÚSOÚKEY_DOWNÚSIÚinsertlnÚDLEÚKEY_UP)r!   r8   r.   r9   s       r   Ú
do_commandÚTextbox.do_command_   sp  € à×ÑÔØ—‘—‘Ó!‰ˆØŒÜ�<‰<×Ñ ×#Ñ#Ø—9‘9‹} §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Ø—9‘9‹}Ø—‘—‘˜a 1¡Ô%ðB ðA —i‘i“Øð> ð; —‘—‘˜a ™c 1Õ%ð: ð9 ”6—<‘<×#Ñ#Ó#ØØ”6—<‘<—?‘?Ó"Ø�y‰y˜A‹~ØØ—Y‘Y“Ø—‘—‘˜a ™c 1Ô%ð, ð+ ”6—<‘<—?‘?Ó"Ø�A‹v˜$×+Ñ+¨AÓ.°!Ó3Ø—‘×!Ñ!Ô#ð& ð! —‘—‘˜aÔ#Ø—‘×!Ñ!Õ#ð ð ”6—<‘<—?‘?Ó"Ø�H‰H×ÑÔð ð ”F—L‘L—O‘O¤V§_¡_Ð5Ó5Ø—9‘9‹}Ø—‘—‘˜a ™c 1Ô%Ø×(Ñ(¨¨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Ô%Ø×(Ñ(¨¨1©Ó-Ó-Ø—H‘H—M‘M ! A¡# t×'8Ñ'8¸¸1¹Ó'=Ô>Ør   c                 ó  • SnU R                  5         [        U R                  S-   5       HÛ  nU R                  R	                  US5        U R                  U5      nUS:X  a  U R                  (       a  MI  [        U R                  S-   5       H_  nU R                  (       a  XC:”  a    OHU[        [        R                  R                  U R                  R                  X$5      5      5      -   nMa     U R                  S:”  d  MÖ  US-   nMÝ     U$ )z.Collect and return the contents of the window.Ú r   r   Ú
)r   Úranger&   r   r7   r0   r   r'   Úchrr   r*   r+   )r!   Úresultr.   Ústopr9   s        r   ÚgatherÚTextbox.gather£   sÍ   € àˆØ×ÑÔÜ�t—y‘y ‘{Ö#ˆAØ�H‰H�M‰M˜!˜QÔØ×$Ñ$ QÓ'ˆDØ�q‹y˜T×-×-ÙÜ˜4Ÿ9™9 Q™;Ö'�Ø×#×#¨«ÙØ¤#¤f§l¡l×&8Ñ&8¸¿¹¿¹ÀqÓ9LÓ&MÓ"NÑN’ñ (ð �y‰y˜1�}Ø $™’ñ $ð ˆr   Nc                 óî   •  U R                   R                  5       nU(       a  U" U5      nU(       d  M3  U R                  U5      (       d   U R	                  5       $ U R                   R                  5         Mu  )z2Edit in the widget window and collect the results.)r   ÚgetchrW   rP   r`   )r!   Úvalidater8   s      r   ÚeditÚTextbox.edit´   s\   € àØ—‘—‘Ó!ˆBÞÙ˜b“\�ÞÙØ—?‘? 2×&Ñ&Øà�{‰{‹}Ðð �H‰H×ÑÔñ r   )r   r   r'   r&   r   r   )Fr3   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r"   r   r0   r<   rW   r`   re   Ú__static_attributes__© r   r   r   r      s,   † ñô.òò
ò#ò2BòH÷"r   r   Ú__main__c                 óî   • Su  pSu  p4U R                  US-
  US5        [        R                  " X!X45      n[        XS-
  US-
  X2-   XA-   5        U R	                  5         [        U5      R                  5       $ )N)é	   é   )é   é   é   zUse Ctrl-G to end editing.r   )Úaddstrr   Únewwinr   rP   r   re   )ÚstdscrÚncolsÚnlinesr   r   r   s         r   Útest_editboxrz   Â   sl   € Ø‰ˆØ‰ˆØ�‰�c˜!‘e˜SÐ">Ô?Ü�mŠm˜F¨3Ó4ˆÜ�&˜a™%  Q¡¨©°c±kÔBØ�‰ÔÜ�s‹|× Ñ Ó"Ð"r   zContents of text box:)rk   r   Úcurses.asciir   r   rg   rz   ÚwrapperÚstrÚprintÚreprrm   r   r   Ú<module>r€      sS   ðÙ @ã Û ò-÷lñ lð\ ˆzÓò#ð �.Š.˜Ó
&€CÙ	Ð
!¡4¨£9Õ-ð r   