
    jj                        d dl m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
  ej                  d      Z G d d	e
      Z G d
 de	e         Zy)    )annotationsN)CompositeCanvas   )Sizing)WidgetDecorationWidgetErrorWrappedWidgetc                      e Zd Zy)BoxAdapterErrorN)__name__
__module____qualname__     a/home/ubuntu/.cache/pipx/cdb5059130eadca/lib/python3.12/site-packages/urwid/widget/box_adapter.pyr   r      s    r   r   c                       e Zd ZU dZdgZded<   d fdZd fdZedd       Z	e	j                  d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ddZ xZS )
BoxAdapterzM
    Adapter for using a box widget where a flow widget would usually go
    rowsztyping.ClassVar[list[str]]no_cachec                    t        |d      r.t        j                  |j                         vrt	        |d      t
        |   |       || _        y)a  
        Create a flow widget that contains a box widget

        :param box_widget: box widget to wrap
        :type box_widget: Widget
        :param height: number of rows for box widget
        :type height: int

        >>> from urwid import SolidFill
        >>> BoxAdapter(SolidFill("x"), 5)  # 5-rows of x's
        <BoxAdapter flow widget <SolidFill box widget 'x'> height=5>
        sizingz is not a box widgetN)hasattrr   BOXr   r   super__init__height)self
box_widgetr   	__class__s      r   r   zBoxAdapter.__init__   sJ     :x(VZZz?P?P?R-R!ZN2F"GHH$r   c                @    i t         |          d| j                  iS )Nr   )r   _repr_attrsr   )r   r   s    r   r!   zBoxAdapter._repr_attrs,   s!    ?%'%'?4;;??r   c                R    t        j                  dt        d       | j                  S Nz_original stored as original_widget, keep for compatibility. API will be removed in version 5.0.   )
stacklevelwarningswarnDeprecationWarningoriginal_widgetr   s    r   r   zBoxAdapter.box_widget0   s%    m	

 ###r   c                J    t        j                  dt        d       || _        y r#   r&   )r   widgets     r   r   zBoxAdapter.box_widget9   s!    m	

  &r   c                6    t        t        j                  f      S N)	frozensetr   FLOWr+   s    r   r   zBoxAdapter.sizingB   s    &++((r   c                    | j                   S )z
        Return the predetermined height (behave like a flow widget)

        >>> from urwid import SolidFill
        >>> BoxAdapter(SolidFill("x"), 5).rows((20,))
        5
        )r   )r   sizefocuss      r   r   zBoxAdapter.rowsE   s     {{r   c                    |\  }t        | j                  d      sy | j                  j                  || j                  f      S )Nget_cursor_coords)r   _original_widgetr6   r   r   r3   maxcols      r   r6   zBoxAdapter.get_cursor_coordsQ   s=    	t,,.AB$$667LMMr   c                    |\  }t        | j                  d      sy | j                  j                  || j                  f      S )Nget_pref_col)r   r7   r;   r   r8   s      r   r;   zBoxAdapter.get_pref_colW   s<    	t,,n=$$1164;;2GHHr   c                Z    |\  }| j                   j                  || j                  f|      S r/   )r7   keypressr   )r   r3   keyr9   s       r   r=   zBoxAdapter.keypress]   s-    
 	$$--vt{{.CSIIr   c                    |\  }t        | j                  d      sy| j                  j                  || j                  f||      S )Nmove_cursor_to_coordsT)r   r7   r@   r   )r   r3   colrowr9   s        r   r@   z BoxAdapter.move_cursor_to_coordse   sC    	t,,.EF$$::FDKK;PRUWZ[[r   c                    |\  }t        | j                  d      sy| j                  j                  || j                  f|||||      S )Nmouse_eventF)r   r7   rD   r   )r   r3   eventbuttonrA   rB   r4   r9   s           r   rD   zBoxAdapter.mouse_eventk   sK     	t,,m<$$00&$++1FvWZ\_afggr   c                p    |\  }t        | j                  j                  || j                  f|            }|S r/   )r   r7   renderr   )r   r3   r4   r9   canvs        r   rH   zBoxAdapter.rendery   s7    
 	t44;;VT[[<QSXYZr   c                .    t        | j                  |      S )z+
        Pass calls to box widget.
        )getattrr*   )r   names     r   __getattr__zBoxAdapter.__getattr__   s     t++T22r   )r   r	   r   intreturnNone)rO   zdict[str, typing.Any])rO   r	   )r-   r	   rO   rP   )rO   zfrozenset[Sizing])F)r3   
tuple[int]r4   boolrO   rN   )r3   rQ   rO   z
int | None)r3   rQ   r>   strrO   z
str | None)r3   rQ   rA   rN   rB   rN   )r3   rQ   rE   rS   rF   rN   rA   rN   rB   rN   r4   rR   rO   zbool | None)r3   rQ   r4   rR   rO   r   )rL   rS   )r   r   r   __doc__r   __annotations__r   r!   propertyr   setterr   r   r6   r;   r=   r@   rD   rH   rM   __classcell__)r   s   @r   r   r      s    -38H(3&@ $ $ & &)NIJJ J 
	J\hh h 	h
 h h h 
h"   
	3r   r   )
__future__r   typingr'   urwid.canvasr   	constantsr   widget_decorationr   r   TypeVarr	   r   r   r   r   r   <module>r_      sG    "   (  </	k 	t3!-0 t3r   