o
    ˷e/                     @   s  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
mZmZmZmZmZmZmZmZmZ d dlmZmZmZmZ d dlmZmZmZmZ d dlmZ d d	l m!Z! d d
l"m#Z# d dl$m%Z%m&Z&m'Z' d dl(m)Z)m*Z*m+Z+m,Z,m-Z- d dl.m/Z/ d dl0m1Z1 d dl2m3Z3 d dl4m5Z5 g dZ6eZ7G dd de'Z8G dd dZ9G dd dZ:G dd dZ;G dd de-Z<G dd dZ=G dd dZ>d S )!    )AnyOptional)get_app)Buffer)SYSTEM_BUFFER)
	ConditionFilterOrBool
emacs_modehas_arghas_completions	has_focushas_validation_error	to_filtervi_modevi_navigation_mode)AnyFormattedTextStyleAndTextTuplesfragment_list_lento_formatted_text)ConditionalKeyBindingsKeyBindingsKeyBindingsBasemerge_key_bindings)KeyPressEvent)	InputMode)Keys)ConditionalContainer	ContainerWindow)BufferControlFormattedTextControlSearchBufferControl	UIContent	UIControl)	Dimension)BeforeInput)SimpleLexer)SearchDirection)
ArgToolbarCompletionsToolbarFormattedTextToolbarSearchToolbarSystemToolbarValidationToolbarc                	       s0   e Zd Zd	dedededdf fddZ  ZS )
r*    textstylekwreturnNc                    s*   t  jt|fi ||dtddd d S )NT   )min)r0   dont_extend_heightheight)super__init__r    r$   )selfr/   r0   r1   	__class__ V/var/www/ideatree/venv/lib/python3.10/site-packages/prompt_toolkit/widgets/toolbars.pyr8   ;   s   
zFormattedTextToolbar.__init__)r.   )__name__
__module____qualname__r   strr   r8   __classcell__r<   r<   r:   r=   r*   :   s    (r*   c                   @   sV   e Zd ZdZ		ddededdfdd	Zdefd
dZde	fddZ
defddZdS )r,   z^
    Toolbar for a system prompt.

    :param prompt: Prompt to be displayed to the user.
    Shell command: Tpromptenable_global_bindingsr2   Nc                    s   | _ t| _ttd _   _t jt	ddt
 fddddg jd _t jddd	 _t jt jd
 _d S )N)nameclass:system-toolbar.textr0   c                      s    j S N)rD   r<   r9   r<   r=   <lambda>^   s    z(SystemToolbar.__init__.<locals>.<lambda>class:system-toolbar)bufferlexerinput_processorskey_bindingsr3   r6   r0   contentfilter)rD   r   rE   r   r   system_buffer_build_key_bindings	_bindingsr   r&   r%   buffer_controlr   windowr   r   	container)r9   rD   rE   r<   rJ   r=   r8   M   s"   

	zSystemToolbar.__init__c                 C   s   dd| j jfdgS )N)rL   rC   rG   )r.   
)rU   r/   rJ   r<   r<   r=   _get_display_before_textk   s   
z&SystemToolbar._get_display_before_textc                    sX  t  j}t }|j}|d|d|d|d|d|ddtdd f fdd}|d	|ddtdd f fd
d}t }|j}|d|d|d|ddtdd f fdd}|d	|ddtdd f fdd}t }	|	j}|tjd| t@ dddtdd f fdd}
|d| t@ t	@ dddtdd f fdd}t
t|tt|tt|	 jgS )Nescape)rT   zc-gzc-ceventr2   c                    s    j   | jj  dS zHide system prompt.N)rU   resetapplayout
focus_lastr^   rJ   r<   r=   _cancely   s   
z2SystemToolbar._build_key_bindings.<locals>._cancelenterc                    s>   | j j jj  dI dH   jjdd | j j  dS zRun system command.)display_before_textNT)append_to_history)ra   run_system_commandrU   r/   r\   r`   rb   rc   rd   rJ   r<   r=   _accept   s   z2SystemToolbar._build_key_bindings.<locals>._acceptc                    s&   t j| jj_ j  | jj  dS r_   )	r   
NAVIGATIONra   vi_state
input_moderU   r`   rb   rc   rd   rJ   r<   r=   
_cancel_vi   s   
z5SystemToolbar._build_key_bindings.<locals>._cancel_vic                    sJ   t j| jj_| jj jj  dI dH   jj	dd | jj
  dS rg   )r   rl   ra   rm   rn   rj   rU   r/   r\   r`   rb   rc   rd   rJ   r<   r=   
_accept_vi   s   z5SystemToolbar._build_key_bindings.<locals>._accept_vi!T)rT   	is_globalc                    s   | j j j dS )z#M-'!' will focus this user control.N)ra   rb   focusrY   rd   rJ   r<   r=   	_focus_me   s   z4SystemToolbar._build_key_bindings.<locals>._focus_mec                    s    t j| jj_| jj j dS )zFocus.N)r   INSERTra   rm   rn   rb   rs   rY   rd   rJ   r<   r=   _focus_me_vi   s   z7SystemToolbar._build_key_bindings.<locals>._focus_me_vi)r   rU   r   addEr   Escaper	   r   r   r   r   rE   )r9   focusedemacs_bindingshandlere   rk   vi_bindingsro   rp   global_bindingsrt   rv   r<   rJ   r=   rV   r   s8   









z!SystemToolbar._build_key_bindingsc                 C      | j S rI   rZ   rJ   r<   r<   r=   __pt_container__      zSystemToolbar.__pt_container__)rC   T)r>   r?   r@   __doc__r   r   r8   r   r\   r   rV   r   r   r<   r<   r<   r=   r,   F   s    
Hr,   c                   @   $   e Zd ZdddZdefddZdS )r(   r2   Nc                 C   s4   dt fdd}tt|dd| _t| jtd| _d S )Nr2   c                  S   s&   t  jjpd} | dkrd} dd| fgS )Nr.   -z-1)zclass:arg-toolbarzRepeat: zclass:arg-toolbar.text)r   key_processorarg)r   r<   r<   r=   get_formatted_text   s   z/ArgToolbar.__init__.<locals>.get_formatted_textr3   r6   rR   )r   r   r    rY   r   r
   rZ   )r9   r   r<   r<   r=   r8      s   
zArgToolbar.__init__c                 C   r   rI   r   rJ   r<   r<   r=   r      r   zArgToolbar.__pt_container__r2   Nr>   r?   r@   r8   r   r   r<   r<   r<   r=   r(      s    
r(   c                   @   sV   e Zd ZdZ						ddee ded	ed
edededdfddZ	de
fddZdS )r+   zs
    :param vi_mode: Display '/' and '?' instead of I-search.
    :param ignore_case: Search case insensitive.
    NFr.   
I-search: I-search backward: search_bufferr   text_if_not_searchingforward_search_promptbackward_search_promptignore_caser2   c                    s   |d u rt  }tdtffdddtf fdd}|_t|t|ddgtdd|d	_t	t
jd
ddd_d S )Nr2   c                      s    j t jjv S rI   )controlr   rb   search_linksr<   rJ   r<   r=   is_searching   s   z,SearchToolbar.__init__.<locals>.is_searchingc                      s2    sS j jjtjkrrdS  S rdS S )N?/)r   searcher_search_state	directionr'   BACKWARDr<   r   r   r   r9   r   r   r<   r=   get_before_input   s
   z0SearchToolbar.__init__.<locals>.get_before_inputzclass:search-toolbar.promptrH   zclass:search-toolbar.text)rM   rO   rN   r   r3   zclass:search-toolbarrQ   rR   )r   r   boolr   r   r!   r%   r&   r   r   r   rZ   )r9   r   r   r   r   r   r   r   r<   r   r=   r8      s"   


	zSearchToolbar.__init__c                 C   r   rI   r   rJ   r<   r<   r=   r     r   zSearchToolbar.__pt_container__)NFr.   r   r   F)r>   r?   r@   r   r   r   r   r   r   r8   r   r   r<   r<   r<   r=   r+      s0    
+r+   c                   @   s"   e Zd ZdededefddZdS )_CompletionsToolbarControlwidthr6   r2   c                    sH  g  t  jj}|r|j}|j}|d }d}d}g }	t|D ]3\}
}t|	t|j |kr;|
|p0dkr7g }	d}nd} n|		t
|j|
|krFdndd |	d q|	d	d
|t|	  f |	d | }	 d  d|rpdnd
f  d  	|	  d  d|rdnd
f  d dtdtf fdd}t|ddS )N   Fr   Tz+class:completion-toolbar.completion.currentz#class:completion-toolbar.completionrH   )r.    r.   r   zclass:completion-toolbar.arrow<>ir2   c                    s    S rI   r<   )r   all_fragmentsr<   r=   get_lineE  s   z;_CompletionsToolbarControl.create_content.<locals>.get_liner3   )r   
line_count)r   current_buffercomplete_statecompletionscomplete_index	enumerater   lendisplay_textextendr   appendintr   r"   )r9   r   r6   r   r   indexcontent_widthcut_left	cut_right	fragmentsr   cr   r<   r   r=   create_content  sP   






z)_CompletionsToolbarControl.create_contentN)r>   r?   r@   r   r"   r   r<   r<   r<   r=   r     s    r   c                   @   r   )r)   r2   Nc                 C   s   t tt dddtd| _d S )Nr3   zclass:completion-toolbarrQ   rR   )r   r   r   r   rZ   rJ   r<   r<   r=   r8   L  s   zCompletionsToolbar.__init__c                 C   r   rI   r   rJ   r<   r<   r=   r   T  r   z#CompletionsToolbar.__pt_container__r   r   r<   r<   r<   r=   r)   K  s    
r)   c                   @   s.   e Zd Zd	deddfddZdefddZdS )
r-   Fshow_positionr2   Nc                    s8   dt f fdd}t|| _tt| jddtd| _d S )Nr2   c                     sX   t  j} | jr*| j| jj\}} r!d| jj|d |d }n| jj}d|fgS g S )Nz{} (line={} column={})r3   zclass:validation-toolbar)r   r   validation_errordocumenttranslate_index_to_positioncursor_positionformatmessage)buffrowcolumnr/   r   r<   r=   r   Z  s   
z6ValidationToolbar.__init__.<locals>.get_formatted_textr3   r   rR   )r   r    r   r   r   r   rZ   )r9   r   r   r<   r   r=   r8   Y  s
   
zValidationToolbar.__init__c                 C   r   rI   r   rJ   r<   r<   r=   r   u  r   z"ValidationToolbar.__pt_container__)F)r>   r?   r@   r   r8   r   r   r<   r<   r<   r=   r-   X  s    r-   N)?typingr   r   "prompt_toolkit.application.currentr   prompt_toolkit.bufferr   prompt_toolkit.enumsr   prompt_toolkit.filtersr   r   r	   r
   r   r   r   r   r   r   prompt_toolkit.formatted_textr   r   r   r   'prompt_toolkit.key_binding.key_bindingsr   r   r   r   (prompt_toolkit.key_binding.key_processorr   #prompt_toolkit.key_binding.vi_stater   prompt_toolkit.keysr    prompt_toolkit.layout.containersr   r   r   prompt_toolkit.layout.controlsr   r    r!   r"   r#   prompt_toolkit.layout.dimensionr$    prompt_toolkit.layout.processorsr%   prompt_toolkit.lexersr&   prompt_toolkit.searchr'   __all__rx   r*   r,   r(   r+   r   r)   r-   r<   r<   r<   r=   <module>   s2    0	x5D