<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>

Yf                 @   s{   d  Z  d d l Z d d l Z d d   Z Gd d   d  Z e d k rw d d	   Z e j e  Z e	 d
 e
 e   d S)z:Simple textbox editing widget with Emacs-like keybindings.    Nc             C   s   |  j  | d | t j | | d  |  j | | d t j | | d  |  j | | d t j | | d  |  j  | d | t j | | d  |  j | | t j  |  j | | t j  |  j | | t j  |  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   3/opt/alt/python35/lib64/python3.5/curses/textpad.py	rectangle   s    %%%%r
   c               @   sp   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?   | |  _  | |  _ |  j   d |  _ d  |  _ | j 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   s3   |  j  j   \ } } | d |  _ | d |  _ d  S)Nr   )r   Zgetmaxyxmaxymaxx)r   r   r   r   r   r	   r   3   s    zTextbox._update_max_yxc             C   s|   |  j    |  j } xb t j j |  j j | |   t j j k r] t |  j | d  } Pn | d k rj P| d } q W| 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    |  j j   \ } } d  } x | |  j k  sF | |  j k  r |  j r^ |  j j   } y |  j j |  Wn t j	 k
 r Yn X|  j s t j
 j |  r P| } |  j j   \ } } | d  k r( | | f } q( W| 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   sW  |  j    |  j j   \ } } | |  _ t j j |  rh | |  j k  sX | |  j k  rS|  j	 |  n| t j j
 k r |  j j | d  n| t j j t j t j j t j f k rd| d k r |  j j | | d  nY | d k r nJ |  j r|  j j | d |  j | d   n |  j j | d |  j  | t j j t j f k rS|  j j   n| t j j k r|  j j   n| t j j k r|  j r|  j j | |  j |   qS|  j j | |  j  nz| t j j t j f k rI| |  j k  r|  j j | | d  qS| |  j k r/qS|  j j | d d  n
| t j j k r_d S| t j j k r|  j d k rd S| |  j k  rS|  j j | d d  n| t j j k r| d k r|  j |  d k r|  j j   qS|  j j | |  |  j j   n@| t j j k r5|  j j   n| t j j t j f k r| |  j k  rS|  j j | d |  | |  j | d  k rS|  j j | d |  j | d   n | t j j  k r|  j j!   n{ | t j j" t j# f k rS| d k rS|  j j | d |  | |  j | d  k rS|  j j | d |  j | 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refresh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 } |  j    x t |  j d  D] } |  j j | d  |  j |  } | d k rd |  j rd q$ x\ t |  j d  D]G } |  j r | | k r P| t t	 j
 j
 |  j j | |    } qx W|  j d k r$ | d } q$ W| 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   sX   xK |  j  j   } | r$ | |  } | s- q |  j |  s= P|  j  j   q W|  j   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)__name__
__module____qualname____doc__r   r   r   r   r#   r*   r+   r   r   r   r	   r      s   Ar   __main__c             C   s   d \ } } d	 \ } } |  j  | d | d  t j | | | |  } t |  | d | d | | | |  |  j   t |  j   S)
N	               zUse Ctrl-G to end editing.r   )r1   r2   )r3   r4   )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   	