
    kj                     $   d dl Z d dlZd dlmZ d dlmZ d dlmZ dZ G d dej                        Z	 G d dej                        Z G d	 d
ej                        Z G d dej                        Z G d dej                   ej"                        Zy)    N)layoutwidget)signals   c                   6     e Zd Z fdZd Zd Zd Zd Z xZS )KeyItemc                 l    |||c| _         | _        | _        t        |   | j                                y N)walkerbindingfocusedsuper__init__
get_widget)selfr
   r   r   	__class__s       l/home/ubuntu/.cache/pipx/cdb5059130eadca/lib/python3.12/site-packages/mitmproxy/tools/console/keybindings.pyr   zKeyItem.__init__   s-    28'7/T\4<*+    c           	         t        j                  | j                  j                        j	                         }dt        j                  d| j                  rdndfg      fdt        j                  d| j                  j                  fg      fdt        j                  dd	j                  | j                  j                        fg      ft        j                  d
|fg      g}t        j                  |      S )N   focusz>> z   
   title   	highlight
text)textwrapdedentr   commandstripurwidTextr   keyjoincontextsColumns)r   cmdpartss      r   r   zKeyItem.get_widget   s    oodll22399;

Wt||eGHIJgt||'7'789:;k499T\\5J5J+KLMNOJJ'	
 }}U##r   c                 <    | j                   d   j                         S )N   )_wget_edit_textr   s    r   r,   zKeyItem.get_edit_text   s    wwqz''))r   c                      y)NT r-   s    r   
