
    iPg                       d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlZd dl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mZmZmZmZmZ 	 d dl Z n9# e!$ r1Z" e#d$                     ej%                                        e"dZ"["ww xY wdZ&dZ'dZ(d	Z)d
Z*d+                     e,e-e*                    Z.dZ/dZ0dZ1dZ2dZ3dZ4dZ5dZ6dZ7dZ8dZ9dZ:dZ;dZ<dZ=dZ>dZ?dZ@dZAdZBdZCdZDdZEdZFdZGdZHdZIdZJdZKdZL G d deM          ZN G d  d!eM          ZO G d" d#eM          ZP G d$ d%eM          ZQ G d& d'eM          ZRd(e-fd)ZSd*e-d(eTfd+ZUd,ed(eed-ef         ged-ef         f         fd.ZV G d/ d0          ZW G d1 d2          ZX G d3 d4eY          ZZd(e j[        fd5Z\d(eZfd6Z]d9d7Z^e_d8k    r e^             dS dS ):    N)	getlocale)	FrameType)AnyCallableDictIterableIteratorListMatchOptionalPatternSequenceSetTextIOTupleUnioncastz "{}" is currently not supported.z
Ingo Meyerzi.meyer@fz-juelich.deuF   Copyright © 2021 Forschungszentrum Jülich GmbH. All rights reserved.MIT)      r   .)enterTFz> )fg_redbold)standoutz[*] )fg_gray)	fg_yellowr   ) tabg      ?preview)escapeqctrl-g)fg_black	bg_yellowr   /)fg_blue)r   bg_black   c                       e Zd ZdS ) InvalidParameterCombinationErrorN__name__
__module____qualname__     W/home/ubuntu/.hermes/hermes-agent/venv/lib/python3.11/site-packages/simple_term_menu.pyr+   r+   R           Dr1   r+   c                       e Zd ZdS )InvalidStyleErrorNr,   r0   r1   r2   r5   r5   V   r3   r1   r5   c                       e Zd ZdS )NoMenuEntriesErrorNr,   r0   r1   r2   r7   r7   Z   r3   r1   r7   c                       e Zd ZdS )PreviewCommandFailedErrorNr,   r0   r1   r2   r9   r9   ^   r3   r1   r9   c                       e Zd ZdS )UnknownMenuEntryErrorNr,   r0   r1   r2   r;   r;   b   r3   r1   r;   returnc                  d    t          j                    d         } | dS |                                 S )Nr   ascii)localer   lower)user_locales    r2   
get_localerB   f   s2    "$$Q'Kw  """r1   textc                    t          t          d          s	 t          j                    dk    r*t          j                            d          t          _        n)t          j                            d          t          _        n# t          $ r d t          _        Y nw xY wt          j        	 t                      }| 
                    dd                              |d          }t          j                            t	          j        |                    |	                    t          |                    S # t          $ r Y nw xY wt          |           S )
NlibcDarwinzlibSystem.dylibz	libc.so.6 u   �replaceencodingerrorsrJ   )hasattrwcswidthplatformsystemctypescdllLoadLibraryrE   OSErrorrB   rH   encode	c_wchar_pdecodelenAttributeError)rC   rA   encoded_texts      r2   rN   rN   n   s5   8V$$ !	!  H,, & 7 78I J J & 7 7 D D 	! 	! 	! HMMM	!} 		$,,K  <<h77>>\e>ffL=)) !4!4k!4!J!JKKSQ]M^M^    	 	 	D	t99s%   A*B BB+BD7 7
EE	variables.c                  d     dt           dt          f         dt           dt          f         f fd}|S )Nf.r<   c                 ^                                     D ]\  }}t          | ||           | S N)itemssetattr)r]   keyvaluer[   s      r2   	decoratorz#static_variables.<locals>.decorator   s:    #//++ 	# 	#JCAsE""""r1   )r   r   )r[   rd   s   ` r2   static_variablesre      sI    Xc3h' HS#X,>      
 r1   c                   j    e Zd Z e            d         dk    rdZdZdZdZdZdZ	dS d	Zd
ZdZdZdZdZ	dS )BoxDrawingCharactersr   zUTF-8u   ─u   │u   ┌u   ┐u   └u   ┘-|+N)
r-   r.   r/   r   
horizontalvertical
upper_leftupper_right
lower_leftlower_rightr0   r1   r2   rg   rg      se        y{{1~  


 


r1   rg   c            U       ,   e Zd Z G d d          Z G d d          Z G d d          Z G d d          Zi d	d
ddddddddddddddddddddddddd d!d"d#d$d%d&d'i d(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNZdOdPdQdRdSdTdUdVdWdXdYdZd[d\Z e	e
                                          Zd]Zd]Zeeed]eeeeeeeeed^eed]ed]eeed^e e!e"e#e$e%d]e&d]e'e(d^d]e)e*d]d_'d`e+e,         dae+e,         dbe-dce-dde.e/         dee-dfe-dge.e,         dhe.e+e,                  die.e+e,                  dje-dke,dle.e+e,                  dme.e+e,                  dne-doe.e+e,                  dpe-dqe.e+e0e,e/f                           dre-dse.e0e,e1e,ge,f         f                  dte2due,dve+e,         dwe-dxe-dye.e+e,                  dze.e,         d{e.e+e,                  d|e.e+e,                  d}e-d~e.e,         de-de.e,         de-de-de-de.e0e,e+e,         e1e,ge,f         f                  de-de.e+e,                  de.e0e,e+e,         f                  fPdZ3e4d`e+e,         de+e.e,                  de-de.e,         fd            Z5e4de,de,fd            Z6e7dd            Z8e7de+e,         dd]fd            Z9e7dd            Z:e7de,de,fd            Z;e7de/fd            Z<e7de/fd            Z=ddZ>ddZ?ddZ@ddZAddZBdde-de,fdZCde.e0e/eDe/df         f                  fdZEeFde.e,         fd            ZGeFde.e,         fd            ZHeFde.eDe,df                  fd            ZIeFde.e/         fd            ZJeFde.eDe/df                  fd            ZKd]S )TerminalMenuc            	          e Zd Z	 	 	 ddee         dee         dedefdZdd	Ze	de
eeee         f                  fd
            Ze	deee                  fd            Ze	dee         fd            Zej        dee         ddfd            Ze	deeg df                  fd            Zej        deeg df                  ddfd            Ze	defd            ZdefdZdedefdZdefdZdS )TerminalMenu.SearchNFmenu_entriessearch_textcase_senitiveshow_search_hintc                 h    || _         || _        || _        g | _        d | _        d | _        || _        d S r_   )_menu_entries_case_sensitive_show_search_hint_matches_search_regex_change_callbackrv   )selfru   rv   rw   rx   s        r2   __init__zTerminalMenu.Search.__init__   sA     ".D#0D %5D"DM!%D$(D!*Dr1   r<   c                     | j         	g | _        d S g }t          | j                  D ]8\  }}| j                             |          }|r|                    ||f           9|| _        d S r_   )r~   r}   	enumeraterz   searchappend)r   matchesi
menu_entry	match_objs        r2   _update_matchesz#TerminalMenu.Search._update_matches   sy    !) "%.t/A%B%B 7 7MAz $ 2 9 9* E EI  79~666 'r1   c                 *    t          | j                  S r_   )listr}   r   s    r2   r   zTerminalMenu.Search.matches   s    &&&r1   c                     | j         S r_   )r~   r   s    r2   search_regexz TerminalMenu.Search.search_regex   s    %%r1   c                     | j         S r_   _search_textr   s    r2   rv   zTerminalMenu.Search.search_text   s    $$r1   rC   c                 T   || _         | j         }d | _        |r_| j        X	 t          j        || j        st          j        nd          | _        n# t          j        $ r |d d         }Y nw xY w|r| j        X|                                  | j        r|                                  d S d S )Nr   )flags)	r   r~   recompiler{   
IGNORECASEerrorr   r   )r   rC   rv   s      r2   rv   zTerminalMenu.Search.search_text   s     $D+K!%D 3$"4"<3)+K\`\pGwr}}vw)x)x)xD&&x 3 3 3"-crc"2KKK3  3$"4"<
   """$ (%%'''''( (s   .A A+*A+c                     | j         S r_   r   r   s    r2   change_callbackz#TerminalMenu.Search.change_callback   s    ((r1   callbackc                     || _         d S r_   r   )r   r   s     r2   r   z#TerminalMenu.Search.change_callback   s    $,D!!!r1   c                     | s	| j         sdS dS Nr   r   )r|   r   s    r2   occupied_lines_countz(TerminalMenu.Search.occupied_lines_count   s      6 qqr1   c                     | j         d uS r_   r   r   s    r2   __bool__zTerminalMenu.Search.__bool__   s    $D00r1   
menu_indexc                 D    t          fd| j        D                       S )Nc              3   *   K   | ]\  }}|k    V  d S r_   r0   ).0r   _r   s      r2   	<genexpr>z3TerminalMenu.Search.__contains__.<locals>.<genexpr>   s+      AA41aqJAAAAAAr1   )anyr}   r   r   s    `r2   __contains__z TerminalMenu.Search.__contains__   s(    AAAA4=AAAAAAr1   c                 <    | j         t          | j                   ndS Nr   )r   rN   r   s    r2   __len__zTerminalMenu.Search.__len__   s!    262C2O8D-...UVVr1   )NFFr<   N)r-   r.   r/   r   strr   boolr   r   propertyr
   r   intr   r   r   r   rv   setterr   r   r   r   r   r   r0   r1   r2   Searchrt      sE        *."'%*	+ 	+"3-	+ "#	+  		+
 #	+ 	+ 	+ 	+ 		( 		( 		( 		( 
	'T%U3Z"89 	' 	' 	' 
	' 
	&(73<"8 	& 	& 	& 
	& 
	%# 	% 	% 	% 
	% 
		(HSM 	(d 	( 	( 	( 
		( 
	)Xhr4x.@%A 	) 	) 	) 
	) 
		-HXb$h5G,H 	-T 	- 	- 	- 
 		- 
	# 	 	 	 
		1d 	1 	1 	1 	1	B3 	B4 	B 	B 	B 	B	WS 	W 	W 	W 	W 	W 	Wr1   r   c                       e Zd Zddeee                  fdZddZdeddfdZdeddfdZ	dede
fd	Zde
fd
Zdede
fdZdede
fdZdede
ddfdZdee         fdZedeedf         fd            ZdS )TerminalMenu.SelectionNpreselected_indicesc                 N    |t          |          nt                      | _        d S r_   )set_selected_menu_indices)r   r   s     r2   r   zTerminalMenu.Selection.__init__   s*    FYFe#.A*B*B*BknkpkpD'''r1   r<   c                 8    | j                                          d S r_   )r   clearr   s    r2   r   zTerminalMenu.Selection.clear   s    '--/////r1   r   c                     d| |<   d S NTr0   r   s     r2   addzTerminalMenu.Selection.add   s    #Dr1   c                     d| |<   d S )NFr0   r   s     r2   removezTerminalMenu.Selection.remove   s    $Dr1   c                 *    || j         v| |<   | |         S r_   r   r   s     r2   togglezTerminalMenu.Selection.toggle   s    )1LLD
##r1   c                 *    t          | j                  S r_   )r   r   r   s    r2   r   zTerminalMenu.Selection.__bool__      3444r1   c                     || j         v S r_   r   r   s     r2   r   z#TerminalMenu.Selection.__contains__      !<<<r1   c                     || j         v S r_   r   r   s     r2   __getitem__z"TerminalMenu.Selection.__getitem__  r   r1   is_selectedc                 v    |r| j                             |           d S | j                             |           d S r_   )r   r   r   )r   r   r   s      r2   __setitem__z"TerminalMenu.Selection.__setitem__
  sD     ?+//
