o
    Zh/                     @  s  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	 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/m0Z0 d dl1m2Z2 d dl3m4Z4 d dl5m6Z6 g dZ7e Z8G dd de(Z9G dd dZ:G 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 )"    )annotations)Any)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                      s    e Zd Zdd fd
dZ  ZS )r*    textr   stylestrkwr   returnNonec                   s*   t  jt|fi ||dtddd d S )NT   )min)r0   Zdont_extend_heightheight)super__init__r    r$   )selfr/   r0   r2   	__class__ V/var/www/html/lang_env/lib/python3.10/site-packages/prompt_toolkit/widgets/toolbars.pyr9   =   s   
zFormattedTextToolbar.__init__)r.   )r/   r   r0   r1   r2   r   r3   r4   )__name__
__module____qualname__r9   __classcell__r=   r=   r;   r>   r*   <   s    r*   c                   @  s>   e Zd ZdZ		ddd
dZdddZdddZdddZdS )r,   z^
    Toolbar for a system prompt.

    :param prompt: Prompt to be displayed to the user.
    Shell command: Tpromptr   enable_global_bindingsr   r3   r4   c                   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=   r:   r=   r>   <lambda>_   s    z(SystemToolbar.__init__.<locals>.<lambda>class:system-toolbar)bufferlexerinput_processorsZkey_bindingsr5   r7   r0   contentfilter)rD   r   rE   r   r   system_buffer_build_key_bindingsZ	_bindingsr   r&   r%   Zbuffer_controlr   windowr   r   	container)r:   rD   rE   r=   rJ   r>   r9   O   s"   

	zSystemToolbar.__init__r   c                 C  s   dd| j jfdgS )N)rL   rC   rG   )r.   
)rT   r/   rJ   r=   r=   r>   _get_display_before_textl   s   
z&SystemToolbar._get_display_before_textr   c                   s(  t  j}t }|j}|d|d|d|d|d|dd fd	d
}|d|dd fdd}t }|j}|d|d|d|dd fdd}|d|dd fdd}t }	|	j}|tjd| t@ ddd fdd}
|d| t@ t@ ddd fdd}t	t
|tt
|tt
|	 jgS )Nescape)rS   zc-gzc-ceventEr3   r4   c                   s    j   | jj  dS zHide system prompt.N)rT   resetapplayout
focus_lastr[   rJ   r=   r>   _cancelz   s   
z2SystemToolbar._build_key_bindings.<locals>._cancelZenterc                   s>   | j j jj  dI dH   jjdd | j j  dS zRun system command.)Zdisplay_before_textNT)Zappend_to_history)r_   run_system_commandrT   r/   rY   r^   r`   ra   rb   rJ   r=   r>   _accept   s   z2SystemToolbar._build_key_bindings.<locals>._acceptc                   s&   t j| jj_ j  | jj  dS r]   )	r   
NAVIGATIONr_   vi_state
input_moderT   r^   r`   ra   rb   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 rd   )r   rg   r_   rh   ri   re   rT   r/   rY   r^   r`   ra   rb   rJ   r=   r>   
_accept_vi   s   z5SystemToolbar._build_key_bindings.<locals>._accept_vi!T)rS   	is_globalc                   s   | j j j dS )z#M-'!' will focus this user control.N)r_   r`   focusrV   rb   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   ZINSERTr_   rh   ri   r`   rn   rV   rb   rJ   r=   r>   _focus_me_vi   s   z7SystemToolbar._build_key_bindings.<locals>._focus_me_vi)r[   r\   r3   r4   )r   rT   r   addr   Escaper	   r   r   r   r   rE   )r:   ZfocusedZemacs_bindingshandlerc   rf   Zvi_bindingsrj   rk   Zglobal_bindingsro   rp   r=   rJ   r>   rU   s   s8   









z!SystemToolbar._build_key_bindingsr   c                 C     | j S rI   rW   rJ   r=   r=   r>   __pt_container__      zSystemToolbar.__pt_container__N)rC   T)rD   r   rE   r   r3   r4   r3   r   )r3   r   r3   r   )r?   r@   rA   __doc__r9   rY   rU   rv   r=   r=   r=   r>   r,   H   s    

Hr,   c                   @      e Zd Zd	ddZd
ddZdS )r(   r3   r4   c                 C  s0   ddd}t t|dd| _t| jtd| _d S )	Nr3   r   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   Zkey_processorarg)r}   r=   r=   r>   get_formatted_text   s   z/ArgToolbar.__init__.<locals>.get_formatted_textr5   r7   rQ   rx   )r   r    rV   r   r
   rW   )r:   r~   r=   r=   r>   r9      s   

zArgToolbar.__init__r   c                 C  rt   rI   ru   rJ   r=   r=   r>   rv      rw   zArgToolbar.__pt_container__Nr3   r4   ry   r?   r@   rA   r9   rv   r=   r=   r=   r>   r(      s    
r(   c                   @  s2   e Zd ZdZ						ddddZd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_bufferBuffer | Noner   booltext_if_not_searchingr   forward_search_promptbackward_search_promptignore_caser   r3   r4   c                   s~   |d u rt  }tdfddd fdd}|_t|t|dd	gtd
d	|d_ttjdddd_	d S )Nr3   r   c                     s    j t jjv S rI   )controlr   r`   Zsearch_linksr=   rJ   r=   r>   is_searching   s   z,SearchToolbar.__init__.<locals>.is_searchingr   c                     s2    sS j jjtjkrrdS  S rdS S )N?/)r   Zsearcher_search_state	directionr'   ZBACKWARDr=   r   r   r   r:   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   r5   zclass:search-toolbarrP   rQ   )r3   r   )r3   r   )
r   r   r   r!   r%   r&   r   r   r   rW   )r:   r   r   r   r   r   r   r   r=   r   r>   r9      s"   	

	zSearchToolbar.__init__r   c                 C  rt   rI   ru   rJ   r=   r=   r>   rv     rw   zSearchToolbar.__pt_container__)NFr.   r   r   F)r   r   r   r   r   r   r   r   r   r   r   r   r3   r4   ry   )r?   r@   rA   rz   r9   rv   r=   r=   r=   r>   r+      s    *r+   c                   @  s   e Zd Zd	ddZdS )
