
    tniF                     4    d Z ddlZddlZ G d d          ZdS )z(Unified input handler for all platforms.    Nc                      e Zd ZdZej        dk    rdZdZdZdZ	dZ
dZd	Zd
ZdZdZdZndZdZdZdZ	dZdZ
d	ZdZdZdZdZd Zedefd            Zededefd            ZdedefdZd#dZd#dZdeddfdZd#dZd#d Zd!eddfd"ZdS )$TextInputHandlerz6Input handler with platform-specific key code support.win32u   àPu   àHu   àKu   àMu   àS	z z Sz[Bz[Az[Dz[Cz[3~z[ZNc                 "    d| _         d| _        d S )N r   text_cursor_indexselfs    X/var/www/html/gpu-tools/venv/lib/python3.11/site-packages/rich_toolkit/_input_handler.py__init__zTextInputHandler.__init__*   s    	    returnc                 P    |                      | j        d| j                           S )z*Visual cursor position in display columns.N)_get_text_widthr   r   r   s    r   cursor_leftzTextInputHandler.cursor_left.   s(     ##DI.B0B.B$CDDDr   charc                 B    | sdS t          j        |           }|dv rdS dS )zIGet the display width of a character (1 for normal, 2 for CJK/fullwidth).r   )FW      )unicodedataeast_asian_width)r   r   s     r   _get_char_widthz TextInputHandler._get_char_width3   s;      	1 '7==z))1 qr   r   c                 :     t           fd|D                       S )z-Get the total display width of a text string.c              3   B   K   | ]}                     |          V  d S )N)r    ).0r   r   s     r   	<genexpr>z3TextInputHandler._get_text_width.<locals>.<genexpr>D   s1      ??$4''--??????r   )sum)r   r   s   ` r   r   z TextInputHandler._get_text_widthB   s&    ????$??????r   c                 @    t          d| j        dz
            | _        d S )Nr   r   )maxr   r   s    r   _move_cursor_leftz"TextInputHandler._move_cursor_leftF   s"     D$6$:;;r   c                 d    t          t          | j                  | j        dz             | _        d S Nr   )minlenr   r   r   s    r   _move_cursor_rightz#TextInputHandler._move_cursor_rightI   s*     TY1Ca1GHHr   c                     | j         d | j                 |z   | j         | j        d          z   | _         | xj        dz  c_        d S r*   r   )r   r   s     r   _insert_charzTextInputHandler._insert_charL   sR    I***+d2TYt?Q?S?S5TT 		 	ar   c                     | j         dk    rdS | j        d| j         dz
           | j        | j         d         z   | _        | xj         dz  c_         dS )z+Delete character before cursor (backspace).r   Nr   )r   r   r   s    r   _delete_charzTextInputHandler._delete_charR   sg    ""F I.*Q../$)D<N<P<P2QQ 		 	ar   c                     | j         t          | j                  k    rdS | j        d| j                  | j        | j         dz   d         z   | _        dS )z(Delete character at cursor (delete key).Nr   )r   r,   r   r   s    r   _delete_forwardz TextInputHandler._delete_forward\   sW    TY//F I***+di8JQ8N8P8P.QQ 				r   keyc                    || j         k    s| j        r!|| j        k    r|                                  d S || j        k    s| j        r!|| j        k    r|                                  d S || j        k    r|                                  d S || j        k    r| 	                                 d S || j
        | j        | j        | j        | j        fv rd S t          j        dk    r|r|d         dv rd S |D ]}|                     |           d S )Nr   r   )    à)BACKSPACE_KEYALT_BACKSPACEr1   
DELETE_KEY
ALT_DELETEr3   LEFT_KEYr(   	RIGHT_KEYr-   UP_KEYDOWN_KEY	ENTER_KEYSHIFT_TAB_KEYTAB_KEYsysplatformr/   )r   r4   r   s      r   
handle_keyzTextInputHandler.handle_keye   sP   $$$$ %#&$*<#<#<DO###C4?<R<R  """""DM!!""$$$$$DN""##%%%%%KMNL
 
 
 D |w&&3&3q6=M3M3M  ( (!!$''''( (r   )r   N)__name__
__module____qualname____doc__rC   rD   r?   r>   r<   r=   r:   r8   rB   rA   r@   r9   r;   r   propertyintr   staticmethodstrr    r   r(   r-   r/   r1   r3   rE    r   r   r   r      s       @@ |w	
"	 

 	
 	 
   ES E E E XE c c    \@C @C @ @ @ @< < < <I I I I                  
 
 
 
(c (d ( ( ( ( ( (r   r   )rI   rC   r   r   rN   r   r   <module>rO      s\    . . 



    }( }( }( }( }( }( }( }( }( }(r   