;;;;;+22:>>>>>r1   c                 *    t          | j                  S r_   )iterr   r   s    r2   __iter__zTerminalMenu.Selection.__iter__  r   r1   .c                 D    t          t          | j                            S r_   )tuplesortedr   r   s    r2   selected_menu_indicesz,TerminalMenu.Selection.selected_menu_indices  s     ;<<===r1   r_   r   )r-   r.   r/   r   r   r   r   r   r   r   r   r   r   r   r   r   r	   r   r   r   r   r0   r1   r2   	Selectionr      s       	q 	q#0G 	q 	q 	q 	q	0 	0 	0 	0	$# 	$$ 	$ 	$ 	$ 	$	%S 	%T 	% 	% 	% 	%	$S 	$T 	$ 	$ 	$ 	$	5d 	5 	5 	5 	5	=3 	=4 	= 	= 	= 	=	=# 	=$ 	= 	= 	= 	=	?# 	?D 	?T 	? 	? 	? 	?	5hsm 	5 	5 	5 	5 
	>5c? 	> 	> 	> 
	> 	> 	>r1   r   c                      e Zd Zdg fdee         ddddddd	ed
ee         fdZd!dZ	d!dZ
d!dZd!dZd!dZdedefdZdedee         fdZdedefdZedee         fd            Zej        deddfd            Zedee         fd            Zej        deddfd            Zedefd            Zedee         fd            ZdefdZdeeeeef                  fd ZdS )"TerminalMenu.ViewTru   r   rt   	selectionr   viewportTerminalMenu.Viewportcycle_cursorskip_indicesc                     t          |          | _        || _        || _        || _        || _        d | _        || _        |                                  d S r_   )	r   rz   _search
_selection	_viewport_cycle_cursor_active_displayed_index_skip_indicesupdate_view)r   ru   r   r   r   r   r   s          r2   r   zTerminalMenu.View.__init__  sY     "&l!3!3D!DL'DO%DN!-D+/D(!-Dr1   r<   Nc                    | j         r9| j         j        dk    r)t          d | j         j        D                       | _        n3t          t          t          | j                                      | _        d t          | j                  D             | _	        | j        rdnd | _
        t          | j                  | j        _        | j         j        | j        _        | j                            | j
                   d S )N c              3       K   | ]	\  }}|V  
d S r_   r0   )r   r   r   s      r2   r   z0TerminalMenu.View.update_view.<locals>.<genexpr>,  s&      ;g;g,!YA;g;g;g;g;g;gr1   c                     i | ]\  }}||	S r0   r0   )r   displayed_indexr   s      r2   
<dictcomp>z1TerminalMenu.View.update_view.<locals>.<dictcomp>/  s.     3 3 3/OZ O3 3 3r1   r   )r   rv   r   r   _displayed_index_to_menu_indexrangerX   rz   r   _menu_index_to_displayed_indexr   r   num_displayed_menu_entriesr   search_lines_countkeep_visibler   s    r2   r   zTerminalMenu.View.update_view*  s    | \ 8B > >6;;g;gRVR^Rf;g;g;g6g6g336;E#dFXBYBY<Z<Z6[6[33 33<T=`3a3a3 3 3D/ 150S+]11Y]D(8;D<_8`8`DN5040QDN-N''(DEEEEEr1   c                 "   | j         | j         dz   | j        j        k     r| xj         dz  c_         n| j        rd| _         | j                            | j                    | j        | j                  | j        v r|                                  d S d S d S Nr   r   )r   r   r   r   r   r   r   increment_active_indexr   s    r2   r   z(TerminalMenu.View.increment_active_index8  s    +7/!3dn6___00A5000' 534D0++D,HIII6t7STX\Xjjj//11111 87 kjr1   c                 "   | j         | j         dk    r| xj         dz  c_         n| j        r| j        j        dz
  | _         | j                            | j                    | j        | j                  | j        v r|                                  d S d S d S r   )r   r   r   r   r   r   r   decrement_active_indexr   s    r2   r   z(TerminalMenu.View.decrement_active_indexC  s    +7/!3300A5000' a37>3\_`3`D0++D,HIII6t7STX\Xjjj//11111 87 kjr1   c                     | j         d S | j                                         t          | j         | j        j        z   | j        j        dz
            | _         d S Nr   )r   r   	page_downminsizer   r   s    r2   r   zTerminalMenu.View.page_downN  sY    +3N$$&&&+.,t~/BBDNDmpqDq, ,D(((r1   c                     | j         d S | j                                         t          | j         | j        j        z
  d          | _         d S r   )r   r   page_upmaxr   r   s    r2   r   zTerminalMenu.View.page_upV  sJ    +3N""$$$+.t/KdnNa/acd+e+eD(((r1   r   c                 r    || j         v o.| j        j        | j         |         cxk    o| j        j        k    nc S r_   )r   r   lower_indexupper_indexr   s     r2   
is_visiblezTerminalMenu.View.is_visible\  sZ    !DD *6zB. . . .>-. . . .r1   c                 2    || j         v r| j         |         S d S r_   r   r   s     r2   %convert_menu_index_to_displayed_indexz7TerminalMenu.View.convert_menu_index_to_displayed_indexc  s#    T@@@::FFtr1   r   c                     | j         |         S r_   )r   )r   r   s     r2   %convert_displayed_index_to_menu_indexz7TerminalMenu.View.convert_displayed_index_to_menu_indexi  s    6GGr1   c                 8    | j         | j        | j                  S d S r_   )r   r   r   s    r2   active_menu_indexz#TerminalMenu.View.active_menu_indexl  s!    +7:4;WXXtr1   rc   c                 *    | j         |         | _        d S r_   )r   active_displayed_indexr   rc   s     r2   r
  z#TerminalMenu.View.active_menu_indexs  s    *.*Me*TD'''r1   c                     | j         S r_   r   r   s    r2   r  z(TerminalMenu.View.active_displayed_indexw      //r1   c                 R    || _         | j                            | j                    d S r_   )r   r   r   r  s     r2   r  z(TerminalMenu.View.active_displayed_index{  s)    +0D(N''(DEEEEEr1   c                      | j         j        dz
  S r   )r   r   r   s    r2   max_displayed_indexz%TerminalMenu.View.max_displayed_index  s    ><q@@r1   c                 *      fd j         D             S )Nc                 <    g | ]}|j         v j         |         S r0   r  )r   selected_indexr   s     r2   
<listcomp>z@TerminalMenu.View.displayed_selected_indices.<locals>.<listcomp>  s9       "!T%HHH 3NCHHHr1   )r   r   s   `r2   displayed_selected_indicesz,TerminalMenu.View.displayed_selected_indices  s0       &*o   r1   c                     | j         d uS r_   r  r   s    r2   r   zTerminalMenu.View.__bool__  s    /t;;r1   c              #      K   t          | j                  D ];\  }}| j        j        |cxk    r| j        j        k    rn )||| j        |         fV  <d S r_   )r   r   r   r  r  rz   )r   r   r   s      r2   r   zTerminalMenu.View.__iter__  s{      /89\/]/] X X+>-^^^^DND^^^^^^*J8J:8VWWWWX Xr1   r   )r-   r.   r/   r   r   r   r
   r   r   r   r   r   r   r   r  r   r  r  r   r
  r   r  r  r  r   r	   r   r   r0   r1   r2   Viewr     s        "&&(	 	"3-	 *	 0		
 .	 	 s)	 	 	 	$	F 	F 	F 	F		2 		2 		2 		2		2 		2 		2 		2	 	 	 		f 	f 	f 	f	 	 	 	 	 		C 	HUXM 	 	 	 		H 	HQT 	H 	H 	H 	H 
	x} 	 	 	 
	 
	!	U3 	U4 	U 	U 	U 
"	!	U 
	0HSM 	0 	0 	0 
	0 
 	&	F 	F 	F 	F 	F 
'	&	F 
	A 	A 	A 	A 
	A 
	S	 	 	 	 
		<d 	< 	< 	< 	<	XhuS#s]';< 	X 	X 	X 	X 	X 	Xr1   r  c            
       P   e Zd Zdededededef
dZdefdZd"d
ee         deddfdZd#dZ	d#dZ
deddfdZd#dZedefd            Zedefd            Zedeeef         fd            Zedefd            Zedefd            Zej        deddfd            Zedefd            Zedefd            Zej        deddfd            Zedefd            Zej        deddfd            Zedefd            Zej        deddfd             Zedefd!            ZdS )$r   r   title_lines_countstatus_bar_lines_countpreview_lines_countr   c                     || _         || _        || _        || _        || _        |                                 | _        dt          | j         | j                  dz
  f| _        | 	                    d d           d S )Nr   r   F)cursor_positionrefresh_terminal_size)
_num_displayed_menu_entries_title_lines_count_status_bar_lines_countr  r   _calculate_num_lines
_num_linesr   r   r   )r   r   r  r  r  r   s         r2   r   zTerminalMenu.Viewport.__init__  s     0JD,&7D#+AD(':D$&8D#"7799DOT%Et!W!WZ[![\DNd%PPPPPr1   r<   c                 t    t                                           | j        z
  | j        z
  | j        z
  | j        z
  S r_   )rr   r'  r$  r%  _preview_lines_count_search_lines_countr   s    r2   r&  z*TerminalMenu.Viewport._calculate_num_lines  sF    '')))*./ +, *	+r1   Tr!  r"  Nc                 8   |d}|r|                                   | j        d         |cxk    r| j        d         k    rn nd S || j        d         k     r|| j        d         z
  }n|| j        d         z
  }| j        d         |z   | j        d         |z   f| _        d S r   )update_terminal_sizer   )r   r!  r"  
scroll_nums       r2   r   z"TerminalMenu.Viewport.keep_visible  s    &"#$ ,))+++~a OHHHHt~a7HHHHHH!222,t~a/@@