_CompletionsToolbarControlwidthintr7   r3   r"   c                   s@  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 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<>ir   r3   r   c                   s    S rI   r=   )r   Zall_fragmentsr=   r>   get_lineE  s   z;_CompletionsToolbarControl.create_content.<locals>.get_liner5   )r   
line_count)r   r   r3   r   )r   current_buffercomplete_statecompletionsZcomplete_index	enumerater   lenZdisplay_textextendr   appendr"   )r:   r   r7   r   r   indexZcontent_widthZcut_leftZ	cut_right	fragmentsr   cr   r=   r   r>   create_content  sP   






z)_CompletionsToolbarControl.create_contentN)r   r   r7   r   r3   r"   )r?   r@   rA   r   r=   r=   r=   r>   r     s    r   c                   @  r{   )r)   r3   r4   c                 C  s   t tt dddtd| _d S )Nr5   zclass:completion-toolbarrP   rQ   )r   r   r   r   rW   rJ   r=   r=   r>   r9   L  s   zCompletionsToolbar.__init__r   c                 C  rt   rI   ru   rJ   r=   r=   r>   rv   T  rw   z#CompletionsToolbar.__pt_container__Nr   ry   r   r=   r=   r=   r>   r)   K  s    
r)   c                   @  s"   e Zd ZddddZdd	d
ZdS )r-   Fshow_positionr   r3   r4   c                   s4   d fdd}t || _tt| jddtd| _d S )	Nr3   r   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={})r5   zclass:validation-toolbar)r   r   Zvalidation_errorZdocumentZtranslate_index_to_positionZcursor_positionformatmessage)Zbuffrowcolumnr/   r   r=   r>   r~   Z  s   
z6ValidationToolbar.__init__.<locals>.get_formatted_textr5   r   rQ   rx   )r    r   r   r   r   rW   )r:   r   r~   r=   r   r>   r9   Y  s
   
zValidationToolbar.__init__r   c                 C  rt   rI   ru   rJ   r=   r=   r>   rv   u  rw   z"ValidationToolbar.__pt_container__N)F)r   r   r3   r4   ry   r   r=   r=   r=   r>   r-   X  s    r-   N)@
__future__r   typingr   Z"prompt_toolkit.application.currentr   Zprompt_toolkit.bufferr   Zprompt_toolkit.enumsr   Zprompt_toolkit.filtersr   r   r	   r
   r   r   r   r   r   r   Zprompt_toolkit.formatted_textr   r   r   r   Z'prompt_toolkit.key_binding.key_bindingsr   r   r   r   Z(prompt_toolkit.key_binding.key_processorr   Z#prompt_toolkit.key_binding.vi_stater   Zprompt_toolkit.keysr   Z prompt_toolkit.layout.containersr   r   r   Zprompt_toolkit.layout.controlsr   r    r!   r"   r#   Zprompt_toolkit.layout.dimensionr$   Z prompt_toolkit.layout.processorsr%   Zprompt_toolkit.lexersr&   Zprompt_toolkit.searchr'   __all__r\   r*   r,   r(   r+   r   r)   r-   r=   r=   r=   r>   <module>   s4    0	w4D