Ë c‡½jJ ã ó† — d Z ddlZddlZd„ Z G d„ d« Zedk( r%d„ Z ej e« Z e d e e« « yy) z:Simple textbox editing widget with Emacs-like keybindings.é Nc ód — | j |dz |t j ||z dz « | j ||dz t j ||z dz « | j ||dz t j ||z dz « | j |dz |t j ||z dz « | 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/lib64/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 Zd ZdZd d„Zd„ Zd„ Zd„ Zd„ Zd„ Z dd „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__zTextbox.__init__+ s7 € ؈ŒØ&ˆÔØ×ÑÔØˆÔ؈ŒØ� ‰ �1� r c óf — | j j « \ }}|dz | _ |dz | _ y r )r ÚgetmaxyxÚmaxyÚmaxx)r r$ r% s r r zTextbox._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 rt | j |dz « } |S |dk( r |S |dz }Œ~)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_linezTextbox._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 rt j j « snE|}| j j « \ }}|€||f}|| j k rŒ£|| j k rŒ³|� | j j |Ž y y # t j $ r Y Œ£w xY w©N) r r Úgetyxr$ r% r r( r r Úerrorr' ÚisprintÚmove)r Úchr+ ÚxÚbackyxÚoldchs r Ú_insert_printable_charzTextbox._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 Á5D ÄD4Ä3D4c ó — | 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 fv rò|dkD r | j j ||dz « nm|dk( rng| j" r2| j j |dz | j% |dz « « n)| j j |dz | j « |t j j t j t j j fv 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. fv r`|| j k r | j j ||dz « y|| j k( r y| j j |dz d« y|t j j0 k( ry|t j j2 k( r?| j dk( ry|| j k r| j j |dz d« y|t j j4 k( rk|dk( r/| j% |« dk( r| j j7 « y| j j ||« | j j9 « y|t j j: k( r| j j= « y|t j j> t j@ fv rw|| j k rg| j j |dz |« || j% |dz « kD r1| j j |dz | j% |dz « « y|t j jB k( r| j jE « y|t j jF t jH fv rl|dkD rg| j j |dz |« || j% |dz « kD r1| j j |dz | j% |dz « « 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_commandzTextbox.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×$Ñ$ð&ñ