,t~a/@@
"nQ/*<dnQ>OR\>\]DNNNr1   c                 :    |                      | j                   d S r_   scrollr   r   s    r2   r   zTerminalMenu.Viewport.page_down  s    KK	"""""r1   c                 <    |                      | j                    d S r_   r/  r   s    r2   r   zTerminalMenu.Viewport.page_up  s    KK
#####r1   number_of_linesc                     |dk     rt          | j        d          |          }n4t          t          d| j        | j        d         z
  dz
            |          }| j        d         |z   | j        d         |z   f| _        d S r   )r   r   r   r#  )r   r2  r-  s      r2   r0  zTerminalMenu.Viewport.scroll  s    "" $."3!3_EE

 Q(H4>Z[K\(\_`(`!a!acrss
"nQ/*<dnQ>OR\>\]DNNNr1   c                     |                                  }|| j        k    r=t          || j                  dz
  }t	          d||z
            }||f| _        || _        d S d S r   )r&  r'  r   r#  r   r   )r   	num_linesr  r  s       r2   r,  z*TerminalMenu.Viewport.update_terminal_size  sk    1133IDO++!)T-MNNQRR!![9%<=="-{!;"+ ,+r1   c                     | j         d         S r   r   r   s    r2   r  z!TerminalMenu.Viewport.lower_index      >!$$r1   c                     | j         d         S r   r7  r   s    r2   r  z!TerminalMenu.Viewport.upper_index  r8  r1   c                     | j         S r_   r7  r   s    r2   r   zTerminalMenu.Viewport.viewport  s
    >!r1   c                 >    | j         d         | j         d         z
  dz   S r   r7  r   s    r2   r   zTerminalMenu.Viewport.size  s     >!$t~a'881<<r1   c                     | j         S r_   r#  r   s    r2   r   z0TerminalMenu.Viewport.num_displayed_menu_entries  s    33r1   c                     || _         d S r_   r=  )r   r   s     r2   r   z0TerminalMenu.Viewport.num_displayed_menu_entries  s    /ID,,,r1   c                     | j         S r_   )r$  r   s    r2   r  z'TerminalMenu.Viewport.title_lines_count  s    **r1   c                     | j         S r_   r%  r   s    r2   r  z,TerminalMenu.Viewport.status_bar_lines_count  r  r1   rc   c                     || _         d S r_   rA  r  s     r2   r  z,TerminalMenu.Viewport.status_bar_lines_count  s    +0D(((r1   c                     | j         S r_   )r)  r   s    r2   r  z)TerminalMenu.Viewport.preview_lines_count  s    ,,r1   c                     t          |dk    r|ndt                                          | j        z
  | j        z
  t
          z
            | _        d S )Nr)   r   )r   rr   r'  r$  r%  MIN_VISIBLE_MENU_ENTRIES_COUNTr)  r  s     r2   r  z)TerminalMenu.Viewport.preview_lines_count  sX    (+!'')))*./ 11) )D%%%r1   c                     | j         S r_   r*  r   s    r2   r   z(TerminalMenu.Viewport.search_lines_count  s    ++r1   c                     || _         d S r_   rG  r  s     r2   r   z(TerminalMenu.Viewport.search_lines_count  s    ',D$$$r1   c                 "    | j         | j        k    S r_   )r#  r'  r   s    r2   must_scrollz!TerminalMenu.Viewport.must_scroll  s    3doEEr1   Tr   )r-   r.   r/   r   r   r&  r   r   r   r   r   r0  r,  r   r  r  r   r   r   r   r   r  r  r  r   rJ  r0   r1   r2   ViewportzTerminalMenu.Viewport  s       	Q(+	Q  #	Q %(		Q
 "%	Q !$	Q 	Q 	Q 	Q$	# 	 	 	 		^ 	^ 	^VZ 	^fj 	^ 	^ 	^ 	^	# 	# 	# 	#	$ 	$ 	$ 	$	^# 	^$ 	^ 	^ 	^ 	^	, 	, 	, 	, 
	% 	% 	% 	% 
	% 
	% 	% 	% 	% 
	% 
	"eCHo 	" 	" 	" 
	" 
	=# 	= 	= 	= 
	= 
	4 	4 	4 	4 
	4 
$	*	J 	JQU 	J 	J 	J 
+	*	J 
	+s 	+ 	+ 	+ 
	+ 
	0C 	0 	0 	0 
	0 
 	&	1 	1 	1 	1 	1 
'	&	1 
	- 	- 	- 	- 
	- 
	#	S 	T 	 	 	 
$	#	 
	, 	, 	, 	, 
	, 
	"	-C 	-D 	- 	- 	- 
#	"	- 
	F 	F 	F 	F 
	F 	F 	Fr1   rL  r(   zsetab 0bg_bluezsetab 4bg_cyanzsetab 6bg_grayzsetab 7bg_greenzsetab 2	bg_purplezsetab 5bg_redzsetab 1r%   zsetab 3r   r   colorscursor_downcud1cursor_invisibleciviscursor_leftcub1cursor_rightcuf1	cursor_upcuu1cursor_visiblecnormdelete_linedl1downkcud1endkendenter_application_modesmkxexit_application_modermkxr$   zsetaf 0r'   zsetaf 4fg_cyanzsetaf 6r   zsetaf 7fg_greenzsetaf 2	fg_purplezsetaf 5r   zsetaf 1r   zsetaf 3homekhomeitalicssitmr   knpr   kppsgr0smsosmulkcuu1)reset_attributesr   	underlineupr   
	)	backspacectrl-actrl-bctrl-ectrl-fr#   ctrl-jctrl-kctrl-nctrl-pr   r!   r   NF)'accept_keysclear_menu_on_exitclear_screencursor_indexr   exit_on_shortcutmenu_cursormenu_cursor_stylemenu_highlight_stylemulti_selectmulti_select_cursor"multi_select_cursor_brackets_stylemulti_select_cursor_stylemulti_select_empty_okmulti_select_keysmulti_select_select_on_acceptpreselected_entriespreview_borderpreview_commandpreview_sizepreview_title	quit_keysraise_error_on_interruptsearch_case_sensitivesearch_highlight_style
search_key!shortcut_brackets_highlight_styleshortcut_key_highlight_styleshow_multi_select_hintshow_multi_select_hint_textrx   show_search_hint_textshow_shortcut_hints!show_shortcut_hints_in_status_barskip_empty_entries
status_barstatus_bar_below_previewstatus_bar_styletitleru   r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rx   r  r  r  r  r  r  r  r  c       '            $ dd})dt           t                   dt          t          t                   t          t          t                            t          t          t                            t          t
                   f         f$fd}*dt           t          t          t
          f                  dt          t
                   f fd}+dt          t          t          t           t                   f                  dt          d	t           t                   d
t           t          t                            dt          dt          t          df         f fd}, |)              |*|          \   _	         _
         _         _        t          d  j
        D                        _        t          |           _        | _        | _        | _        | _        | _        ||nd _        |	t          |	          nd _        |
t          |
          nd _        | _        | _        |t          |          nd _        |t          |          nd _        |t          |          nd _        | _        |r j        st?          d          | |+|          nd  _         | _!        | _"        | _#        | _$        t          |           _%        | _&        | _'        |t          |          nd _(        | _)        |t          |          nd _*        |t          |          nd _+        |  _,        |! _-        |" _.        |# _/        d  _0        d  _1        te          |%          r|% _0        n  |,|%|"o|# j	         j
        d           _1        |& _3        |'t          |'          nd _4         |,|(|"o|#  j	         j
        d           _5        | _6        | _7        d  _8        d  _9        d  _:        d _;        d  _<        d _=         >                     j	         j'         j,                   _?         @                     j                    _A         B                    t           j	                  t           j5                   j1        t           j1                  nddd           _D         E                     j	         j?         jA         jD         j         j                   _F        |r.d|cxk     rt           j	                  k     rn n| jF        _G         jF        jH         j?        _I        d  _J        d  _K        d  _L        d  _M        t                       _O         P                                  Q                                  R                     j                    R                     j%                    S                                 d S )Nr<   c                      dt           j        vst           j        d         dk    r,dt           j        v rt          d          t          d          d S )NTERMr   PYCHARM_HOSTEDzsimple-term-menu does not work in the PyCharm output console. Use a terminal instead (Alt + F12) or activate "Emulate terminal in output console".z8simple-term-menu can only be used in a terminal emulator)osenvironNotImplementedErrorr0   r1   r2   check_for_terminal_environmentz=TerminalMenu.__init__.<locals>.check_for_terminal_environment{  s_    RZ''2:f+=+C+C#rz11-Q   **deee ,D+Cr1   entriesc                    t          j        d          }t          j        d          }t          j        d          }g }g }g }g }t          |           D ]&\  }}	|	|	dk    rWrU|                    d            |                    d           |                    d            |                    |           e|                    d|                    d|	                    }
|                    |
          }|J |                    d          }|                    d          }|                    d	          }|                    |           |                    |           |                    |           (||||fS )
Nz	([^\\])\|z\\\|z.^(?:\[(\S)\]\s*)?([^\x1F]+)(?:\x1F([^\x1F]*))?r   ri   z\1r      r)   )r   r   r   r   submatchgroup)r  separator_patternescaped_separator_patternmenu_entry_patternshortcut_keysru   preview_argumentsr   idxentryunit_separated_entryr   shortcut_keydisplay_textpreview_argumentr  s                  r2   4extract_shortcuts_menu_entries_and_preview_argumentszSTerminalMenu.__init__.<locals>.extract_shortcuts_menu_entries_and_preview_arguments  s    !#
< 8 8(*
7(;(;%!#,]!^!^ML "L'00 ? ?
U=Ub[[5G[!((... ''+++%,,T222 '',,,,+D+H+HN_NcNcdmotNuNu+v+v( 2 8 89M N NI %000#,??1#5#5L#,??1#5#5L'0q'9'9$!((666 ''555%,,-=>>>>0A<OOr1   preselected_indices_or_entriesc           	         i }t          j                  D ]B\  }}|                    |t                                 ||                             |           Ct                      }| D ]}t          |t                    rpd|cxk    rt          j                  k     rn n|                    |           Ot          d	                    |t          j                  dz
                      t          |t                    rR	 |                    ||                    # t          $ r(}t          d	                    |                    |d }~ww xY wt          d          |S )Nr   z2Error: {} is outside the allowable range of 0..{}.r   z-Pre-selection "{}" is not a valid menu entry.z>"preselected_entries" must either contain integers or strings.)r   rz   
setdefaultr   r   
isinstancer   rX   
IndexErrorformatr   updateKeyErrorr;   
ValueError)r  menu_entry_to_indicesr   r   r   itemer   s          r2   &convert_preselected_entries_to_indiceszETerminalMenu.__init__.<locals>.convert_preselected_entries_to_indices  s    %'!*3D4F*G*G B B&
J%00SUUCCC%j155jAAAA"%%%6 g gdC(( gD::::3t'9#:#::::::+//5555(PWW $c$*<&=&=&A   
  c** gy+223H3NOOOO# y y y34c4j4jko4p4pqqwxxy %%efff&&s   D$$
E.#EEtitle_or_status_barr  ru   r  shortcut_hints_in_parentheses.c                     | g }n:t          | t                    r|                     d          }nt          |           }|r.                    |||          }||                    |           t          |          S )Nr  )r  r   splitr   _get_shortcut_hints_liner   r   )r  r  ru   r  r  linesshortcut_hints_liner   s          r2   setup_title_or_status_bar_linesz>TerminalMenu.__init__.<locals>.setup_title_or_status_bar_lines  s     #*/55 2+11$77011" 6&*&C&C -1N' '# '2LL!4555<<r1   c              3      K   | ]}|d uV  	d S r_   r0   )r   rb   s     r2   r   z(TerminalMenu.__init__.<locals>.<genexpr>  s&      %U%U#co%U%U%U%U%U%Ur1   r   r0   zEMulti-select mode must be enabled when preselected entries are given.FT)rw   rx   r   r   )Tr   r   r   r
   r   r   r   r   r   rz   _shortcut_keys_preview_argumentsr   r   _shortcuts_definedr   _accept_keys_clear_menu_on_exit_clear_screenr   _multi_select_empty_ok_exit_on_shortcut_menu_cursor_menu_cursor_style_menu_highlight_style_multi_select_multi_select_cursor#_multi_select_cursor_brackets_style_multi_select_cursor_style_multi_select_keys_multi_select_select_on_acceptr+   _preselected_indices_preview_border_preview_command_preview_size_preview_title
_quit_keys_raise_error_on_interrupt_search_case_sensitive_search_highlight_style_search_key"_shortcut_brackets_highlight_style_shortcut_key_highlight_styler|   _show_search_hint_text_show_shortcut_hints"_show_shortcut_hints_in_status_bar_status_bar_func_status_bar_linescallable_status_bar_below_preview_status_bar_style_title_lines_show_multi_select_hint_show_multi_select_hint_text_chosen_accept_key_chosen_menu_index_chosen_menu_indices_paint_before_next_read_previous_displayed_menu_height_reading_next_keyr   r   r   r   rL  rX   r   r  _viewr
  r   r   	_old_term	_new_term_tty_in_tty_outrB   _user_locale_check_for_valid_styles!_init_backspace_control_character(_add_missing_control_characters_for_keys_init_terminal_codes)-r   ru   r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rx   r  r  r  r  r  r  r  r  r  r  r  r  s-   `                                   `        r2   r   zTerminalMenu.__init__O  sO   X	f 	f 	f 	f	Pc]	P49d8C=143FS	QR	P 	P 	P 	P 	P 	P@	',4U38_,E	'X	' 	' 	' 	' 	' 	'6	 !)%Xc]0B*C!D	 !%	  #3-	  $HSM2		 
 ,0	  38_	  	  	  	  	  	 * 	'&((( A@NN	
#"%%U%UAT%U%U%U"U"U!+..#5 ))&;#!1+6+BKK>O>[%(9":":":acDXDdU+?%@%@%@jl")$7!9[9gE4555mo 	0 1J0UE+,,,[] 	' ?P>[%(9":":":ac.K+ 	t'9 	2W   L_Kj223FGGGpt 	!  . /)+	**)A&&;#H^Hju-C'D'D'Dpr$%8Y8eE3444km 	/ 4P3[E.///ac 	* "2&;#$7!2S/ $!%J 		$.D!!%D%D#I(I"#& &D" *B&<L<X'7!8!8!8^`;;I(I$I
 
 (>$,G)"&"&$(!',$/3,!&{{5!3 # 
 

 ..)BCC"##!""+/+A+MC&'''ST
 
 YYdot~tOacgcu
 

  	8AFFFFs43E/F/FFFFFF+7DJ('+z'=$&LL$$&&&..00055d6GHHH55doFFF!!#####r1   r  r  r<   c                     d                     d t          ||           D                       }|dk    r|rd|z   dz   S |S d S )N, c              3   L   K   | ]\  }}|d                     ||          V   d S )Nz[{}]: {}r  )r   r  r   s      r2   r   z8TerminalMenu._get_shortcut_hints_line.<locals>.<genexpr>K  sH       (
 (
(j' lJ77''''(
 (
r1   r   ())joinzip)ru   r  r  r  s       r2   r  z%TerminalMenu._get_shortcut_hints_lineE  so     #ii (
 (
,/|,L,L(
 (
 (
 
 

 "$$, +00366**tr1   rb   c                    t          |           dk    r| S t          j        d          }t          j        d          }|                    |           }|rd|                    d          z   S |                    |           }|rQt          |                    d                                                    dz
  }|dk     r|dz  }t          |          S t          d	                    |                     )	Nr   z[Aa]lt-(\S)z[Cc]trl-(\S)r  @   r      z$Cannot interpret the given key "{}".)
rX   r   r   r  r  ordupperchrr  r  )rb   alt_modified_regexctrl_modified_regexr   ctrl_code_asciis        r2   _get_keycode_for_keyz!TerminalMenu._get_keycode_for_keyW  s    s88q==JZ77 j99&,,S11	 	/IOOA....'--c22	 	(!)//!"4"4":":"<"<==BO"""1H"<'''?FFsKKLLLr1   c                    	 t          dd          5 }t          j        ddgd|          }d d d            n# 1 swxY w Y   t          j        d          }|                    d          D ]m}|                    |          }|s|                    d	          |                    d
          }}|dk    rK|                     d|z             | j	        d<    d S n# t          j
        $ r Y nw xY wd| j	        d<   d S )N/dev/ttyrsttyz-aT)universal_newlinesstdinz^\s*(\S+)\s*=\s*\^(\S+)\s*$;r   r  erasezctrl-r  )open