selectablezKeyItem.selectable   s    r   c                     |S r	   r/   )r   sizer#   s      r   keypresszKeyItem.keypress!   s    
r   )	__name__
__module____qualname__r   r   r,   r0   r3   __classcell__r   s   @r   r   r      s    ,$*r   r   c                   D    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
dd	Zy
)KeyListWalkerc                    || _         || _        d| _        d | _        t	        |j
                  j	                  d            | _        | j                  d       t        j                  j                  | j                         y )Nr   all)keybinding_focus_changemasterindexfocusobjlistkeymapbindings	set_focusr   keybindings_changeconnectsig_modified)r   r>   r=   s      r   r   zKeyListWalker.__init__&   s`    '>$
V]]//67q""**4+<+<=r   c                     t        | j                  j                  j                  d            | _        | j	                  t        | j                  t        | j                        dz
               | j                          y )Nr<   r*   )	rA   r>   rB   rC   rD   minr?   len	_modifiedr-   s    r   rG   zKeyListWalker.sig_modified0   sR    T[[//44U;<s4::s4=='9A'=>?r   c                 6    | j                   j                         S r	   )	focus_objr,   r-   s    r   r,   zKeyListWalker.get_edit_text5   s    ~~++--r   c                 T    | j                   |   }t        | ||| j                  k(        S r	   )rC   r   r?   )r   posr   s      r   _getzKeyListWalker._get8   s(    --$tWcTZZ&788r   c                 2    | j                   | j                  fS r	   )rM   r?   r-   s    r   	get_focuszKeyListWalker.get_focus<   s    ~~tzz))r   c                     | j                   |   }|| _        | j                  | j                        | _        | j                  j                  |j                  xs d       | j                          y )N )rC   r?   rP   rM   r=   sendhelprK   )r   r?   r   s      r   rD   zKeyListWalker.set_focus?   sR    --&
4::.$$))',,*<"=r   c                 j    |t        | j                        dz
  k\  ry|dz   }| j                  |      |fS )Nr*   NN)rJ   rC   rP   r   rO   s     r   get_nextzKeyListWalker.get_nextF   s7    #dmm$q((Agyy~s""r   c                 >    |dz
  }|dk  ry| j                  |      |fS )Nr*   r   rX   )rP   rY   s     r   get_prevzKeyListWalker.get_prevL   s(    Ag7yy~s""r   c                     |r't        t        t        | j                                    S t        t        | j                              S r	   )reversedrangerJ   rC   )r   reverses     r   	positionszKeyListWalker.positionsR   s2    E#dmm"4566T]]+,,r   N)F)r4   r5   r6   r   rG   r,   rP   rR   rD   rZ   r\   ra   r/   r   r   r:   r:   %   s/    >
.9*##-r   r:   c                   (     e Zd Z fdZ fdZ xZS )KeyListc                 h    || _         t        ||      | _        t        |   | j                         y r	   )r>   r:   r
   r   r   r   r>   r=   r   s      r   r   zKeyList.__init__Z   s*    #F,CD%r   c                 X   |dk(  r| j                         \  }}n|dk(  r,| j                  d       | j                  j                          nP|dk(  rK| j                  t	        | j                  j
                        dz
         | j                  j                          t        |   ||      S )Nm_selectm_startr   m_endr*   )rR   rD   r
   rK   rJ   rC   r   r3   )r   r2   r#   focidxr   s        r   r3   zKeyList.keypress_   s    *~~'HCINN1KK!!#G^NN3t{{334q89KK!!#wc**r   )r4   r5   r6   r   r3   r7   r8   s   @r   rc   rc   Y   s    &

+ 
+r   rc   c                   0     e Zd Z fdZd Zd Zd Z xZS )KeyHelpc                     || _         t        | 	  | j                  d             | j	                  d       |j                  | j                         y )NrT   F)r>   r   r   widget
set_activerF   sig_modre   s      r   r   zKeyHelp.__init__m   s=    R)''5r   c                 p    t        j                  d      }|rdnd}t        j                  ||      | _        y )NzKey Binding Helpheadingheading_inactive)r!   r"   AttrMapheader)r   valhstyles       r   rp   zKeyHelp.set_actives   s-    JJ)* 	&8mmAu-r   c                     | j                   j                  j                         \  }}t        j                  t        j                  ||      D cg c]  }t        j                  |       c}      S c c}w r	   )r>   uiget_cols_rowsr!   ListBoxr   wrapr"   )r   txtcols_is        r   ro   zKeyHelp.widgetx   sL    ++....0a}}X]]35MNejjmNOONs   A2c                 0    | j                  |      | _        y r	   )ro   body)r   r   s     r   rq   zKeyHelp.sig_mod|   s    KK$	r   )r4   r5   r6   r   rp   ro   rq   r7   r8   s   @r   rm   rm   l   s    6.
P%r   rm   c                   >     e Zd ZU dZdZeed<    fdZd Zd Z	 xZ
S )KeyBindingszKey Bindingskeybindingsfocus_positionc                     t        j                  d       }t        ||      }t        |   t        ||      t        |fg       || _        y )Nc                      y r	   r/   )r   s    r   <lambda>z&KeyBindings.__init__.<locals>.<lambda>   s    r   )utils_signals
SyncSignalrm   r   r   rc   HELP_HEIGHTr>   )r   r>   r=   ohr   s       r   r   zKeyBindings.__init__   sP    "/":":;L"MV45 78b!	
 r   c                     | j                   dk7  ry | j                  d   d   }|j                  j                         d   j                  S )Nr   )r   contentsr
   rR   r   )r   fs     r   get_focused_bindingzKeyBindings.get_focused_binding   sD    !#MM!Qxx!!#A&...r   c                 z   |dk(  rZ| j                   dz   t        | j                        z  | _         | j                  d   d   j	                  | j                   dk(         d }d }t        |      dk(  r| j                  |d      }| j                  || j                   d|      }| j                  j                  ||      S )Nm_nextr*   r      T)r   )	r   rJ   widget_listr   rp   get_item_rowsget_item_sizer   r3   )r   r2   r#   	item_rowstsizes        r   r3   zKeyBindings.keypress   s    (?#'#6#6#:c$BRBR>S"SDMM!Q**4+>+>!+CDC 	t9>**4t*<I""4)<)<dINzz""5#..r   )r4   r5   r6   r   keyctxint__annotations__r   r   r3   r7   r8   s   @r   r   r      s"    EF
//r   r   )r   r!   mitmproxy.tools.consoler   r   mitmproxy.utilsr   r   
WidgetWrapr   
ListWalkerr:   r}   rc   Framerm   PileLayoutWidgetr   r/   r   r   <module>r      sv      0 + 4e 21-E$$ 1-h+emm +&%ekk %(#/%**l77 #/r   