
    jjI                    8   d dl mZ d dlZd dlmZ ddlmZmZmZ ddl	m
Z
 ddlmZ ddlmZ ej                  rd d	lmZ d d
lmZ ddlmZ  G d de      Z ej*                  d      Z G d d ed      ee         Z G d dee         Zd Zedk(  r e        yy)    )annotationsN)CompositeCanvas   )AlignSizingVAlign)Overlay)delegate_to_widget_mixin)WidgetDecoration)	TypedDict)Canvas)Widgetc                  6    e Zd ZU ded<   ded<   ded<   ded<   y)PopUpParametersModelintlefttopoverlay_widthoverlay_heightN)__name__
__module____qualname____annotations__     [/home/ubuntu/.cache/pipx/cdb5059130eadca/lib/python3.12/site-packages/urwid/widget/popup.pyr   r   '   s    	r   r   WrappedWidgetc                  N     e Zd Zd fdZddZd	dZd
dZd
dZdd fdZ xZ	S )PopUpLauncherc                2    t         |   |       d | _        y N)super__init___pop_up_widgetselforiginal_widget	__class__s     r   r#   zPopUpLauncher.__init__2   s    )"r   c                    t        d      )z
        Subclass must override this method and return a widget
        to be used for the pop-up.  This method is called once each time
        the pop-up is opened.
        "Subclass must override this methodNotImplementedErrorr&   s    r   create_pop_upzPopUpLauncher.create_pop_up6   s     ""FGGr   c                    t        d      )z
        Subclass must override this method and have it return a dict, eg:

        {'left':0, 'top':1, 'overlay_width':30, 'overlay_height':4}

        This method is called each time this widget is rendered.
        r*   r+   r-   s    r   get_pop_up_parametersz#PopUpLauncher.get_pop_up_parameters>   s     ""FGGr   c                N    | j                         | _        | j                          y r!   )r.   r$   _invalidater-   s    r   open_pop_upzPopUpLauncher.open_pop_upH   s    "002r   c                2    d | _         | j                          y r!   )r$   r2   r-   s    r   close_pop_upzPopUpLauncher.close_pop_upL   s    "r   c                    t         |   ||      }| j                  r6t        |      } |j                  | j                  fi | j                          |S r!   )r"   renderr$   r   
set_pop_upr0   )r&   sizefocuscanvr(   s       r   r7   zPopUpLauncher.renderP   sM    w~dE*"4(DDOOD//P43M3M3OPr   )r'   z[WrappedWidget]returnNone)r<   r   )r<   r   )r<   r=   F)r:   boolr<   zCompositeCanvas | Canvas)
r   r   r   r#   r.   r0   r3   r5   r7   __classcell__r(   s   @r   r   r   1   s(    #HH r   r   _original_widgetc                       e Zd Z eej
                  f      ZdZd fdZddZ	dddZ
ddZddZddZddZ	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd	Zddd
Z xZS )PopUpTargetTc                T    t         |   |       d | _        | j                  | _        y r!   )r"   r#   _pop_uprB   _current_widgetr%   s     r   r#   zPopUpTarget.__init__]   s%    )#44r   c           
        | j                   j                  ||      }|| _        |j                         x}r|\  }}\  }}}	| j                  |k7  rF|| _        t        || j                   t        j                  |t        j                  |	||      | _
        y | j                  j                  t        j                  |t        j                  |	||       y d | _        | j                   | _
        y )Nr:   )top_wbottom_walignwidthvalignheightr   r   )rL   rM   rN   rO   r   r   )rB   r7   _cache_original_canvas
get_pop_uprF   r	   r   LEFTr   TOPrG   set_overlay_parameters)
r&   r9   r:   r;   pop_upr   r   wr   r   s
             r   _update_overlayzPopUpTarget._update_overlayb   s    $$++D+>&*#__&&6&<B9D#9=.||q  '.!22**'!::)	($ $$;;**'!::) <   DL#'#8#8D r   c                `    | j                  ||       | j                  j                  ||      S )NrI   )rW   rG   r7   r&   r9   r:   s      r   r7   zPopUpTarget.render   s.    T5)##**4u*==r   c                \    | j                  |d       | j                  j                  |      S NT)rW   rG   get_cursor_coordsr&   r9   s     r   r\   zPopUpTarget.get_cursor_coords   s)    T4(##55d;;r   c                \    | j                  |d       | j                  j                  |      S r[   )rW   rG   get_pref_colr]   s     r   r_   zPopUpTarget.get_pref_col   s)    T4(##0066r   c                ^    | j                  |d       | j                  j                  ||      S r[   )rW   rG   keypress)r&   r9   keys      r   ra   zPopUpTarget.keypress   s+    T4(##,,T377r   c                `    | j                  |d       | j                  j                  |||      S r[   )rW   rG   move_cursor_to_coords)r&   r9   xys       r   rd   z!PopUpTarget.move_cursor_to_coords   s-    T4(##99$1EEr   c                f    | j                  ||       | j                  j                  ||||||      S r!   )rW   rG   mouse_event)r&   r9   eventbuttoncolrowr:   s          r   rh   zPopUpTarget.mouse_event   s5     	T5)##//eVS#uUUr   c                \    | j                  ||       | j                  j                  |      S r!   )rW   rG   packrY   s      r   rn   zPopUpTarget.pack   s)    T5)##((..r   )r'   r   r<   r=   )r9   tuple[int, int]r:   r?   r<   r=   r>   )r9   ro   r:   r?   r<   r   )r9   ro   r<   tuple[int, int] | None)r9   ro   r<   r   )r9   ro   rb   strr<   z
str | None)r9   ro   re   r   rf   r   )r9   ro   ri   rq   rj   r   rk   r   rl   r   r:   r?   r<   zbool | None)NF)r9   rp   r:   r?   r<   ro   )r   r   r   	frozensetr   BOX_sizing_selectabler#   rW   r7   r\   r_   ra   rd   rh   rn   r@   rA   s   @r   rD   rD   X   s    &GK5
9>><78F
V
V 
V 	
V
 
V 
V 
V 

V/ /r   rD   c                 ,    dd l } | j                          y )Nr   )doctesttestmod)rw   s    r   _testry      s    OOr   __main__)
__future__r   typingurwid.canvasr   	constantsr   r   r   overlayr	   widgetr
   widget_decorationr   TYPE_CHECKINGtyping_extensionsr   r   r   r   TypeVarr   r   rD   ry   r   r   r   r   <module>r      s   * #  ( , ,  , /	+#y  /$,-?@BRS`Ba $NK/"=1 K/\ z	G r   