subprocesscheck_outputr   r   r  r  r  r-  _name_to_control_characterCalledProcessError)r   ttystty_outputname_to_keycode_regexfieldr   name	ctrl_codes           r2   r  z.TerminalMenu._init_backspace_control_characterk  sw   	j#&& j#(5vtnY]ehiiij j j j j j j j j j j j j j j$&J/M$N$N!$**3//  177>>	  "+//!"4"4iooa6H6Hi7???C?X?XY`clYl?m?m/< , 	 	 	D	 8>'444s.   C 8C <C < BC C-,C-keysc                 x    |D ]6}|| j         vr+|t          j        vr|                     |          | j         |<   7d S r_   )r:  stringascii_lettersr-  )clsrB  rb   s      r2   r  z5TerminalMenu._add_missing_control_characters_for_keys  sV     	T 	TC#888SH\=\=\696N6Ns6S6S.s3	T 	Tr1   c                       j         d S t                               d                     fd j        D              _          j                              j                   d  j                                         D              _        d S )NrS  c                     i | ]J}||                     d           s|                     d          rdk    r                    |          ndKS )bg_fg_   r   )
startswith_query_terminfo_database)r   codenamerF  supported_colorss     r2   r   z5TerminalMenu._init_terminal_codes.<locals>.<dictcomp>  s|     *
 *
 *
   ++E226>6I6I%6P6PUeijUjUj ,,X666	*
 *
 *
r1   c                     i | ]\  }}||	S r0   r0   )r   rN  terminal_codes      r2   r   z5TerminalMenu._init_terminal_codes.<locals>.<dictcomp>  s+     *
 *
 *
(?-M8*
 *
 *
r1   )_codename_to_terminal_coder   rM  
_codenamesr  r:  r`   _terminal_code_to_codename)rF  rO  s   `@r2   r  z!TerminalMenu._init_terminal_codes  s    )5Fs;;HEEFF*
 *
 *
 *
 *
  N*
 *
 *
& 	&--c.LMMM*
 *
CFCaCgCgCiCi*
 *
 *
&&&r1   rN  c                     || j         v r| j         |         }n|}	 t          j        dg|                                z   d          S # t          j        $ r}|j        dk    rY d }~dS |d }~ww xY w)NtputT)r2  r   r   )_codename_to_capnamer8  r9  r  r;  
returncode)rF  rN  capnamer  s       r2   rM  z%TerminalMenu._query_terminfo_database  s    s///.x8GGG	*F8gmmoo+EZ^____, 	 	 	|q  rrrrrG		s   +A A.A)'A))A.c                 F    t          |                     d                    S )Nr  r   rM  r   s    r2   r'  zTerminalMenu._num_lines  s    40099:::r1   c                 F    t          |                     d                    S )Ncolsr[  r   s    r2   	_num_colszTerminalMenu._num_cols  s    40088999r1   c                    g }| j         | j        | j        | j        | j        | j        | j        | j        fD ]%}|D ] }|| j        vr|	                    |           !&|rpt          |          dk    r(t          d                    |d                             t          d                    d                    |                              d S )Nr   zThe style "{}" does not exist.r   zThe styles ("{}") do not exist.z", ")r  r  r  r   r  r  r  r  rW  r   rX   r5   r  r"  )r   invalid_stylesstyle_tuplestyles       r2   r  z$TerminalMenu._check_for_valid_styles  s    #&(.3"4+	
 	1 	1K % 1 1 999"))%0001  	o>""a'''(H(O(OP^_`Pa(b(bccc'(I(P(PQWQ\Q\]kQlQl(m(mnnn		o 	or1   c                 <   | j         J t          dd| j                  | _        t          dd| j        d          | _        t          j        | j                                                  | _        t          j        | j                                                  | _	        t          t          | j	        d                   t
          j         z  t
          j         z  t
          j         z  | j	        d<   t          t          | j	        d                   t
          j         z  | j	        d<   d	t          t          t                    | j	        d
                   t
          j        <   dt          t          t                    | j	        d
                   t
          j        <   t          j        | j                                        t
          j        t          t          t*          t          t          t*          t           t          f                  f                  | j	                             | j                            | j         d                    | j                            | j         d                    | j        r'| j                            | j         d                    d S d S )Nr/  r0  rL   wrH   rI   r)   r      r       rf  rV  r   )rR  r7  r  r  r  termios	tcgetattrfilenor  r  r   r   ICANONECHOICRNLr
   bytesVMINVTIME	tcsetattr	TCSAFLUSHr   writer  r   s    r2   
