
    ^hk4                       S SK Jr  S SKJrJrJr  S SKJr  S SKJ	r	  S SK
JrJr  S SKJrJr  S SKJr  S SKJr  S S	KJrJrJrJrJrJrJr  S S
KJr  S SKJrJ r   S SK!J"r"  S SK#J$r$  SSK%J&r&  SS/r'\r( " S S5      r) " S S5      r*g)    )annotations)CallableIterableSequence)get_app)	Condition)OneStyleAndTextTupleStyleAndTextTuples)KeyBindingsKeyBindingsBase)KeyPressEvent)Keys)AnyContainerConditionalContainer	ContainerFloatFloatContainerHSplitWindow)FormattedTextControl)
MouseEventMouseEventType)
get_cwidth)Shadow   )BorderMenuContainerMenuItemc                  |    \ rS rSrSr  S         SS jjrSS jrSS jrSSS jjr\	SS j5       r
SS	 jrS
rg)r   #   zg
:param floats: List of extra Float objects to display.
:param menu_items: List of `MenuItem` objects.
Nc                  ^  UT l         UT l        S/T l        [        5       n[        S$U 4S jj5       n[        S$U 4S jj5       nUR                  SUS9S%U 4S jj5       nUR                  SUS9S%U 4S jj5       n	UR                  S	US9S%U 4S
 jj5       n
UR                  SUS9UR                  SUS9S%S j5       5       nUR                  SUS9UR                  SUS9UR                  SUS9S%U 4S jj5       5       5       nUR                  SUS9S%U 4S jj5       nUR                  SUS9S%U 4S jj5       nUR                  S	US9S%U 4S jj5       nUR                  S5      S%U 4S jj5       n[        T R                  USSS9T l        [        ST R                  SS9T l
        T R                  S5      nT R                  S5      nT R                  S5      n[        S$U 4S jj5       n[        [        T R                  U/5      [        SS[        [!        US9US9S9[        USSS[        [!        US9U[	        U 4S  j5      -  S9S!9[        USSS[        [!        US9U[	        U 4S" j5      -  S9S!9/U=(       d    / -   US#9T l        g )&Nr   c                 4   > [        T R                  5      S:H  $ Nr   lenselected_menuselfs   V/home/james-whalen/.local/lib/python3.13/site-packages/prompt_toolkit/widgets/menus.pyin_main_menu,MenuContainer.__init__.<locals>.in_main_menu7   s    t))*a//    c                 4   > [        T R                  5      S:  $ r#   r$   r'   s   r)   in_sub_menu+MenuContainer.__init__.<locals>.in_sub_menu;   s    t))*Q..r,   left)filterc                X   > [        STR                  S   S-
  5      TR                  S'   g )Nr   r   )maxr&   eventr(   s    r)   _left%MenuContainer.__init__.<locals>._leftA   s*    $'4+=+=a+@1+D$EDq!r,   rightc                   > [        [        TR                  5      S-
  TR                  S   S-   5      TR                  S'   g )Nr   r   )minr%   
menu_itemsr&   r4   s    r)   _right&MenuContainer.__init__.<locals>._rightE   s;    $'DOO$q($*<*<Q*?!*C%Dq!r,   downc                <   > TR                   R                  S5        g Nr   )r&   appendr4   s    r)   _down%MenuContainer.__init__.<locals>._downK   s    %%a(r,   zc-czc-gc                L    U R                   R                  R                  5         g)zLeave menu.N)applayout
focus_last)r5   s    r)   _cancel'MenuContainer.__init__.<locals>._cancelO   s     II'')r,   c                n   > [        TR                  5      S:  a  TR                  R                  5         gg)zGo back to parent menu.r   N)r%   r&   popr4   s    r)   _back%MenuContainer.__init__.<locals>._backW   s/    
 4%%&*""&&( +r,   c                0  > TR                  [        TR                  5      S-
  5      R                  (       a  TR                  R	                  S5        g[        TR                  5      S:X  a  TR                  S   [        TR
                  5      S-
  :  a  [        [        TR
                  5      S-
  TR                  S   S-   5      /Tl        TR
                  TR                  S      R                  (       a  TR                  R	                  S5        gggg)zgo into sub menu.r   r      N)	_get_menur%   r&   childrenrA   r;   r:   r4   s    r)   _submenu(MenuContainer.__init__.<locals>._submenu_   s     ~~c$"4"459:CC""))!, D&&'1,&&q)C,@1,DD DOO,q0$2D2DQ2G!2KL&" ??4#5#5a#89BB&&--a0 C E -r,   upc                  > TR                  [        TR                  5      S-
  5      nTR                  S   n[        UR                  5       VVs/ s H!  u  p4X2:  d  M  UR
                  (       a  M  UPM#     nnnU(       a  US   TR                  S'   g[        TR                  5      S:X  a  TR                  R                  5         ggs  snnf )z;Select previous (enabled) menu item or return to main menu.rO   N)rP   r%   r&   	enumeraterQ   disabledrK   )r5   menuindexiitemprevious_indexesr(   s         r)   _up_in_submenu.MenuContainer.__init__.<locals>._up_in_submenup   s     >>#d&8&8"9A"=>D&&r*E  )7 7GA9 %)]] 7     )9")=""2&T''(A-""&&( . s   C
C
2C
c                8  > TR                  [        TR                  5      S-
  5      nTR                  S   n[        UR                  5       VVs/ s H!  u  p4X2:  d  M  UR
                  (       a  M  UPM#     nnnU(       a  US   TR                  S'   ggs  snnf )z Select next (enabled) menu item.rO   rV   r   N)rP   r%   r&   rW   rQ   rX   )r5   rY   rZ   r[   r\   next_indexesr(   s         r)   _down_in_submenu0MenuContainer.__init__.<locals>._down_in_submenu   s     >>#d&8&8"9A"=>D&&r*E  )77GA9 %)]] 7   )5a""2& s   BB2Benterc                   > TR                  [        TR                  5      S-
  5      nUR                  (       a5  U R                  R
                  R                  5         UR                  5         gg)zClick the selected menu item.r   N)rP   r%   r&   handlerrE   rF   rG   )r5   r\   r(   s     r)   _click&MenuContainer.__init__.<locals>._click   sN     >>#d&8&8"9A"=>D||		  ++- r,   TF)key_bindings	focusableshow_cursorr   class:menu-bar)heightcontentstylerO   c                 Z   > [        5       R                  R                  T R                  :H  $ N)r   rF   current_windowwindowr'   s   r)   	has_focus)MenuContainer.__init__.<locals>.has_focus   s     9##22dkkAAr,   )body)rn   r1   )xcursorycursorrn   c                 4   > [        T R                  5      S:  $ r#   r$   r'   s   r)   <lambda>(MenuContainer.__init__.<locals>.<lambda>       C0B0B,Cq,Hr,   )attach_to_windowrw   rx   allow_cover_cursorrn   c                 4   > [        T R                  5      S:  $ )NrO   r$   r'   s   r)   rz   r{      r|   r,   )rn   floatsri   )returnbool)r5   Er   None)rv   r;   r&   r   r   addr   _get_menu_fragmentscontrolr   rs   rR   r   r   r   r   r   	container)r(   rv   r;   r   ri   kbr*   r.   r6   r<   rB   rH   rL   rR   r^   rb   rg   submenusubmenu2submenu3rt   s   `                    r)   __init__MenuContainer.__init__)   s    	$S ]		0 
	0 
	/ 
	/
 
|	,	F 
-	F 
	-	 
.	
 
|	,	) 
-	) 
l	+	l	+	* 
, 
,	* 
{	+	k	*	k	*	) 
+ 
+ 
,	)
 
	,	1 
-	1  
[	)	) 
*	)$ 
{	+	9 
,	9 
	 
	 ,$$2SX
 At||CST--"==#==#		B 
	B ( KK	   0 &G 4Y %,  '+0 &H 5(#$HI J
 %-  '+0 &H 5(#$HI J
'@ |A B &U+
r,   c                    U R                   U R                  S      n[        U R                  SS  5       H  u  p4X1:  d  M   UR                  U   nM     U$ ! [         a    [        S5      s s  $ f = f)Nr   r   debug)r;   r&   rW   rQ   
IndexErrorr   )r(   levelrY   r[   rZ   s        r)   rP   MenuContainer._get_menu   st    t11!45!$"4"4QR"89HAy-==/D :  " -#G,,-s   AA10A1c                  ^ ^ [        5       R                  R                  T R                  5      mT(       d  S/T l        SUU 4S jjn/ n[        T R                  5       H  u  p4UR                  U" X45      5        M     U$ )Nr   c              3     >^ #    SUU U4S jjnSSU4v   T TR                   S   :X  a  T(       a
  SSU4v   SnOSnX1R                  U4v   g 7f)	Nc                  > U R                   [        R                  :H  nU R                   [        R                  :X  d  U(       a  T(       a  [	        5       nU(       d{  UR
                  R                  TR                  5      (       a,  TR                  T/:X  a  UR
                  R                  5         O%UR
                  R                  TR                  5        T/Tl        g g g rq   )
event_typer   
MOUSE_MOVE
MOUSE_DOWNr   rF   rt   rs   r&   rG   focus)mouse_eventhoverrE   focusedr[   r(   s      r)   mouse_handlerJMenuContainer._get_menu_fragments.<locals>.one_item.<locals>.mouse_handler   s    #...2K2KK**n.G.GG ")C :://<<#11aS8 #

 5 5 7JJ,,T[[9*+D&   r,   rl    r   [SetMenuPosition] class:menu-bar.selected-itemr   r   r   r   )r&   text)r[   r\   r   ro   r   r(   s   `   r)   one_item3MenuContainer._get_menu_fragments.<locals>.one_item   sZ     - -" $S-88D&&q))g*B>>6(M11s   A	Ar[   intr\   r   r   zIterable[OneStyleAndTextTuple])r   rF   rt   rs   r&   rW   r;   extend)r(   r   resultr[   r\   r   s   `    @r)   r   !MenuContainer._get_menu_fragments   sl    )"",,T[[9 "#D	2 	24 &( 1GAMM(1+, 2 r,   c                >   ^ ^ SUU 4S jjn[        [        U5      SS9$ )Nc                 N  >^^ / n T[        TR                  5      :  Gas  TR                  T5      mTR                  (       GaP  U R	                  S[
        R                  45        U R	                  S[
        R                  TR                  S-   -  45        U R	                  S[
        R                  45        U R	                  S5         TR                  TS-      m      SUUUU4S jjn[        TR                  5       H  u  p#U R                  U" X#5      5        M     U R	                  S[
        R                  45        U R	                  S[
        R                  TR                  S-   -  45        U R	                  S[
        R                  45        U $ ! [         a    Sm Nf = f)N
class:menu   r   
r   rV   c              3    >^ ^#    SU UUU4S jjnT T:X  a  Sv   SnOSnS[         R                  4v   TR                  S:X  a*  US-   [         R                  TR                  S-   -   U4v   O0US	TR                   3R                  TR                  S-   5      U4v   TR                  (       a  US
U4v   OUS	U4v   T T:X  a  Sv   S[         R                  4v   Sv   g 7f)Nc                  > TR                   (       a  g U R                  [        R                  :H  nU R                  [        R                  :X  d  U(       ai  [        5       nU(       d<  TR                  (       a+  UR                  R                  5         TR                  5         g TR                  S TS-    T/-   Tl	        g g r#   )
rX   r   r   r   MOUSE_UPr   rf   rF   rG   r&   )r   r   rE   r[   r\   r   r(   s      r)   r   [MenuContainer._submenu.<locals>.get_text_fragments.<locals>.one_item.<locals>.mouse_handler  s    #}} !'$/$:$:n>W>W$WE + 6 6.:Q:Q Q#(&-i',$'JJ$9$9$;$(LLN9=9K9K(3%!):&)*:,D$6 $)r,   )z[SetCursorPosition]r   r   r   r   -zclass:menu-border   r   >)r   r   r   r   )r   VERTICALr   
HORIZONTALwidthljustrQ   )r[   r\   r   ro   r   rY   selected_itemr(   s   ``  r)   r   DMenuContainer._submenu.<locals>.get_text_fragments.<locals>.one_item  s     , ,& -"==$BE$&E+V__==99+ %(; ;#)#4#4

Q#G"H -#  !&"#DII; 5 5djj1n E -#   ==#(#}"==#(#}"==-";;+V__==((s   CC!r   )r%   r&   rP   rQ   rA   r   TOP_LEFTr   r   	TOP_RIGHTr   rW   r   BOTTOM_LEFTBOTTOM_RIGHT)r   r   r[   r\   rY   r   r   r(   s       @@r)   get_text_fragments2MenuContainer._submenu.<locals>.get_text_fragments  sd   )+Fs4--..~~e,===MM<"ABMM<1B1BdjjSTn1U"VWMM<1A1A"BCMM*-+(,(:(:519(E3)3)&.3)73) 3)j $-T]]#;hq&78 $< MM<1C1C"DEMM<1B1BdjjSTn1U"VWMM<1D1D"EFM} & +(*+s   F F$#F$r   )ro   r   r
   )r   r   )r(   r   r   s   `` r)   rR   MenuContainer._submenu  s&    I	 I	V *+=>lSSr,   c                .    U R                   R                  $ rq   )r   r   r'   s    r)   r   MenuContainer.floatsY  s    ~~$$$r,   c                    U R                   $ rq   )r   r'   s    r)   __pt_container__MenuContainer.__pt_container__]  s    ~~r,   )rv   r   r   r;   r&   rs   )NN)
rv   r   r;   zlist[MenuItem]r   list[Float] | Noneri   zKeyBindingsBase | Noner   r   )r   r   r   r   r   )r   )r   r   r   r   )r   r   )r   r   )__name__
__module____qualname____firstlineno____doc__r   rP   r   rR   propertyr   r   __static_attributes__ r,   r)   r   r   #   sw     &*/3k
k
 #k
 #	k

 -k
 
k
Z
'RLT\ % %r,   c                  V    \ rS rSr     S           SS jjr\SS j5       rSrg)	r   ia  Nc                b    Xl         X l        U=(       d    / U l        X@l        XPl        SU l        g r@   )r   rf   rQ   shortcutrX   r   )r(   r   rf   rQ   r   rX   s         r)   r   MenuItem.__init__b  s+     	 B  r,   c                ^    U R                   (       a  [        S U R                    5       5      $ g)Nc              3  L   #    U  H  n[        UR                  5      v   M     g 7frq   )r   r   ).0cs     r)   	<genexpr>!MenuItem.width.<locals>.<genexpr>t  s     A=az!&&))=s   "$r   )rQ   r3   r'   s    r)   r   MenuItem.widthq  s!    ==A4==AAAr,   )rQ   rX   rf   r   r   r   )r   NNNF)r   strrf   zCallable[[], None] | NonerQ   zlist[MenuItem] | Noner   zSequence[Keys | str] | NonerX   r   r   r   )r   r   )r   r   r   r   r   r   r   r   r   r,   r)   r   r   a  sf     -1*.04 + (	
 .  
  r,   N)+
__future__r   typingr   r   r   "prompt_toolkit.application.currentr   prompt_toolkit.filtersr   "prompt_toolkit.formatted_text.baser	   r
   'prompt_toolkit.key_binding.key_bindingsr   r   (prompt_toolkit.key_binding.key_processorr   prompt_toolkit.keysr    prompt_toolkit.layout.containersr   r   r   r   r   r   r   prompt_toolkit.layout.controlsr   prompt_toolkit.mouse_eventsr   r   prompt_toolkit.utilsr   prompt_toolkit.widgetsr   baser   __all__r   r   r   r   r,   r)   <module>r      sn    " / / 6 , W P B $   @ B + )  
 { {|	 r,   