
    tni_                        d dl mZ d dlmZmZmZmZmZmZ d dl	m
Z
mZ d dlmZ d dlmZ ddlmZ ddlmZ dd	lmZ erdd
lmZ  G d de          ZdS )    )annotations)TYPE_CHECKINGAnyDictListOptionalTuple)ControlControlType)
LiveRender)Segment   )getchar)TextInputHandler)Element)	BaseStylec                       e Zd Z	 	 dd  fdZd!d"d
Zed#d            Zd$dZd%dZed&d            Z	d%dZ
d&dZd'dZd'dZd(dZd)dZd)dZd Z xZS )*	ContainerNstyleOptional[BaseStyle]metadataOptional[Dict[Any, Any]]c                    g | _         d| _        d| _        t          d          | _        t                                          ||           | j        j        | _        d S )Nr    )r   r   )	elementsactive_element_indexprevious_element_indexr   _live_rendersuper__init__r   console)selfr   r   	__class__s      S/var/www/html/gpu-tools/venv/lib/python3.11/site-packages/rich_toolkit/container.pyr    zContainer.__init__   sW    
 (*$%!&'#&rNNux888z)    Fdoneboolc                   | j                             | |          }| j                            |           | j        | j                 }t          |d          r|j        nd}|rd} | j        j	        t          j        |          g|                                 | j        R   |s# | j        j	        |                                   d S d S )Nr&   should_show_cursorFT)r   render_elementr   set_renderabler   r   hasattrr*   r!   printr
   show_cursormove_cursor_at_beginningmove_cursor_to_active_element)r"   r&   contentactive_elementr*   s        r$   _refreshzContainer._refresh!   s   *++Dt+<<((111t'@A ~';<<N-- 	  	&!% 233	
**,,	
 	
 	
 	
 	
  	DL3355   	 	r%   returnr   c                &    | j         | j                 S N)r   r   r"   s    r$   _active_elementzContainer._active_element<   s    }T677r%   elementTuple[int, int]c                    | j                             |d|           }| j                            || j        j        d          }t          j        |          S )NF)r&   parent)pad)r   r+   r!   render_linesoptionsr   	get_shape)r"   r:   
renderableliness       r$   	_get_sizezContainer._get_size@   sQ    Z..wU4.PP
))*dl6JPU)VV '''r%   element_indexintc                    d}t          |dz             D ]Z}| j        |         }||k    r%|| j                            ||           j        z  }:|                     |          }||d         z  }[|S )Nr   r   r=   )ranger   r   get_cursor_offset_for_elementtoprD   )r"   rE   positionicurrent_elementsizes         r$   _get_element_positionzContainer._get_element_positionG   s    }q()) 		$ 		$A"mA.OM!!DJDD#D E   ~~o66DG#r%   c                6    |                      | j                  S r7   )rP   r   r8   s    r$   _active_element_positionz"Container._active_element_positionW   s    ))$*CDDDr%   c                p    | j         j        dS |                     |          }| j         j        \  }}||z
  S Nr   )r   _shaperP   )r"   rE   rL   _heights        r$   get_offset_for_elementz Container.get_offset_for_element[   s@    #+1--m<<%,	6  r%   c                6    |                      | j                  S r7   )rX   r   r8   s    r$   get_offset_for_active_elementz'Container.get_offset_for_active_elemente   s    **4+DEEEr%   Tuple[Control, ...]c                    |                                  }|dk    rt          t          j        |f          fnd}| j                            | j        |           j        }t          j        |          g|R S )Nr    rH   )	rZ   r
   r   	CURSOR_UPr   rJ   r9   leftmove_to_column)r"   move_upmove_cursorcursor_lefts       r$   r1   z'Container.move_cursor_to_active_elementh   s    4466 =DaKKWk+W56688R 	 j>>  ? 
 

 	 &{33BkBBBr%   c                    | j         j        t                      fS | j                                         f}|                     | j                  }|dk    r|S t          t          j        |f          g|R S rT   )r   rU   r
   position_cursorrX   r   r   CURSOR_DOWN)r"   original	move_downs      r$   r0   z"Container.move_cursor_at_beginningu   s    #+II<%55779 //0KLL	>>O ()4 
 	
 
 	
r%   c                    ddl m} ddlm} | j        | j                 }t          |||f          r|                                 |j        du rdS dS )Nr   )Input)MenuFT)	inputrj   menurk   r   r   
isinstanceon_validatevalid)r"   rj   rk   r3   s       r$   handle_enter_keyzContainer.handle_enter_key   su          t'@Anudm44 	&&(((#u,,utr%   Nonec                    | xj         dz  c_         | j         t          | j                  k    rd| _         | j        j        du r|                                  d S d S Nr   r   F)r   lenr   r9   	focusable_focus_nextr8   s    r$   rw   zContainer._focus_next   sg    !!Q&!!$DM(:(:::()D%)U22 32r%   c                    | xj         dz  c_         | j         dk     rt          | j                  dz
  | _         | j        j        du r|                                  d S d S rt   )r   ru   r   r9   rv   _focus_previousr8   s    r$   ry   zContainer._focus_previous   sl    !!Q&!!$q(((+DM(:(:Q(>D%)U22  """"" 32r%   c                   |                                   	 	 t                      }| j        | _        |t          j        t          j        fv rgt          | j        d          r| j        	                                 |t          j        k    r| 
                                 n|                                  | j        | j                 }|                    |           |t          j        k    r|                                 rni|                                   nR# t           $ rE | j        D ]}|                                 |                      d           t%                       Y nw xY wQ|                      d           d S )NTon_blurr)   )r4   r   r   r   r   SHIFT_TAB_KEYTAB_KEYr-   r9   r{   ry   rw   r   
handle_key	ENTER_KEYrq   KeyboardInterrupt	on_cancelexit)r"   keyr3   r:   s       r$   runzContainer.run   s   	ii.2.G++9;K;STTTt3Y?? 7,44666.<<<,,....((***!%t/H!I))#...*444,,.. $   #} ( (G%%''''4(((1	> 	4     s   C&D >D AE"!E")NN)r   r   r   r   )F)r&   r'   )r5   r   )r:   r   r5   r;   )rE   rF   r5   rF   )r5   rF   )r5   r[   )r5   r'   )r5   rr   )__name__
__module____qualname__r    r4   propertyr9   rD   rP   rR   rX   rZ   r1   r0   rq   rw   ry   r   __classcell__)r#   s   @r$   r   r      sr        &*-1* * * * * * *    6 8 8 8 X8( ( ( (     E E E XE! ! ! !F F F FC C C C
 
 
 
&      # # # #"! "! "! "! "! "! "!r%   r   N)
__future__r   typingr   r   r   r   r   r	   rich.controlr
   r   rich.live_renderr   rich.segmentr   _getcharr   _input_handlerr   r:   r   stylesr   r   r]   r%   r$   <module>r      s   " " " " " " B B B B B B B B B B B B B B B B - - - - - - - - ' ' ' ' ' '                   , , , , , ,       "!!!!!!x! x! x! x! x! x! x! x! x! x!r%   