_init_termzTerminalMenu._init_term  s   .:::Jd6GHHHZt7HQZ[[[ *4<+>+>+@+@AA *4<+>+>+@+@AA !dnQ&788GN?Jgl]Z^e^k]kkq dnQ&788GM>Iq >ET%[$.+,,W\:>ET%[$.+,,W];L!!7#4d4c4PUV[]`V`PaKbFb@c;dfjft6u6u	
 	
 	
 	D;<TUVVVD;<NOPPP 	JM ? HIIIII	J 	Jr1   c                    | j         J | j        J | j        J | j        J t	          j        | j                                        t          j        t          t          t          t          t          t          t          t          f                  f                  | j                             | j                            | j         d                    | j                            | j         d                    | j        r%| j                            | j         d                    | j                                         | j                                         d S )Nr^  rh  r   )rR  r  r  r  rg  rp  ri  rq  r   r
   r   r   rm  rr  r  closer   s    r2   _reset_termzTerminalMenu._reset_term  s/   .:::|'''}(((~)))M  ""G$5tDsDQVW\^aWaQbLcGcAd<egkgu7v7v	
 	
 	
 	D;<LMNNND;<STUUU 	JM ? HIIIr1   c           	      L    dt           t          df         f fd}	 ddt          t          t                            dt          dt          t
                   dd f fddt          f fd	}d
t          dt          f fd}d
t          dt           t          df         dt          f fd}d
t          dt          dt          f fd}dt          dd f fd}d fd}d fd} j        J  j        J d}	 |            }
t          |
           j
        _         j        ?t           j                                         z             j
        _         j
        j        } j
                             j        j                   |	 |            z  }	|	 ||	          z  }	 j        s|	 ||	|
          z  }	 j        |	 ||	|          z  }	 j        r|	 ||	|
          z  }	 ||	            |              j        r
 |             |	 _         j                                         d S )Nr<   .c                     dt           ffd} j        j        j        t	                              j        j        j                                                                               d                    }j        r0j	        r)
                    j        j        d          }|||fz  }nj        j        }nt	                      }j        rj        r| |             fz  }|S )Nr<   c                     dt           t                   dt          fd}  | j                  } | j                  }j        j                            ||          S d                    ||j        rdnd          S )NrB  r<   c                 R    ddid                     fd| D                       }|S )Nr   spacer  c              3   P   K   | ] }d                      ||          z   dz   V  !dS )<>N)get)r   
accept_keystring_to_keys     r2   r   zTerminalMenu._paint_menu.<locals>.get_status_bar_lines.<locals>.get_multi_select_hint.<locals>.get_string_from_keys.<locals>.<genexpr>  sN       , ,R\m//
JGGG#M, , , , , ,r1   )r"  )rB  keys_stringr  s     @r2   get_string_from_keyszsTerminalMenu._paint_menu.<locals>.get_status_bar_lines.<locals>.get_multi_select_hint.<locals>.get_string_from_keys  sR    W%M #')) , , , ,`d, , , # #K '&r1   )r  r  z/Press {} for multi-selection and {} to {}acceptzselect and r   )r   r   r  r  r  r  r  )r  accept_keys_stringmulti_select_keys_stringr   s      r2   get_multi_select_hintzUTerminalMenu._paint_menu.<locals>.get_status_bar_lines.<locals>.get_multi_select_hint  s    'x} ' ' ' ' ' &:%9$:K%L%L"+?+?@W+X+X(4@<CC*BPb D    MSS0*)-)LTRT  r1   r  F)r   r  r  r
  r   rz   stripr  r  r  r  r  r  r  r
  )r  status_bar_linesr  r   s      r2   get_status_bar_linesz6TerminalMenu._paint_menu.<locals>.get_status_bar_lines  s'   3      . $0TZ5Q5]#())$*<TZ=Y*Z[[aacciijnoo$ $  , C1X C*.*G*GHZ\`\oqv*w*w'*6(-@,BB('3#'#9  #(77 ! ?d&B ? %:%:%<%<$>> ##r1   Tstyle_iterableresetfilec                     j         J j        J |j        }|s|  |                    j         d                    | %| D ]$}|                    j         |                    #d S d S )Nrw  )rR  r  rr  )r  r  r  rb  r   s       r2   apply_stylez-TerminalMenu._paint_menu.<locals>.apply_style  s     2>>>=,,,|} P.

4:;MNOOO)+ G GEJJt>uEFFFF *)G Gr1   c            
       	  	 j         J j        J t          j                  j        rt          j                  ndz   } d}                                	j        rgj                            t          j                  j         d         z  dz   d
                    	fdj        D                       z   dz              j        rdnd}d}j        D ]	\  }}}j        |         }j                            | j         d         z             j        r| 
j                   j                            d	            
j                   j                            |            
j                   j                            d
            
             nj                            d           j                            d           |j        j        k    r 
j                   j        r@j        j        dk    r/j        j        |         d         }j                            |d t+          |                                	| z
  |z
                                 
j                   j                            ||                                t+          |                                	| z
  |z
                                 
             |j        j        k    r 
j                   j                            ||                                	| z
  |z
                      n(j                            |d 	| z
  |z
                      |j        j        k    r
 
             j                            	t          |          z
  | z
  |z
  dz             |j        j        k     rj                            d           j        j        |z
  }j                            t7          d|dz
            	dz  dz   z  t+          d|          	dz  z  z              j                            dj        j        dz
  j         d         z  z              |j        j        dz
  z  }|S )Nr   r\  r  r  c              3   X   K   | ]$}|d          t          |          z
  dz  z   V  %d S Nr   rN   )r   
title_linenum_colss     r2   r   zGTerminalMenu._paint_menu.<locals>.print_menu_entries.<locals>.<genexpr>.  sX          & $IXI.(Xj=Q=Q2QUX1XX           r1      r   rZ  []z   r   r   r   )rR  r  rN   r  r  r  r^  r	  rr  rX   r"  r  r  r  r  r   r
  r  r   rv   r   r   startr  rd  r   r  r   r   )all_cursors_width#current_menu_block_displayed_heightshortcut_string_lenr   r   r   current_shortcut_keyr   empty_menu_linesr  r  r   s            @r2   print_menu_entriesz4TerminalMenu._paint_menu.<locals>.print_menu_entries!  s   2>>>=,,, (): ; ;7;7IP2333q! 34/~~''H  	##)**T-L[-YYii        *.*;           (,'>"E!!A O;?: (. (.7Z'+'::'F$##$58WXf8g$ghhh* -+7#D$KLLL++C000#D$FGGG++,@AAA#D$KLLL++C000#++G444M'',,,!===K :;;;< jDL$<$B$B $ 4_ Ea HIM''"#oS):):HGX<X[n<n%o%o#op    K <===M''"%OO--IMMOOXPaEadwEw0x0xx  
  KMMM!TZ%AAA#D$>???M''"9==??X@Q5QTg5g#gh    M''
3gX@Q5QTg5g3g(hiii!===KMMM##X0D0D%DGX%X[n%nru$uvvv"T^%???M''---#~9OKMA'!+,,30EFQP`IaIaempsesItt   M(;a(?4CbcnCo'o oppp/4>3F3JJ/66r1   current_menu_heightc                    j         J j        J d}                                }j        sj        r+j                            | dz   j         d         z             j        rj        j        J j                            j        j        nt          j        j        z   d |                    j                            |t          j                  z
  dz
  dz             nj        rj
        )j
                            j                  d |         }n5j        $d                    j                  d |         }n
dd |         }j                            |           j                            |t          |          z
  dz             j        sj        r0j                            d| dz   j         d	         z  z              d}|S )
Nr   r   rT  r   )rb   z(Press "{key}" to search)z (Press any letter key to search)r  r\  )rR  r  r^  r   r|   rr  rv   r  DEFAULT_SEARCH_KEYrX   r  r  rN   )r  r  r  search_hintr   s       r2   print_search_linez3TerminalMenu._paint_menu.<locals>.print_search_lineg  s   2>>>=,,,23/~~''H| pt5 p##%81%<@_`m@n$nooo| N|/;;;##-1-=-I))Oa,23xi!   ##XDL0A0A%AA%E$LMMMM' N.:"&"="D"DIY"D"Z"Z[d\d[d"eKK%1"="D"DIY"D"Z"Z[d\d[d"eKK"DYhY"OK##K000##X0E0E%E$LMMM| 8t5 8##D,?!,CtGfgrGs+s$sttt67366r1   r  c                    j         J j        J d}                                |rΉj                            | dz   j         d         z              j                   j                            dd                    fd|D                       z   dz                            j                            | t          |          z   j         d         z             |t          |          z  }|S )Nr   r   rT  r  r  c              3   X   K   | ]$}|d          t          |          z
  dz  z   V  %d S r  r  )r   status_bar_liner  s     r2   r   zETerminalMenu._paint_menu.<locals>.print_status_bar.<locals>.<genexpr>  sX          + )(3x(?B[B[7[_b6bb           r1   r\  )rR  r  r^  rr  r  r"  rX   )r  r  r  r  r  r   s      @r2   print_status_barz2TerminalMenu._paint_menu.<locals>.print_status_bar  sA   2>>>=,,,23/~~''H M##%81%<@_`m@n$noooD2333##ii        /?       
    ##(3/?+@+@@DDcdoDpp   4s;K7L7LL366r1   preview_max_num_linesc           	         j         J j        J j        |dk     rdS dt          t                   ffd}t          t          j        d          t          j        d                    dt          dt          ffd	            t          t          j        d
          t          j        d                    dt          dt          dt          t          t          f         ffd            
                                }	  |            }| |          }n)# t          $ r}dt	          |          z   }Y d }~nd }~ww xY wj                            | j         d         z             |#j                            j         d         dz              j        rj                            t          j        dt          j        z  dz   j        z   d |dz
           z   dz   |t%          j                  z
  dz
  t          j        z  z   t          j        z   d |         dz              t)          d t          j        d|t          j                  D                       D ]\  }}||j        rdndz
  k    r|} n ||j        rdndz
            \  }	}
j                            j        rt          j        dz   nd|	z   j         d         z   t1          ||
z
  j        rdndz
  d          dz  z   j        rt          j        ndz              |j        rdndz   }j        rOj                            dt          j        |dz
  t          j        z  z   t          j        z   d |         z              j                            d           nd}j                            | |z   j         d         z             |S )Nr)   r   r<   c                  $   j         J j        j        d S j        j        j                 j        j        j                 nj        j        j                 dk    rd S t          j         t                    r	 t          j        fdt          j
        j                   D             t          j        t          j                  } | j        J t          j        | j        j        d                                                                          }nq# t          j        $ rF}t'          |j                            j        d                                                    |d }~ww xY w                               nd}|S )Nr   c                 :    g | ]}|                               S r0   r  )r   cmd_partr  s     r2   r  z_TerminalMenu._paint_menu.<locals>.print_preview.<locals>.get_preview_string.<locals>.<listcomp>  s&    rrr8X__-=>>rrrr1   )stdoutstderrrH   rI   )r  r  r
  r  rz   r  r   r8  Popenshlexr  PIPEr  ioTextIOWrapperr  readr  r;  r9   r  rW   )preview_processpreview_stringr  r  r   s      @r2   get_preview_stringzKTerminalMenu._paint_menu.<locals>.print_preview.<locals>.get_preview_string  s   ,888:/74 .tz/KLX +DJ,HII+DJ,HI !
 $r))4d3S99 u!*4*:rrrru{[_[pOqOqrrr#-?#-?+ + +
  /5AAA,_-CdN_hqrrr!TVV"UWW '
 &8 ! ! !7HOOT5FyOYY__aa  !!
 QaPlT%:%:;K%L%L%LrtN%%s   BD E4.AE//E4z%\x1B(?:[@-Z\\-_]|\[[0-?]*[ -/]*[@-~])z\x1B\[[;\d]*m)ansi_escape_regexansi_sgr_regexrD  c                 j    j                             fd|           }t          t          |          S )Nc                     j                             |                     d                    r|                     d          ndS )Nr   r   )r  r  r  )r   strip_ansi_codes_except_stylings    r2   <lambda>zjTerminalMenu._paint_menu.<locals>.print_preview.<locals>.strip_ansi_codes_except_styling.<locals>.<lambda>  sE    :IOOPYP_P_`aPbPbcc 	*** r1   )r  r  r   r   )rD  stripped_stringr  s     r2   r  zXTerminalMenu._paint_menu.<locals>.print_preview.<locals>.strip_ansi_codes_except_styling  sI     #B"S"W"W   
 # # C111r1   z([^\x1B]+)(.*)z+(\x1B(?:[@-Z\\-_]|\[[0-?]*[ -/]*[@-~]))(.*))regular_text_regexr  max_lenc                    |dk    rdS g }d}| r	j                             |           }||                    d          }t          |          }||z   |k    r#|                    |d ||z
                      |}n|                    |           ||z  }|                    d          } n{	j                            |           }|@|                    d          }|                    |           |                    d          } n|                    d           | dd          } | d                    |          |fS )Nr   )r   r   r   r  r  r   )r  r  r  rN   r   r  r"  )
rD  r  string_parts
string_lenregular_text_matchregular_textregular_text_lenansi_escape_matchansi_escape_code_textlimit_string_with_escape_codess
            r2   r  zWTerminalMenu._paint_menu.<locals>.print_preview.<locals>.limit_string_with_escape_codes  s}   
 a<< 5!
 0)G)Z)`)`ag)h)h&)5'9'?'?'B'B+3L+A+A(%(887BB(//=Sw?S=S0TUUU)0J!$++L999"&66
!3!9!9!!<!<,J,\,b,b"- -) -84E4K4KA4N4N1(//0EFFF%6%<%<Q%?%?FF )//777%+ABBZF3  04 ww|,,j88r1   z0The preview command failed with error message:

rT  r  r  r   r   r  c              3   @   K   | ]}|                     d           V  dS )r   Nr  )r   r  s     r2   r   zBTerminalMenu._paint_menu.<locals>.print_preview.<locals>.<genexpr>  s=       ) )',EKKNN) ) ) ) ) )r1   z^.*$r   rw  r   r\  )rR  r  r  r   r   re   r   r   r   r   r^  r9   rr  r  rg   rm   rk   r  rN   rn   r   finditer	MULTILINErl   r   ro   rp   )r  r  r  r  r  r  r   linepreview_num_lineslimited_linelimited_line_lenr  r  r   s              @@r2   print_previewz/TerminalMenu._paint_menu.<locals>.print_preview  s   2>>>=,,,$,0E0I0Iq& & & & & & &@ "$*-U"V"V!z*:;;	  	2 	2 	2 	2 	2 	2 	2 	2 #%:.?#@#@"$*-["\"\  9s 9S 9USVX[S[_ 9 9 9 9 9	 9B ~~''H_!3!3!5!5!-%D%D^%T%TN, _ _ _!UX[\]X^X^!^_M 3d6UVc6d deee)##D$CM$RUY$YZZZ' 
M''0; #7#BBSH4K^^`nbjmnbn`nop!"  ((43F*G*GG!KOcOnno 3>	?
 $8)% 	 	 	  ) ) )02G^UWUa0b0b) ) )     O OGAt 1$:N5UQQTUVVV,A)5S5Sht/C*J!!K6 62L"2 M''FJFZb2;cAA`b*+"=>PQR "(-="=dFZAa`a"bdeffillm AE@T\3<<Z\	^    )*$2F-MQQA(N%' M''0;'!|/C/NNO2>? $8)	%%   ##D))))$%!M$'88D<[\g<hh   %$s   	D! !
E+EEdisplayed_menu_heightc                 d   j         J j        J j        j        | k    rj                            | dz   j         d         z             j                            j        | z
  j         d         z             j                            | dz   j         d         z             d S d S d S )Nr   rT  r`  r\  )rR  r  r  rr  )r  r   s    r2   delete_old_menu_linesz7TerminalMenu._paint_menu.<locals>.delete_old_menu_lines6  s    2>>>=,,,4@8;PPP##%:Q%>$BaboBp$pqqq##9<QQ5mDE   ##%:Q%>$BabmBn$nooooo A@PPr1   c                     j         J j        J j        j        d S t	          j                  } t          j        j        j        j	        dz             D ]}|j        j        k    r: j
                   j                            j                                 nj                            | dz             j                            d           |j        j	        k     r%j                            j         d                    j                            j        j        dz
  j         d         z             d S )Nr   r   r  rT  r\  )rR  r  r  r  rN   r  r   r   r  r  r  rr  r   )cursor_widthr   r  r   s     r2   position_cursorz1TerminalMenu._paint_menu.<locals>.position_cursorE  sH   2>>>=,,,z08#D$566L#()CT^E_bcEc#d#d 	X 	X"dj&GGGK 7888M''(9:::KMMMMM''s(:;;;##D)))"T^%???M''(G(VWWWM!4q!8D<[\g<h hiiiiir1   c                  2   j         J j        J j        sd S dt          t          t          f         ffd} j        sd S  |             \  }}t          j                  }j        j        }d}j        D ]\  }}}j        	                    d|j         d         z  z              |j
        v rj        	                    d           n9||v rj        	                    |           nj        	                    |           |j        j        k     r%j        	                    j         d                    ĉj        	                    d           j        	                    ||j        j        k     rdndz   j         d	         z             d S )
Nr<   c                    	 dt          j                    } t          j                    }t          j                    } 
j        |             
j        |            
|           |                                 |                                |                                	t          j        d                    t          j                            dj	                  }t          j        d                    t          j                            	fd|          }t          j        d                    t          j                            	fd	j	                  }||fS )
Nz([{<)]}>r  z[^{}]r   z[{}]+c                 :    |                      d          z   z   S r   r  )r   bracket_style_escape_codesreset_codess    r2   r  zsTerminalMenu._paint_menu.<locals>.print_multi_select_column.<locals>.prepare_multi_select_cursors.<locals>.<lambda>q  s     &@9??STCUCU&UXc&c r1   z[{brackets}]+|[^{brackets}\s]+)bracketsc                 x    |                      d          d         v rn|                      d          z   z   S r   r  )r   bracket_charactersr  &multi_select_cursor_style_escape_codesr  s    r2   r  zsTerminalMenu._paint_menu.<locals>.print_multi_select_column.<locals>.prepare_multi_select_cursors.<locals>.<lambda>v  sK    $??1--a04FFF 32Cooa((') "'" r1   )
r  StringIOr  r  getvaluer   r  r  r!   r  )bracket_style_escape_codes_io)multi_select_cursor_style_escape_codes_ioreset_codes_iocursor_with_brackets_only cursor_with_brackets_only_styledcursor_styledr  r  r  r  r  r   s         @@@@r2   prepare_multi_select_cursorszaTerminalMenu._paint_menu.<locals>.print_multi_select_column.<locals>.prepare_multi_select_cursors`  s   %/"02-<>KMM9!#DDKhiiiiD;Bkllll0000-J-S-S-U-U*9b9k9k9m9m6,5577,.FOOBI.@$A$ABBCIb- -) 466OOBI.@$A$ABBccccc-4 40
 !#5<<biPbFcFc<dd" " " " " " " -
! 
! %&FFFr1   r   r  rZ  r   rT  r   r\  )rR  r  r  r   r   r  rN   r  r  rr  r   r   r  )	r  checked_multi_select_cursorunchecked_multi_select_cursorr  r  r   r   r  r   s	          r2   print_multi_select_columnz;TerminalMenu._paint_menu.<locals>.print_multi_select_columnY  s   2>>>=,,,% G%S/ G G G G G G GB : IeIeIgIgF')F#D$566L)-)N&O)- 	X 	X%A##D<$:YZh:i+i$ijjj"d&888M''++++$(BBBM''(CDDDDM''(EFFF"T^%???M''(G(VWWWM%%%M 4>;U)U)UAA[\]1+>?    r1   r   )NTNr   )r   r   r   r   r   r   r   rR  r  rX   r   r  r  r  r'  r  r   r  r  r  r  r  flush)r   r  r  r  r  r  r  r  r  r  r  r  r  s   `           @r2   _paint_menuzTerminalMenu._paint_menu  s   &	$eCHo &	$ &	$ &	$ &	$ &	$ &	$R jn	G 	G$Xc]3	GCG	GV^_eVf	G	G 	G 	G 	G 	G 	GD	7C D	7 D	7 D	7 D	7 D	7 D	7 D	7L	73 	73 	7 	7 	7 	7 	7 	7>	7# 	7sTWx 	7]` 	7 	7 	7 	7 	7 	7 	70V	%s V	%3 V	%SV V	% V	% V	% V	% V	% V	%p	p 	p 	p 	p 	p 	p 	p 	p	j 	j 	j 	j 	j 	j 	j(<	 <	 <	 <	 <	 <	 <	~ .:::}((( !//11034D0E0E- ,14T5G$//J[J[5[1\1\DN.$(N$F!##DJ$EFFF!3!3!5!55!2!23H!I!II- 	_!%5%56KM]%^%^^! ,!]]3HJ_%`%``!) 	_!%5%56KM]%^%^^!3444 	(%%'''/D,r1   c                 4   | j         J | j        J | j        J | j        r| j        rt| j                            t          | j                  | j         d         z             | j                            t          | j                  | j         d         z             | j                            | j        dz   | j         d         z             n0| j                            | j        dz   | j         d         z             | j                                         d S )Nr\  r`  r   rT  )rR  r  r  r  r	  rr  rX   r  r   s    r2   _clear_menuzTerminalMenu._clear_menu  s,   .:::3???}(((# 
	  m##C(9$:$:T=\]h=i$ijjj##C(9$:$:T=\]j=k$klllM59T=\]j=kk    M59T=\]j=kk   	r1   Tignore_casec                 d   | j         J | j        J d| _        | j        r|                                  d| _        t          j        | j                                        d                              dd          }d| _        || j         v r| j         |         S |r|	                                S |S )NTFP   zutf-8ignore)rK   )
rT  r  r  r  r  r  r  ri  rW   r@   )r   r  codes      r2   _read_next_keyzTerminalMenu._read_next_key  s    .:::|'''!%' 	1+0D(wt|**,,b11888RR!&42222488 	::<<Kr1   .c                     d fd}dd}dt           t          t          t          t                            f         dd fd} j        J                                    j         j                                         d  _	        d  _
        d  _         j        J  j        r: j                            t           j                   j        d         z             d}	  |             t!          d          t!          d	          t!          d
          t!          d          t!          d          t!          d          t!           j                  t!           j                  t!           j                  t!           j        f          t!          d          d}	                                   t-          j        |          }                     d          } j        s j         ||           n|                                } j        ~ j        sw| j        v rn j                            |          } j        r j                            |           n j        r j                             |           nv| j!        _"        nh||d         v r j!        #                                 nC||d         v r j!        $                                 n||d         v r j!        %                                 n||d         v r j!        &                                 n||d         v rd j!        _'        n||d         v r j!        j(         j!        _'        n j        r<||d         v r2 j!        j"        $ j                              j!        j"                   nW||d         v rX j!        j"        D j)        s j        du s j        s- j*        du r$ j                             j!        j"                   | _	        n||d         v r j        sd}nd  j        _+        nԉ j        s=||d         v s j        |tX          k    rd j        _+        n j        | j        _+        n j        j+        J |dv r< j        j+        dk    r j        j+        d d          j        _+        nOd  j        _+        nBt[          |          dk    r/||d         v r j        j+        dk    s j        xj+        |z  c_+        [n"# t\          $ r}	 j/        r|	d}Y d }	~	nd }	~	ww xY w |              0                                  1                                 n7#  |              0                                  1                                 w xY w|s* j        j2        }
|
r j        r|
 _
        n|
d          _         j        r j
        n j        S ) Nr<   c                      dt           dt          t                   dd ffd} t          j        t          j        |            d S )Nsignumframer<   c                 P    j         r                                 d S d_        d S r   )r  r  r  )r  r  r   s     r2   handle_sigwinchzHTerminalMenu.show.<locals>.init_signal_handling.<locals>.handle_sigwinch  s4    ) 8$$&&&&&37D000r1   )r   r   r   signalSIGWINCH)r  r   s    r2   init_signal_handlingz/TerminalMenu.show.<locals>.init_signal_handling  sW    8 8HY4G 8D 8 8 8 8 8 8 M&/?;;;;;r1   c                  X    t          j         t           j        t           j                   d S r_   )r  r   SIG_DFLr0   r1   r2   reset_signal_handlingz0TerminalMenu.show.<locals>.reset_signal_handling  s    M&/6>:::::r1   menu_action_to_keysc                     t          t          j                  t          d          z  }|                                 D ]}||z  }d S r  )	frozensetrD  ascii_lowercasevalues)r  letter_keysrB  s      r2   remove_letter_keysz-TerminalMenu.show.<locals>.remove_letter_keys  sN    #F$:;;innLK+2244 $ $#$ $r1   rT  F)ry  r  r  k)rb  r  r  j)r   r  )r   r  )rm  r  )rd  r  )r  )menu_up	menu_downmenu_page_upmenu_page_down
menu_startmenu_endacceptr  quitsearch_startr  T)r  r  r  r  r  r  r   r  r  r  r  r  r   r   r   )3r   r   r   r   rR  rs  r  r   r   r  r  r  r  r	  rr  rX   r   r  r  r  r  r  copydeepcopyr  r   r@   r  indexr  r   r  r   r  r
  r   r   r   r   r  r  r  r  rv   r  rN   KeyboardInterruptr  r  rv  r   )r   r  r  r  menu_was_interruptedr  current_menu_action_to_keysnext_keyshortcut_menu_indexr  chosen_menu_indicess   `          r2   showzTerminalMenu.show  s   		< 		< 		< 		< 		< 		<	; 	; 	; 	;	$Dc(3->P9P4Q 	$VZ 	$ 	$ 	$ 	$ .:::$,O!!###"&$(!"&}((( 	iMD$5 6 69XYf9g ghhh$[	  """>?? !BCC #$9 : :"%&=">">!"455 122d/00 #D$; < <DO,, #T%5$7 8 8 00# #D=  """.2m<O.P.P+..5.AA< 04#3#;&&'BCCCC'~~//H#//UYUhIhIh*.*=*C*CH*M*M'- O++,?@@@- O O223FGGGG;NDJ88!<Y!GGGJ557777!<[!IIIJ557777!<^!LLLJ&&((((!<=M!NNNJ((****!<\!JJJ89DJ55!<Z!HHH8<
8VDJ55' &=H8STb8c,c,cz3?..tz/KLLL!<X!FFFz3? ?N#1U::$(O  ;8<8SW\8\8\ O//
0LMMM.6D+!<V!DDD< 8/3,3700 =#>~#NNN(0XAS5S5S3500)13;0<3???>11<3r997;|7OPSQSPS7TDL447;DL44!(++q00 $?$OOOTXT`TlprTrTr 00H<00ID=J ! 	( 	( 	(- #'      	(
 "!### "!#### 	E"&/"G" E% E0CD--.A!.DD+,0,>[t((DD[[s1    PS9 8U 9
TTU TU 4Vc                     | j         S r_   )r  r   s    r2   chosen_accept_keyzTerminalMenu.chosen_accept_key[      &&r1   c                 8    | j         | j        | j                  nd S r_   )r  rz   r   s    r2   chosen_menu_entryzTerminalMenu.chosen_menu_entry_  s!    >B>U>at!$"9::gkkr1   c                 V      j          t           fd j         D                       nd S )Nc              3   2   K   | ]}j         |         V  d S r_   )rz   )r   r   r   s     r2   r   z3TerminalMenu.chosen_menu_entries.<locals>.<genexpr>f  s+      ]]Z$$Z0]]]]]]r1   )r  r   r   s   `r2   chosen_menu_entriesz TerminalMenu.chosen_menu_entriesc  s>     (4 ]]]]4C\]]]]]]	
r1   c                     | j         S r_   )r  r   s    r2   chosen_menu_indexzTerminalMenu.chosen_menu_indexk  r#  r1   c                     | j         S r_   )r  r   s    r2   r  z TerminalMenu.chosen_menu_indiceso  s    ((r1   r   rK  )Lr-   r.   r/   r   r   r  rL  rW  r:  r   rB  rS  rR  rT  DEFAULT_ACCEPT_KEYSDEFAULT_CLEAR_MENU_ON_EXITDEFAULT_CLEAR_SCREENDEFAULT_CYCLE_CURSORDEFAULT_EXIT_ON_SHORTCUTDEFAULT_MENU_CURSORDEFAULT_MENU_CURSOR_STYLEDEFAULT_MENU_HIGHLIGHT_STYLEDEFAULT_MULTI_SELECTDEFAULT_MULTI_SELECT_CURSOR*DEFAULT_MULTI_SELECT_CURSOR_BRACKETS_STYLE!DEFAULT_MULTI_SELECT_CURSOR_STYLEDEFAULT_MULTI_SELECT_KEYS%DEFAULT_MULTI_SELECT_SELECT_ON_ACCEPTDEFAULT_PREVIEW_BORDERDEFAULT_PREVIEW_SIZEDEFAULT_PREVIEW_TITLEDEFAULT_QUIT_KEYSDEFAULT_SEARCH_CASE_SENSITIVEDEFAULT_SEARCH_HIGHLIGHT_STYLEr  )DEFAULT_SHORTCUT_BRACKETS_HIGHLIGHT_STYLE$DEFAULT_SHORTCUT_KEY_HIGHLIGHT_STYLEDEFAULT_SHOW_MULTI_SELECT_HINTDEFAULT_SHOW_SEARCH_HINTDEFAULT_SHOW_SHORTCUT_HINTS)DEFAULT_SHOW_SHORTCUT_HINTS_IN_STATUS_BAR DEFAULT_STATUS_BAR_BELOW_PREVIEWDEFAULT_STATUS_BAR_STYLEr   r   r   r   r   r   r   floatr   staticmethodr  r-  classmethodr  r  r  rM  r'  r^  r  rs  rv  r  r  r  r   r   r   r"  r%  r(  r*  r  r0   r1   r2   rr   rr      s	       LW LW LW LW LW LW LW LW\%> %> %> %> %> %> %> %>N{X {X {X {X {X {X {X {Xz~F ~F ~F ~F ~F ~F ~F ~F@'I'9' 	9' 	9	'
 	I' 	Y' 	)' 	Y' 	' 	' 	(' 	v' 	G' 	v' 	'  	V!'" 	'#' '$ 	u%'& 	''( 	v)'* 	!&+', 	 -'. 	I/'0 	91'2 	93'4 	95'6 	I7'8 	Y9': 	);'< 	Y='> 	?'@ 	6A'B 	UC'D 	5E' 'F #M' ' 'R " " +002233J!%!% &9#=1&*1!9%85N8T1#>Fp=^&+5N.SCG5FJ22#4).&C:X$6En@d'E59!9/3$?2[#(PT)I4L59Ut$ t$ t$smt$ c]	t$
 !t$ t$ smt$ t$ t$ c]t$ $HSM2t$ 'x}5t$ t$ !t$ -5Xc],Ct$  $,HSM#:!t$"  $#t$$ $HSM2%t$& (,'t$( &huS#X&?@)t$* +t$, "%XseSj-A(A"BC-t$. /t$0 1t$2 C=3t$4 #'5t$6  $7t$8 !)# 79t$: SM;t$< ,4HSM+B=t$> '/x}&=?t$@ !%At$B &.c]Ct$D Et$F  (}Gt$H "It$J ,0Kt$L !Mt$N U3xs
7K#KLMOt$P #'Qt$R #8C=1St$T c8C=012Ut$ t$ t$ t$l sm. (, 
#	   \" M# M# M M M \M& > > > [>& THSM Td T T T [T
 
 
 
 [
"      [ ;C ; ; ; [; :3 : : : [:o o o o*J J J J0    D D D DL   $ $ #    &D\huS%S/%9:; D\ D\ D\ D\L '8C= ' ' ' X' l8C= l l l Xl 
XeCHo%> 
 
 
 X
 '8C= ' ' ' X' )XeCHo%> ) ) ) X) ) )r1   rr   c                   2    e Zd ZdedefdZdededdfdZdS )AttributeDictattrr<   c                     | |         S r_   r0   )r   rM  s     r2   __getattr__zAttributeDict.__getattr__u  s    Dzr1   rc   Nc                     || |<   d S r_   r0   )r   rM  rc   s      r2   __setattr__zAttributeDict.__setattr__x  s    T


r1   )r-   r.   r/   r   r   rO  rQ  r0   r1   r2   rL  rL  t  s_              C D      r1   rL  c            	      t
   t          j        t           j        d          } |                     ddddd           |                     d	d
