U
    ouf/                     @  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 ddddddg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dddd fddZ  ZS )
r*    r   strr   None)textstylekwreturnc                   s&   t  jt|f||dtddd d S )NT   )min)r2   Zdont_extend_heightheight)super__init__r    r$   )selfr1   r2   r3   	__class__ C/tmp/pip-unpacked-wheel-8milen2s/prompt_toolkit/widgets/toolbars.pyr9   =   s    
zFormattedTextToolbar.__init__)r.   )__name__
__module____qualname__r9   __classcell__r=   r=   r;   r>   r*   <   s   c                   @  sN   e Zd ZdZddddddd	Zd
dddZddddZddddZdS )r,   z^
    Toolbar for a system prompt.

    :param prompt: Prompt to be displayed to the user.
    Shell command: Tr   r   r0   )promptenable_global_bindingsr4   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r2   c                     s    j S N)rD   r=   r:   r=   r>   <lambda>_       z(SystemToolbar.__init__.<locals>.<lambda>class:system-toolbar)bufferlexerinput_processorsZkey_bindingsr5   r7   r2   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   r4   c                 C  s   dd| j jfdgS )N)rM   rC   rG   )r.   
)rU   r1   rJ   r=   r=   r>   _get_display_before_textl   s    
z&SystemToolbar._get_display_before_textr   c                   sL  t  j}t }|j}|d|d|d|d|d|dddd fdd	}|d
|dddd fdd}t }|j}|d|d|d|dddd fdd}|d
|dddd fdd}t }	|	j}|tjd| t@ ddddd fdd}
|d| t@ t@ ddddd fdd}t	t
|tt
|tt
|	 jgS )Nescape)rT   zc-gzc-cEr0   )eventr4   c                   s    j   | jj  dS zHide system prompt.N)rU   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)ra   run_system_commandrU   r1   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                   sH   t j| jj_| jj jj  dI dH   jj	dd | jj
  dS rf   )r   ri   ra   rj   rk   rg   rU   r1   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   focusrW   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   ZINSERTra   rj   rk   rb   rp   rW   rd   rJ   r=   r>   _focus_me_vi   s    z7SystemToolbar._build_key_bindings.<locals>._focus_me_vi)r   rU   r   addr   ZEscaper	   r   r   r   r   rE   )r:   ZfocusedZemacs_bindingshandlere   rh   Zvi_bindingsrl   rm   Zglobal_bindingsrq   rr   r=   rJ   r>   rV   s   s8    









z!SystemToolbar._build_key_bindingsr   c                 C  s   | j S rI   rX   rJ   r=   r=   r>   __pt_container__   s    zSystemToolbar.__pt_container__N)rC   T)r?   r@   rA   __doc__r9   r[   rV   rv   r=   r=   r=   r>   r,   H   s     Hc                   @  s(   e Zd ZddddZddddZdS )	r(   r0   rY   c                 C  s4   dddd}t t|dd| _t| jtd| _d S )Nr   rY   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)ry   r=   r=   r>   get_formatted_text   s    z/ArgToolbar.__init__.<locals>.get_formatted_textr5   r7   rR   )r   r    rW   r   r
   rX   )r:   rz   r=   r=   r>   r9      s    
zArgToolbar.__init__r   c                 C  s   | j S rI   ru   rJ   r=   r=   r>   rv      s    zArgToolbar.__pt_container__Nr?   r@   rA   r9   rv   r=   r=   r=   r>   r(      s   c                	   @  s:   e Zd ZdZdddd	d	d	d
ddddZd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: zBuffer | Noneboolr   r   r0   )search_bufferr   text_if_not_searchingforward_search_promptbackward_search_promptignore_caser4   c                   s   |d krt  }tddfdddd fdd}|_t|t|dd	gtd
d	|d_ttjdddd_	d S )Nr   rY   c                     s    j t jjkS rI   )controlr   rb   Zsearch_linksr=   rJ   r=   r>   is_searching   s    z,SearchToolbar.__init__.<locals>.is_searchingr   c                     s6    s
S j jjtjkr&r"dS  S r.dS S d 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)rN   rP   rO   r   r5   zclass:search-toolbarrQ   rR   )
r   r   r   r!   r%   r&   r   r   r   rX   )r:   r   r   r   r   r   r   r   r=   r   r>   r9      s"    	

	zSearchToolbar.__init__r   rY   c                 C  s   | j S rI   ru   rJ   r=   r=   r>   rv     s    zSearchToolbar.__pt_container__)NFr.   r}   r~   F)r?   r@   rA   rw   r9   rv   r=   r=   r=   r>   r+      s         *c                   @  s   e Zd ZddddddZdS )_CompletionsToolbarControlintr"   )widthr7   r4   c                   sJ  g  t  jj}|r*|j}|j}|d }d}d}g }	t|D ]f\}
}t|	t|j |krx|
|pbdkrpg }	d}nd} q|		t
|j|
|krdndd |	d q<|	d	d
|t|	  f |	d | }	 d  d|rdnd
f  d  	|	  d  d|rdnd
f  d d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<>r   r   )ir4   c                   s    S rI   r=   )r   Zall_fragmentsr=   r>   get_lineE  s    z;_CompletionsToolbarControl.create_content.<locals>.get_liner5   )r   
line_count)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_rightZ	fragmentsr   cr   r=   r   r>   create_content  sP    






z)_CompletionsToolbarControl.create_contentN)r?   r@   rA   r   r=   r=   r=   r>   r     s   r   c                   @  s(   e Zd ZddddZddddZdS )	r)   r0   rY   c                 C  s   t tt dddtd| _d S )Nr5   zclass:completion-toolbarrQ   rR   )r   r   r   r   rX   rJ   r=   r=   r>   r9   L  s      zCompletionsToolbar.__init__r   c                 C  s   | j S rI   ru   rJ   r=   r=   r>   rv   T  s    z#CompletionsToolbar.__pt_container__Nr|   r=   r=   r=   r>   r)   K  s   c                   @  s,   e Zd ZddddddZddd	d
ZdS )r-   Fr   r0   )show_positionr4   c                   s8   dd fdd}t || _tt| jddtd| _d S )Nr   rY   c                    s\   t  j} | jrT| j| jj\}} rBd| jj|d |d }n| jj}d|fgS g S d S )Nz{} (line={} column={})r5   zclass:validation-toolbar)r   r   Zvalidation_errordocumentZtranslate_index_to_positionZcursor_positionformatmessage)Zbuffrowcolumnr1   r   r=   r>   rz   Z  s    
z6ValidationToolbar.__init__.<locals>.get_formatted_textr5   r{   rR   )r    r   r   r   r   rX   )r:   r   rz   r=   r   r>   r9   Y  s    
 zValidationToolbar.__init__r   rY   c                 C  s   | j S rI   ru   rJ   r=   r=   r>   rv   u  s    z"ValidationToolbar.__pt_container__N)Fr|   r=   r=   r=   r>   r-   X  s   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>   s>   0	w4D