ddd           |                     ddddd           |                     dddt          d           |                     ddddt
          dd           |                     dddd                    t                    d            |                     d!d"dd#d$           |                     d%d&dd'd(           |                     d)dd*d                    t                    d+           |                     d,d-dd.d/           |                     d0dd1t          d2           |                     d3dd4d                    t                    d5           |                     d6dd7d                    t                    d8           |                     d9dd:d                    t                    d;           |                     d<dd=d>           |                     d?dd@dA           |                     dBdCddDdE           |                     dFddGdH           |                     dIddJt          t          dK           |                     dLddMt          dN           |                     dOddPd                    t                     dQ           |                     dRddSt"          dT           |                     dUddVd                    t$                    dW           |                     dXddYd                    t&                    dZ           |                     d[dd\d]           |                     d^dd_d`           |                     daddbdc           |                     ddddedf           |                     dgddhdi           |                     djddkdldm           |                     dnddodp           |                     dqdrddsdt           |                     dudvddwdx           |                     dyddzd                    t(                    d{           |                     d|dd}d~           |                     ddddd           |                     ddddd           |                     dddd           |                                 }|                    ddddd           |                    ddddd           | S )Nzh
%(prog)s creates simple interactive menus in the terminal and returns the selected entry as exit code.
)formatter_classdescriptionz-sz--case-sensitive
store_truecase_sensitivezsearches are case sensitive)actiondesthelpz-Xz--no-clear-menu-on-exitstore_falser  zdo not clear the menu on exitz-lz--clear-screenr  z)clear the screen before the menu is shownz--cursorstorecursorz$menu cursor (default: "%(default)s"))rW  rX  defaultrY  z-iz--cursor-indexr  r   zinitially selected item index)rW  rX  typer]  rY  z--cursor-stylecursor_style,zJstyle for the menu cursor as comma separated list (default: "%(default)s")z-Cz
--no-cyclecyclezdo not cycle the menu selectionz-Ez--no-exit-on-shortcutr  zdo not exit on shortcut keysz--highlight-stylehighlight_stylezRstyle for the selected menu entry as comma separated list (default: "%(default)s")z-mz--multi-selectr  z<Allow the selection of multiple entries (implies `--stdout`)z--multi-select-cursorr  z1multi-select menu cursor (default: "%(default)s")z$--multi-select-cursor-brackets-styler  zcstyle for brackets of the multi-select menu cursor as comma separated list (default: "%(default)s")z--multi-select-cursor-styler  zWstyle for the multi-select menu cursor as comma separated list (default: "%(default)s")z--multi-select-keysr  zOkey for toggling a selected item in a multi-selection (default: "%(default)s", z"--multi-select-no-select-on-acceptr  zdo not select the currently highlighted menu item when the accept key is pressed (it is still selected if no other item was selected before)z--multi-select-empty-okr  z_when used together with --multi-select-no-select-on-accept allows returning no selection at allz-pz	--previewr  zCommand to generate a preview for the selected menu entry. "{}" can be used as placeholder for the menu text. If the menu entry has a data component (separated by "|"), this is used instead.z--no-preview-borderr  z.do not draw a border around the preview windowz--preview-sizer  zamaximum height of the preview window in fractions of the terminal height (default: "%(default)s")z--preview-titler  z4title of the preview window (default: "%(default)s")z--search-highlight-styler  z9style of matched search patterns (default: "%(default)s")z--search-keyr  z~key to start a search (default: "%(default)s", "none" is treated a special value which activates the search on any letter key)z#--shortcut-brackets-highlight-styler  zBstyle of brackets enclosing shortcut keys (default: "%(default)s")z--shortcut-key-highlight-styler  z/style of shortcut keys (default: "%(default)s")z--show-multi-select-hintr  z*show a multi-select hint in the status barz--show-multi-select-hint-textr  zCustom text which will be shown as multi-select hint. Use the placeholders {multi_select_keys} and {accept_keys} if appropriately.z--show-search-hintrx   z%show a search hint in the search linez--show-search-hint-textr  zoCustom text which will be shown as search hint. Use the placeholders {key} for the search key if appropriately.z--show-shortcut-hintsr  z%show shortcut hints in the status barz--show-shortcut-hints-in-titler  Tz%show shortcut hints in the menu titlez--skip-empty-entriesr  z@Interpret an empty string in menu entries as an empty menu entryz-bz--status-barr  zstatus bar textz-dz--status-bar-below-previewr  z3show the status bar below the preview window if anyz--status-bar-styler  z6style of the status bar lines (default: "%(default)s")z--stdoutr  z{Print the selected menu index or indices to stdout (in addition to the exit status). Multiple indices are separated by ";".z-tz--titler  z
menu titlez-Vz	--versionprint_versionz!print the version number and exitr  *zthe menu entries to show)rW  nargsrY  z-rz--preselected_entriesr  zaComma separated list of strings matching menu items to start pre-selected in a multi-select menu.z-Rz--preselected_indicesr   zcComma separated list of numeric indexes of menu items to start pre-selected in a multi-select menu.)argparseArgumentParserRawDescriptionHelpFormatteradd_argumentr1  r   r"  r2  r3  r5  r6  r7  r8  rH  r;  r<  r?  r  r@  rA  rG  add_mutually_exclusive_group)parserr  s     r2   get_argumentparserrl  |  s   $ <  F  <LSp     !!,     8     #3     ,     233Y     l=wUvwww
+     566a     K     "+@     .1CDDr     %(:;;f      233_     ,,J     !$o	     _  
 
 
 =	     $p     %C     "%788H     "^  	 	 	 -0BCCQ     (+=>>>     "%9	     '*.     4	     !$      "4	     (04     !O	          $'B     122E     5     igLYYY
k,_Kn     	'C]^^^//11E	"p     
"r     Mr1   c                     t                      } t          d t          |                                                                           D                       }|j        s|j        st          d          |j        rd |j        D             |_        |j	        dk    r-t          |j	                            d                    |_	        nd |_	        |j        dk    r-t          |j                            d                    |_        nd |_        |j        dk    r-t          |j                            d                    |_        nd |_        |j        dk    r-t          |j                            d                    |_        nd |_        |j        dk    r-t          |j                            d                    |_        nd |_        |j        dk    r-t          |j                            d                    |_        nd |_        |j        dk    r-t          |j                            d                    |_        nd |_        |j        dk    r-t          |j                            d                    |_        nd |_        |j        dk    r-t          |j                            d                    |_        nd |_        |j                                        dk    rd |_        |j        rd|_        |j        rd|_        |j        -t7          |j                            d                    |_        nN|j        @t7          t=          t>          |j                            d                              |_        nd |_        |S )Nc                     i | ]\  }}||	S r0   r0   )r   rb   rc   s      r2   r   z#parse_arguments.<locals>.<dictcomp>  s    YYYe#uYYYr1   zNo menu entries given!c                 "    g | ]}|d k    r|ndS )NoneNr0   r   r  s     r2   r  z#parse_arguments.<locals>.<listcomp>  s$    UUUu&dUUUr1   r   r`  noneT) rl  rL  vars
parse_argsr`   rc  r  r7   r  r_  r   r  rb  r  r  r  r  r  r  r  r  r@   r  r  r  r  r  r   preselectedr   mapr   )rk  argss     r2   parse_argumentsrx    sS   !!FYYtF<M<M<O<O7P7P7V7V7X7XYYYZZD ;dl ; !9::: VUUUUUB!$"3"9"9#">">?? r!!$T%9%?%?%D%DEE#"b((&+D,G,M,Mc,R,R&S&S##&*#(B..,1$2S2Y2YZ]2^2^,_,_)),0)-3316t7]7c7cdg7h7h1i1i..15."" %d&;&A&A#&F&F G G $."44278_8e8efi8j8j2k2k//26/%++).t/M/S/STW/X/X)Y)Y&&)-&##!&t'='C'CC'H'H!I!I!%&((- (#'  + 8 > >s C CDD		!	-C)A)G)G)L)L M MNNKr1   c                     	 t                      } nr# t          $ r t          j        d           Y nRt          $ rF}t          t          |          t          j                   t          j        d           Y d }~nd }~ww xY w| j        rit          d	                    t          j                            t          j        d                   t                               t          j        d           	 t          d,i d| j        d| j        d| j        d| j        d| j        d	| j        d
| j        d| j        d| j        d| j        d| j        d| j        d| j        d| j        d| j        d| j        d| j         d| j!        d| j"        d| j#        d| j$        d| j%        d| j&        d| j'        d| j(        d| j)        d| j*        d| j+        d | j,        d!| j-        d"| j.        d#| j/        d$| j0        d%| j1        d&| j2        d'| j3        d(| j4        }n`# tj          tl          tn          f$ rF}t          t          |          t          j                   t          j        d           Y d }~nd }~ww xY w|8                                }|t          j        d           d S ts          |tt                    rR| j;        r,t          d)<                    d* |D                                  t          j        |d         d+z              d S |}| j;        rt          |d+z              t          j        |d+z              d S )-Nr   r  z{}, version {}ru   r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rx   r  r  r  r  r  r  r  r  r`  c              3   :   K   | ]}t          |d z             V  dS )r   N)r   rq  s     r2   r   zmain.<locals>.<genexpr>  s,      JJ%s519~~JJJJJJr1   r   r0   )=rx  
SystemExitsysexitr7   printr   r  rc  r  r  pathbasenameargv__version__rr   r  r  r  r  ra  r  r\  r_  rb  r  r  r  r  r  r  r  ru  r  r  r  r  rV  r  r  r  r  r  r  rx   r  r  r  r  r  r  r  r  r+   r5   r;   r   r  r   r  r"  )rw  r  terminal_menuchosen_entrieschosen_entrys        r2   mainr    sh           c!ff3:&&&&  %%bg&6&6sx{&C&C[QQRRR*$ &
 &
 &
&
#66&
 **&
 **	&

 &
 "22&
 &
 #//&
 "&!5!5&
 **&
 !% 8 8&
 04/V/V&
 '+&D&D&
 #'"<"<&
 #44&
  +/*L*L!&
" !% 0 0#&
$  ..%&
& !00'&
( **)&
* ,,+&
, #'"5"5-&
. $(#>#>/&
0 1&
2 /3.T.T3&
4 *.)J)J5&
6 $(#>#>7&
8 )-(H(H9&
: "22;&
< #'"<"<=&
> !% 8 8?&
@ /3.T.TA&
B  $66C&
D E&
F &*%B%BG&
H "22I&
J **K&
N -.?AVW   c!ff3:&&&& #''))Nnh// 	'{ LchhJJ>JJJJJKKKH^A&*+++++)L{ (lQ&'''H\A%&&&&&s2    B 	B <A;;B 4D2H' 'J><I??J__main__r   )`rf  r  rQ   r  r?   r  rO   r   r  r  rD  r8  r|  r   typesr   typingr   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   rg  ImportErrorr  r  r  rP   
__author__	__email____copyright____license____version_info__r"  rv  r   r  r,  r-  r.  r/  r0  r1  r2  r3  r4  r5  r6  r7  r8  r9  r:  r;  r<  r=  r>  r?  r  r@  rA  rB  rC  rD  rE  rF  rG  rE  	Exceptionr+   r5   r7   r9   r;   rB   r   rN   re   rg   rr   dictrL  rg  rl  rx  r  r-   r0   r1   r2   <module>r     s      				  				  				        



                                             $cNNNN c c c

@GGHYHYZZ
[
[abbc 
#	X hhss3 01122 ! !     . ,  $ -9 *$9 !( (, %  ! -  % !B  ,8 )'3 $!&   # ,0 )#(  4 !" 	 	 	 	 	y 	 	 		 	 	 	 		 	 	 		 	 	 	 	 	 	 		 	 	 	 		 	 	 		 	 	 	 	I 	 	 	#C # # # #3 3    .# (HS#X4F3GRUWZRZI[3[*\           &P) P) P) P) P) P) P) P)f.    D   RH3 R R R Rj7 7 7 7 7tB' B' B' B'J zDFFFFF s   $A) )B.,BB