Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes14kdownloads
pile.cpython-313.pyc334 linesDownload Raw Back to __pycache__
1�

2��j���8�SSKJr SSKrSSKrSSKJrJr SSKJrJ	r	J3r4 SSKJr SSK
Jr SSKJr SS	KJrJr SS5KJrJrJr SSKJrJr SSKJrJrJr \R>(aSS
K J!r!J"r"J#r# SSK$J%r% "SS\5r&"SS\5r'"SS\\\5r(g)�)�annotationsN)�chain�repeat)�
CanvasCombine�CompositeCanvas�SolidCanvas)�Command)�remove_defaults)�is_mouse_press�)�Sizing�6WHSettings)� WidgetContainerListContentsMixin�WidgetContainerMixin�_ContainerElementSizingFlag)�MonitoredFocusList�
MonitoredList)�Widget�WidgetError�
WidgetWarning)�Iterable�Iterator�Sequence)�Literalc��\rSrSrSrSrg)�	PileError�zPile related errors.�N��__name__�7__module__�__qualname__�__firstlineno__�__doc__�__static_attributes__r��WD:\code\apps\devtools\python\user_packages\Python313\site-packages\urwid/widget/pile.pyrrs��r&rc��\rSrSrSrSrg)�PileWarning�zPile related warnings.rNrrr&r'r)r)s�� r&r)c�V^�\rSrSrSrS*SjrS+S,U4SjjjrS-U4SjjrS.U4SjjrS/Sjr	S0Sjr8S1S	jrS1S9jr\
S5r\RS5r\
S
5r\RS5r\
S2Sj5r\RS3Sj5r\\R(S4S4Sjj5r\
S5Sj5r\RS6Sj5rS5SjrS6Sjr\
S5r\RS5r\
S0Sj5r\RS7Sj5rS8SjrS+S9SjjrS:S;SjjrS:S<SjjrS:S=SjjrS>S?U4S jjjr S@S!jr!S:SAS"jjr"SBS#jr#S:SCS$jjr$SDS%jr%SES&jr&SFS'jr'SGS(jr(S)r)U=r*$)H�Pile�z910A pile of widgets stacked vertically from top to bottom11c��UR(d)[[R[R45$SnSnSn[5n[R[R-[R-n[R[R-n[UR5GH�ununup�UR5n[RnU	[R:Xa�U[R-n[RU;aU[R-n[RU;aU[R-n[RU;a;U[R[R1-(aU[R-nO�U	[R:XaNU[R-n[RU;a&U[R-nU[R-nO^[R n[RU;aU[R-n[RU;aU[R-nX�-(du["R$"SUSU	R&SSR)U5R+53[,SS9 [[R[R45s $U[R-(a,UR/[R5 X�-(dSn O<U[R-(aSnU[R-(dGM�SnGM� U(dLU(aUR/[R5 U(aUR/[R5 [U5$)	a�Sizing supported by widget.12 13:return: Calculated widget sizing14:rtype: frozenset[Sizing]15 16Due to the nature of container with mutable contents, this method cannot be cached.17 18Rules:19* WEIGHT BOX -> BOX20* GIVEN BOX -> FLOW (height is known) & BOX (can be shrinked/padded)21* PACK BOX -> Unsupported22 23* WEIGHT FLOW -> FLOW24* GIVEN FLOW -> Unsupported25* PACK FLOW -> FLOW26 27* WEIGHT FIXED -> Need also FLOW or/and BOX to properly render due to width calculation28* GIVEN FIXED -> Unsupported29* PACK FIXED -> FIXED (widget knows its size)30 31>>> from urwid import BigText, ProgressBar, SolidFill, Text, Thin3x3Font32>>> font = Thin3x3Font()33 34# BOX-only widget35>>> Pile((SolidFill("#"),))36<Pile box widget (1 item)>37 38# GIVEN BOX -> BOX/FLOW39>>> Pile(((10, SolidFill("#")),))40<Pile box/flow widget (1 item)>41 42# FLOW-only43>>> Pile((ProgressBar(None, None),))44<Pile flow widget (1 item)>45 46# FIXED -> FIXED47>>> Pile(((WHSettings.PACK, BigText("0", font)),))48<Pile fixed widget (1 item)>49 50# FLOW/FIXED -> FLOW/FIXED51>>> Pile(((WHSettings.PACK, Text("text")),))52<Pile fixed/flow widget (1 item)>53 54# FLOW + FIXED widgets -> FLOW/FIXED55>>> Pile((ProgressBar(None, None), (WHSettings.PACK, BigText("0", font))))56<Pile fixed/flow widget (2 items) focus_item=0>57 58# GIVEN BOX + FIXED widgets -> BOX/FLOW/FIXED (GIVEN BOX allows overriding its height & allows any width)59>>> Pile(((10, SolidFill("#")), (WHSettings.PACK, BigText("0", font))))60<Pile widget (2 items) focus_item=0>61 62# Invalid sizing combination -> use fallback settings (and produce warning)63>>> Pile(((WHSettings.WEIGHT, 1, BigText("0", font)),))64<Pile box/flow widget (1 item)>65 66# Special case: empty pile widget sizing is impossible to calculate67>>> Pile(())68<Pile box/flow widget ()>69FzSizing combination of widget z not supported: � �|���70stacklevelT)�contents�	frozensetr
�BOX�FLOW�setr�FIXED�	enumerate�sizing�NONEr�WEIGHT�	WH_WEIGHT�GIVEN�WH_GIVEN�WH_PACK�warnings�warn�name�join�upperr)�add)
�self�71strict_box�has_flow�	has_fixed�	supported�box_flow_fixed�72flow_fixed�idx�widget�	size_kind�_size_weight�w_sizing�flags
             r'r;�Pile.sizing$s���x�}�}��f�j�j�&�+�+�6�7�7��73����	�!$��	�
(�+�+�.I�.N�.N�N�Ql�Qr�Qr�r�	�1�5�5�8S�8Y�8Y�Y�74�8A�$�-�-�8P�4�C�4�&�3�9��}�}��H�.�3�3�D��J�-�-�-��3�=�=�=���:�:��)��7�;�;�;�D��;�;�(�*��7�<�<�<�D��<�<�8�+��F�J�J����;T�0T��7�=�=�=�D���j�.�.�.��3�<�<�<���:�:��)��7�;�;�;�D��7�<�<�<�D��3�:�:���;�;�(�*��7�<�<�<�D��<�<�8�+��7�=�=�=�D��(��
�
�3�C�5�8H����HX�XY�Z]�Zb�Zb�ck�Zl�Zr�Zr�Zt�Yu�v�� ��75!�&�*�*�f�k�k�!:�;�;��1�5�5�5��
�
�f�j�j�)��(�!%�J���1�6�6�6����1�7�7�7�7� �	�Y9Q�\���
�
�f�k�k�*���
�
�f�l�l�+���#�#r&c��>^�STl[TT]	5 [5TlTRRTR5 TRRU4Sj5 TRRTR5 [U5GH�up4Un[U[5(d/TRRU[R S445 GOUS["R$[R&1;a2UupeTRRU[R&S445 O�[)U5S:Xd'US["R*[R,1;a5USSupuTRRU[R,U445 OJUS[R :Xa$UupgnTRRXVU445 O[/SU<35eUcUR15(aUn[U[25(aGM�[4R6"U<S	3[8S76S9 GM� TR(a77UbUTlSTlg)a�78:param widget_list: child widgets79:type widget_list: iterable80:param focus_item: child widget that gets the focus initially.81    Chooses the first selectable widget if unset.82:type focus_item: Widget or int83 84*widget_list* may also contain tuples such as:85 86(*given_height*, *widget*)87    always treat *widget* as a box widget and give it *given_height* rows, where given_height is an int88(``'pack'``, *widget*)89    allow *widget* to calculate its own height by calling its :meth:`rows` method,90    i.e. treat it as a flow widget.91(``'weight'``, *weight*, *widget*)92    if the pile is treated as a box widget then treat widget as a box93    widget with a height based on its relative weight value, otherwise treat the same as (``'pack'``, *widget*).94 95Widgets not in a tuple are the same as (``'weight'``, ``1``, *widget*)`96 97.. note:: If the Pile is treated as a box widget there must be at least98    one ``'weight'`` tuple in :attr:`widget_list`.99Fc�$>�TR5$�N)�_invalidate)�frHs �r'�<lambda>�Pile.__init__.<locals>.<lambda>�s���D�<L�<L�<Nr&rrN������z!initial widget list item invalid � is not a Widgetr1r2)�_selectable�super�__init__r�	_contents�set_modified_callback�_contents_modified�set_focus_changed_callback�set_validate_contents_modified�_validate_contents_modifiedr:�100isinstance�tupler4�appendrr=r
r7�PACK�lenr9r?r�101selectablerrBrCr)�focus�pref_col)	rH�widget_list�102focus_item�i�original�wrZ�height�	__class__s	`       �r'rb�
Pile.__init__�s����B!���
����
� �	
��	
���,�,�T�-D�-D�E����1�1�2N�O����5�5�d�6V�6V�W�$�[�1�K�A��A��a��'�'��
�
�$�$�a�*�*;�*;�Q�)?�%@�A��1��&�+�+�z���7�7�����
�
�$�$�a�*�/�/�4�)@�%A�B��Q��1���!�����z�7G�7G�(H� H��b�c�F�	���
�
�$�$�a�*�*:�*:�F�)C�%D�E��1���*�*�*� ���1��
�
�$�$�a�V��%5�6��"C�H�<� P�Q�Q��!�a�l�l�n�n��103��a��(�(��
�
���%5�6��PQ�R�'2�*�=�=�Z�3�#�D�J���
r&c�>�[UR5S:�aS[UR5S3nOUR(aSnOSn/[TU]
5QUP$)Nr�(z items)z(1 item)z())rmr4ra�_repr_words)rH�contents_stringrws  �r'r{�Pile._repr_words�sU����t�}�}���!� !�#�d�m�m�"4�!5�W�=�O�
�]�]�(�O�"�O�8���$�&�8��8�8r&c�>�0[TU]5ES[UR5S:�aUROS0En[U[R5$)Nrrr)ra�_repr_attrsrmrc�focus_positionr104r,rb)rH�attrsrws  �r'r�Pile._repr_attrs�sJ���q�5�7�&�(�q�,�s�SW�Sa�Sa�Ob�ef�Of��8K�8K�lp�q���u�d�m�m�4�4r&c#��# �/nURH�unup4U[R:XaURXB45 M0U[R:Xa#UR[RU45 MgU[R105:XdM}US:XaURU5 M�UR[R106XB45 M� SU4v� SUR(aUROS4v� g7f)Nrrqrr)rcrr?rkrlr=r�)rHrq�107w_instancer;�amounts     r'�
__rich_repr__�Pile.__rich_repr__�s����108
�		�-1�N�N�(�J�(����)�)�)��"�"�F�#7�8��:�?�?�*��"�"�J�O�O�Z�#@�A��:�,�,�,��Q�;��&�&�z�2��&�&�109�(9�(9�6�'N�O�-;��[�(�(��4�>�>�D�/�/�t�K�K�s
�BC6�A(C6c�,�[UR5$rX)rmrc�rHs r'�__len__�Pile.__len__s���4�>�>�"�"r&c�f�[SUR55UlUR5 g)z\Recalculate whether this widget should be selectable whenever the contents has been changed.c3�F# �UHupUR5v� M g7frX)rn)�.0ru�os   r'�	<genexpr>�*Pile._contents_modified.<locals>.<genexpr>s���H�-�$�!�q�|�|�~�~�-�s�!N)�anyr4r`rYr�s r're�Pile._contents_modifieds%���H�$�-�-�H�H������r&c	���/nUH�nUunupg[U[R[R[R1;USL=(a' [U[[45(+=(d US:45(dM~URU5 M� U(a[SU<35eg![[4a-n[SU35RUR5UeSnAff=f)Nrzadded content invalid: )r�rrlr?r=ri�int�floatrk�	TypeError�110ValueErrorr�with_traceback�
__traceback__)	rH�slc�	new_items�
invalid_items�item�_w�t�n�excs	         r'rh� Pile._validate_contents_modifieds���LN�
�	h�!��!�111��F�Q���*�/�/�:�3C�3C�Z�EV�EV�!W�W��$��U�112�1�s�E�l�0K�,K�,T�q�ST�u����"�(�(��.�"���5�m�5F�G�H�H����:�&�	h��5�c�U�;�<�K�K�C�L]�L]�^�dg�g��	h�s�A<B0�B0�0C-�(C(�(C-c�^^�[R"S[SS9 [STR55mUU4SjnTRU5 T$)z�113A list of the widgets in this Pile114 115.. note:: only for backwards compatibility. You should use the new116    standard container property :attr:`contents`.117��only for backwards compatibility. You should use the new standard container property `contents`.API will be removed in version 5.0.r]r2c3�*# �UH	upUv� M g7frXr)r�rur�s   r'r��#Pile.widget_list.<locals>.<genexpr>5s���7����1��s�c�>�TTlgrX)rq��mlrHs��r'�
user_modified�'Pile.widget_list.<locals>.user_modified7s���!�D�r&�rBrC�DeprecationWarningrr4rd�rHr�r�s` @r'rq�Pile.widget_list'sL���	�
�
�
2���		118��7����7�
7��	"�	� � ��/��	r&c��URn[U[UR[	S[119RS44555VVVs/sHunupEX54PM
 snnnUlU[U5:aX lggs snnnf�Nr)r��ziprr4rrr=rm)rH�widgetsr��newru�optionss      r'rqr�=s����,�,��(+���d�m�m�V�T�J�4E�4E�q�3I�,J�%K�L�(�120�(�#��l�q��N�(�121��
��C��L�(�"0��)��122s�A?c�^^�[R"S[SS9 [STR55mUU4SjnTRU5 T$)z�123A list of the options values for widgets in this Pile.124 125.. note:: only for backwards compatibility. You should use the new126    standard container property :attr:`contents`.127r�r]r2c3��# �UHYunup#[R[R[R[R1280R
X"5U4v� M[ g7frX)rr?r
r9rlr7�get)r�rurZrvs    r'r��"Pile.item_types.<locals>.<genexpr>YsL���129�#0���;�A�������j�o�o�v�{�{�
K�
O�
O�PQ�
U�W]�^�"/�s�A!A#c�>�TTlgrX)�130item_typesr�s��r'r��&Pile.item_types.<locals>.user_modified_s131��� �D�Or&r�r�s` @r'r��Pile.item_typesKsU���	�
�
�
2���		132��133�#'�-�-�134�135��	!�	� � ��/��	r&c��[R"S[SS9 URn[	XR1365VVVVs/sH[uup4upVU[R[R[R[R0RX35U44PM] snnnnUlU[U5:aX lggs snnnnf)Nr�r]r2)rBrCr�r�r�r4r
r9rr?r7rlr�rm)rHr�r��new_t�137new_heightrur�s       r'r�r�es����
�
�
2���		138��,�,��8;�:�}�}�7U�139�7U�3�$�%�l�q��&�,�,�140� 0� 0�&�+�+�z���O�S�S�TY�a�cm�n�o�7U�141��
��C�142�O�+�"0��,��	143s�A"C144c��UR$)a�145The contents of this Pile as a list of (widget, options) tuples.146 147options currently may be one of148 149(``'pack'``, ``None``)150    allow widget to calculate its own height by calling its151    :meth:`rows <Widget.rows>` method, i.e. treat it as a flow widget.152(``'given'``, *n*)153    Always treat widget as a box widget with a given height of *n* rows.154(``'weight'``, *w*)155    If the Pile itself is treated as a box widget then156    the value *w* will be used as a relative weight for assigning rows157    to this box widget. If the Pile is being treated as a flow158    widget then this is the same as (``'pack'``, ``None``) and the *w*159    value is ignored.160 161If the Pile itself is treated as a box widget then at least one162widget must have a (``'weight'``, *w*) options value, or the Pile will163not be able to grow to fill the required number of rows.164 165This list may be modified like a normal list and the Pile widget166will updated automatically.167 168.. seealso:: Create new options tuples with the :meth:`options` method169�rcr�s r'r4�
Pile.contentsus��F�~�~�r&c� �XRSS&grXr�)rH�cs  r'r4r��s�����q�r&rc���U[R:Xa[RS4$U[R[R1;aUbX4$[	SU<SU<35e)a170Return a new options tuple for use in a Pile's :attr:`contents` list.171 172:param height_type: ``'pack'``, ``'given'`` or ``'weight'``173:param height_amount: ``None`` for ``'pack'``, a number of rows for174    ``'fixed'`` or a weight value (number) for ``'weight'``175Nz!invalid combination: height_type=z, height_amount=)rrlr?r=r)�height_type�
height_amounts  r'r��Pile.options�sb��"�*�/�/�)��O�O�T�*�*��:�+�+�Z�->�->�?�?�M�D]��/�/��;�K�?�JZ�[h�Zk�l�m�mr&c�^�UR(dgURURS$)z4the child widget in focus or None when Pile is emptyNr)r4r�r�s r'ro�176Pile.focus�s(���}�}���}�}�T�0�0�1�!�4�4r&c��[U[5(aXlg[UR5Hunup4X:XdMX l g [SU<35e)a177Set the item in focus, for backwards compatibility.178 179.. note:: only for backwards compatibility. You should use the new180    standard container property :attr:`focus_position`.181    to set the position by integer index instead.182 183:param item: element to focus184:type item: Widget or int185N�#Widget not found in Pile contents: )rir�r�r:r4r��rHr�rsru�_optionss     r'ror��sW���d�C� � �"&��� )�$�-�-� 8��A�}���y�&'�#��!9��>�t�h�G�H�Hr&c��[R"S[SS9 UR(dgURURS$)z�186Return the widget in focus, for backwards compatibility.  You may187also use the new standard container property .focus to get the188child widget in focus.189��for backwards compatibility.You may also use the new standard container property .focus to get the child widget in focus.API will be removed in version 5.0.r]r2Nr)rBrCr�r4r�r�s r'�	get_focus�Pile.get_focus�sC��	�
�
�
2�
��	190��}�}���}�}�T�0�0�1�!�4�4r&c���[R"S[SS9 [U[5(aXlg[
UR5Hunup4X:XdMX l g [SU<35e)Nr�r]r2r�)	rBrCr�rir�r�r:r4r�r�s     r'�	set_focus�Pile.set_focus�sp���
�
�
2�
��	191��d�C� � �"&��� )�$�-�-� 8��A�}���y�&'�#��!9��>�t�h�G�H�Hr&c�N�[R"S[SS9 UR$�Nz�only for backwards compatibility.You should use the new standard container properties `focus` and `focus_position` to get the child widget in focus or modify the focus position.API will be removed in version 4.0.r]r2�rBrCr�ror�s r'rr�Pile.focus_item�s'���
�
�
2�
��
	192��z�z�r&c�D�[R"S[SS9 Xlgr�r�)rH�new_items  r'rrr�s"���
�
�
2�
��
	193��194r&c�f�UR(d[S5eURR$)zw195index of child widget in focus.196Raises :exc:`IndexError` if read when Pile is empty, or when set to an invalid index.197z No focus_position, Pile is empty)r4�198IndexErrorror�s r'r��Pile.focus_positions'���}�}��?�@�@��}�}�"�"�"r&c���US:dU[UR5:�a[SU35eXRlg![a-n[SU35R	UR1995UeSnAff=f)zN200Set the widget in focus.201 202position -- index of child widget to be made focus203rz!No Pile child widget at position N)rmr4r�r�r�r�ro)rH�positionr�s   r'r�r�s��	x��!�|�x�3�t�}�}�+=�=� �#D�X�J�!O�P�P� >�'�
�
����	x��@��204�K�L�[�[�\_�\m�\m�n�tw�w��	x�s�-A�205A8�(A3�3A8c���UR5(dgUR(dgURXR5S9u p#URX0R5 UR206$)z4Return the preferred column for the cursor, or None.N�ro)rnr4�get_rows_sizes�_update_pref_col_from_focusr�rp)rH�size�_�	size_argss    r'�get_pref_col�Pile.get_pref_col+s[����� � ���}�}���-�-�d�/�/�:K�-�L���1��(�(��3F�3F�)G�H��}�}�r&c��[R"S[SS9 URUunupgU[R207:XaU(dgUS4$U(d[
SUSUS35eUSnU[R:XaX�4$U[R:Xa0[U5S:XaU(dURX5nX�U4$U4$[
S	U35e)208zE209Return a size appropriate for passing to self.contents[i][0].render210z�get_item_size is going to be deprecated and can be removed soon.This method is not used by the urwid codebase and `get_rows_sizes` is used for the similar purposes.r]r2rrzElement z using parameters z& and do not have full size informationzUnsupported item height rules: )rBrC�PendingDeprecationWarningr4rrlrr?r=rm�
get_item_rows)	rHr�rsro�	item_rowsr�rZrv�maxcols	         r'�
get_item_size�Pile.get_item_size7s���	�
�
�
s�%��		211��-�-��*���K�Q��212��������G�:����h�q�c�);�A�3�>d�e�f�f��a����213� � � ��#�#��214�!�!�!��4�y�A�~� � $� 2� 2�4� ?�I��!��-�-��9���9�!��=�>�>r&c215�$^^^�UR(dg0m0m0m/n/n0n/n0n[UR5GH�ununup�UR5nU=(a URU:HnU	[R216:Xa�[RU;a URSU5uTU'TU'STU'[RU;aURX�U45 U[R[R1-(d[SUSU	R535eM�U	[R:XaLU217TU'[RU;aURU5 GM-[SUSU	R535eU218S::a-STU'STU'[RU;aSTU'GMxSX�'GM[RU;a�U[R[R1-(a�URSU5up�U
TU'[RU;aVURU219/5RU5 URU2205 URX�5 [!XjU5Xj'GM>URX�U45 GMT[RU;aURX�U45 GM~[SU	S	U35e T(d[S2215e[!TR#55nUH'up�nUTU'UR%U4U5TU'U4TU'M) U(a[[!SUR'555nUH5n[![)UU-S-5S
5nUUHnUTU'X�4TU'M M7 UHnUTU'UTU4TU'M [+U4Sj[-[/T5555[+U4Sj[-[/T5555[+U4Sj[-[/T55554$)z�Get rows widths, heights and render size parameters222 223Fixed case expect widget sizes calculation with several cycles for unknown height cases.224)rrrrzUnsupported sizing � for r�r)rrzUnsupported combination of z, z&No widgets providing width informationc3�.# �UHupX!-v� M
 g7frXr)r��weightrvs   r'r��-Pile._get_fixed_rows_sizes.<locals>.<genexpr>�s���*j�Qi�~�v�6�?�Qi�s���?rc3�.># �UH225nTUv� M g7frXr)r�rO�widthss  �r'r�r��s����<�);�#�&��+�);���c3�.># �UH226nTUv� M g7frXr�r�rO�heightss  �r'r�r�������>�*=�3�'�#�,�*=�r�c3�.># �UH227nTUv� M g7frXr�r�rO�w_h_argss  �r'r�r�������@�+?�C�(�3�-�+?�r�)r4r:r;rorrlr
r9�packr7rkrrFr?r6�228setdefault�max�values�rows�itemsr�rj�rangerm)rHro�flow�box�weighted�weights�weight_max_sizesrOrPrQ�size_weightrS�focused�widthrv�	max_width�max_weighted_coefficientr�r�rr�s                  @@@r'�_get_fixed_rows_sizes�Pile._get_fixed_rows_sizes_s�����}�}��!#��"$��HJ��/1����)+����+-��7@����7O�3�C�3�&�2�9��}�}��H��4��229�230�f� 4�G��J�O�O�+��<�<�8�+�06���B��0H�-�F�3�K����$&�H�S�M��;�;�(�*��K�K��g� 6�7��6�<�<����"=�=�#�&9�(��5����IZ�H[�$\�]�]�>��j�.�.�.�*�����:�:��)��J�J�s�O�#�&9�(��5����IZ�H[�$\�]�]���!���s�� �����;�;�(�*�$(�H�S�M�$*�H�M�����)�h�&�*�*�f�k�k�9R�.R� &���B�� 8�
��#��s���:�:��)��'�'��R�8�?�?��D��N�N�;�/�$�/�/��D�47�8H�8U�W]�4^�$�1��K�K��g� 6�7�����(����V�'�2�3��"=�i�[��8�*� U�V�V�_8P�b��D�E�E���
�
��(�	�$(� �F��#�F�3�K�!�;�;�	�|�W�=�G�C�L�&�L�H�S�M�%)�231�'*�*j�Qa�Qg�Qg�Qi�*j�'j�$�*���S�!9�F�!B�S�!H�I�1�M��#�F�+�C�#)�G�C�L�%.�$7�H�S�M�,�+��C�#�F�3�K�&����5�H�S�M��232
�<��s�6�{�);�<�<��>�%��G��*=�>�>��@�5��X��+?�@�@�233�	234r&c���USnUR(dU4SS4$U4[UR5-n/n/nURn[UR5GH�unun	up�[	U	[2355(aU	R
5nOG[R"U	<S3[SS9 [[R[R45nU=(a X�:Hn
U236[R:Xa%UR!U5 UR!X;45 M�[RU;a5UR!U	R#U4U
S95 UR!U45 GM[R$U;aLU237[R&:Xa8UR!U	R)SU
5S5 UR!S5 GMh[R"S	US238USU239R+5S[RR+5S
3	[SS9 UR!U	R#U4U
S95 UR!U45 GM� U[-U5[-U54$)z�Get rows widths, heights and render size parameters240 241Flow case is the simplest one: minimum cycles in the logic and no widgets manipulation.242Here we can make some shortcuts243rr�rr_r1r2r�r�Unusual widget � sizing r��#). Assuming wrong sizing and using � for height calculation)r4rmr�r:rirr;rBrCr)r5r
r7r6rr?rkr	r9rlrrFrj)rHr�ror�r�r�rr�rsrurZrvrSrs              r'�_get_flow_rows_sizes�Pile._get_flow_rows_sizes�s����a����}�}��9�d�B�&�&�!'�	�C��
�
�,>� >����CE���,�,��#,�T�]�]�#;��A���;�A��!�V�$�$��8�8�:���
�
���%5�6��PQ�R�$�f�k�k�6�:�:�%>�?���3�� 3�G��J�$�$�$����v�&����� 0�1�����(����q�v�v�v�i�w�v�?�@�����	�*�����)�a�:�?�?�.B����q�v�v�b�'�2�1�5�6�����#��
�
�%�a�S���244�%����	�{�K7�7=�{�{�7H�7H�7J�6K�Kb�d�� �	����q�v�v�v�i�w�v�?�@�����	�*�5$<�8��g���h��8�8r&c�J^^^�U(dURUS9$[U5S:XaURXS9$Uup4UR(dU4U4S4$UnU4[UR5-n0m0n0mURm[UR5GH�unun	up�[
U	[5(aU	R5nOG[R"U	<S3[SS9 [[R[R45nU=(a UT:Hn
U245[ R":XaUTU'X;4TU'X[-nM�U246[ R$:Xd[U5S:Xa�[RU;aU4nO[R&U;aU247[ R$:XaSnOT[R"SUSUS	U248R)5S249[RR)5S3	[SS9 U4nU	R+X�5SnUTU'UTU'X_-nGM�U(aX�U'GM�STU'US4TU'GM� [-UR/55nUS::GaTU;a�/n/nTR15H9unnU(dMUT:aUR3U5 M(UR3U5 M; [U5[U5-250nU(dS
[5USSS2U55nOUUS:�a%/USUQS[5USSS2UUS55Q7nO*/USUS-251S2QS[5UUS-252SS2U55Q7nUHnTUSsnTU'X[-
nUS:�dM O [7US5n[9UU4SjS9HTnUS:XaSnO<[;[=U5UU-U-S-5nU(dUT:XaSnUU-nUUU-nUTU'UU4TU'MV U[?U4Sj[A[T5555[?U4Sj[A[T55554$)z3Get rows widths, heights and render size parametersr�rrr_r1r2rrr�rrrc3�6# �UHoHo"v� M M g7frXr�r��pair�elements   r'r��&Pile.get_rows_sizes.<locals>.<genexpr>?s���\�/G�t�W[�G�7�W[�7�/G���N�����c3�6# �UHoHo"v� M M g7frXrr!s   r'r�r$Cs���`�*K�$�[_�PW�g�[_�g�*K�r%c3�6# �UHoHo"v� M M g7frXrr!s   r'r�r$Hs���c�*N�$�^b�SZ�g�^b�g�*N�r%c�>�UT:gU4$rXr)rOr�s �r'r[�%Pile.get_rows_sizes.<locals>.<lambda>Ss���S�N�5J�C�4Pr&)�keyr�c3�.># �UH253nTUv� M g7frXrr�s  �r'r�r$drr�c3�.># �UH254nTUv� M g7frXrrs  �r'r�r$err�)!rrmrr4r�r:rirr;rBrCr)r5r
r7r6rr?rlr9rFr�sumrr255rkr�r�sortedr�r�rjr)rHr�ror��maxrow�	remainingr�rrsrurZrvrSr�w_h_arg�item_height�256sum_weight�before�afterrO�offset�indexesr	r�r�rs                       @@@r'r��Pile.get_rows_sizes�s,�����-�-�E�-�:�:��t�9��>��,�,�T�,�?�?�����}�}��9�v�i��+�+��	�!'�	�C��
�
�,>� >��"$��#%��HJ���,�,��#,�T�]�]�#;��A���;�A��!�V�$�$��8�8�:���
�
���%5�6��PQ�R�$�f�k�k�6�:�:�%>�?���3��^� 3�G��J�$�$�$�#���257�%�.�����#�	��j�o�o�%��T��a���;�;�(�*�7=�i�G��\�\�X�-�!�z���2F� �G��M�M�)�!��H�X�J�e�A�G�G�I�;�O;�;A�;�;�;L�;L�;N�:O�Of�h�#�#$�	� &�i�G��f�f�W�6�q�9��(���258�%�����(�	��$������259�%�q�k����G$<�J����*�+�260���>�n��8��F��E�&�}�}����V��6��^�+��
�
�c�*����S�)� /���[�3�u�:�-�F��\�s�5��2��;��/G�\���!����G�V�_��`�#�e�D�b�D�k�6�&�'�?�*K�`���261��2���262�R�/�0��c�#�e�F�Q�J�4D�"�4D�.E�v�*N�c���263��'.�s�|�Q�$������#�	��q�=��	��	�1�%�	��(�(P�Q�C��A�~����5��+�h�s�m�;�j�H�3�N�O����~� 5��D��T�!�	��h�s�m�+�264��G�C�L�#�T�N�H�S�M�R� 
��>�%��G��*=�>�>��@�5��X��+?�@�@�265�	266r&c�>�U(a[TU]X5$URX5up4n[U5[	U54$)zGet packed sized for widget.)rarr�rr.)rHr�ror�r�r�rws      �r'r�	Pile.packhs=�����7�<��,�,�!�0�0��=�����F��S��\�*�*r&c�<�[URX5S5$)z�A list of the number of rows used by each widget in self.contents.267 268This method is a normally used only by `get_item_size` for the BOX case..269r)�listr��rHr�ros   r'r��Pile.get_item_rowsos��270�D�'�'��4�Q�7�8�8r&c�,�URX5up4n/n[[XEUR55HVunup�up�URU271:HnSn
US:�aU272RX�=(a US9n
U
(dMCUR
X�U45 MX U(d[SUS/USSQSP7S5$[U5n[U5S:XaHUSUR5:wa1[U5nURSUSUR5-2735 U$)Nrr�r/rr])
r�r:r�r4ro�renderrkrrrmr	r�pad_trim_top_bottom)rHr�ro�_widthsr�r��combinelistrsrv�w_sizerur��274item_focus�canv�outs               r'rA�Pile.rendervs275��276'+�&9�&9�$�&F�#��)���+4�S��T�]�]�5[�+\�'�A�'�������q��J��D���z��x�x��.B�277�x�C���t��"�"�D�Z�#8�9�,]���s�D��G�^�t�A�B�x�^��^�A�->�?�?��K�(���t�9��>�d�1�g�����3�!�#�&�C��#�#�A�t�A�w�����';�<��278r&c�"�UR5(dg[URS5(dgURnUR	USS9up4nURRXR5=nbUupxUS:�aU[
USU5-
nXx4$g)z2Return the cursor coordinates of the focus widget.N�get_cursor_coordsTr�r)rn�hasattrror�r�rKr.)	rHr�rsrCr�r��coords�x�ys	         r'rK�Pile.get_cursor_coords�s������ � ���t�z�z�#6�7�7������&*�&9�&9�$�d�&9�&K�#��)��j�j�2�2�9�<�@�@�F�M��D�A��1�u��S���!��%�%���4�K�r&c�<�[URX5S5$r�)r.r�r>s   r'r	�	Pile.rows�s���4�&�&�t�3�A�6�7�7r&c�,�UR(dU$URnURXR5S9upEnUR5(aQURRXcU5nURU[R[R1;aU$URU[R:Xa[[US-279SS55nO+[[US-[UR555nUGHnURUSR5(dM+URX`R5 X�l[URS5(d gXXn	URU[R:Xa[[U	S-280SS55n281O[[U	55n282U283H>nURRX`RUR U5(dM=  g  g U$)zdPass the keypress to the widget in focus.284 285Unhandled 'up' and 'down' keys may cause a focus change.286r�rr&r�move_cursor_to_coordsN)r4r�r�rnro�keypress�_command_mapr	�UP�DOWNrjrrmr�rLrTrp)rHr�r+rsrCr�r��287candidates�jr	�rowlist�rows            r'rU�
Pile.keypress�s���288�}�}��J�����&*�&9�&9�$�o�o�FW�&9�&X�#��)��?�?����*�*�%�%�i�l�C�8�C�� � ��%�g�j�j�'�,�,�-G�G��289����S�!�W�Z�Z�/��u�Q��U�B��3�4�J��u�Q��U�C��
�
�,>�?�@�J��A��=�=��#�A�&�1�1�3�3���,�,�Y�7J�7J�-K�L�"#���4�:�:�'>�?�?���:�D�� � ��%����3���d�Q�h��B� 7�8����d��,�����:�:�3�3�I�>Q�>Q�4R�TX�Ta�Ta�cf�g�g�����#�(�290r&c��[URS5(dgURRU5=nbX lgg)z+Update self.pref_col from the focus widget.r�N)rLror�rp)rHrErps   r'r�� Pile._update_pref_col_from_focus�s=���t�z�z�>�2�2���291�292�/�/��7�7�H�D�$�M�Er&c�@�X lSnSnURXS9upgn[[XxUR55Hun	up�up�XZ-U:�a O	XZ-
nM gUR5(dg[
US5(aURX�X5-2935SLagX�lg)z#Capture pref col and set new focus.Trr�FrT)	rpr�r:r�r4rnrLrTr�)rHr��colr\ro�wrowrCr�r�rs�rrErur�s              r'rT�Pile.move_cursor_to_coords�s����
�����&*�&9�&9�$�&9�&L�#��)�&/��G��
�
�0V�&W�"�A�"��6�A��x�#�~���I�D�'X�294��|�|�~�~���1�-�.�.�1�3J�3J�6�X[�Xb�3c�gl�3l����r&c	��SnURXS9up�n295[[X�UR55Hunup�up�X|-U:�aXW-296n O	X|-
nM g[	U5(a!US:XaUR5(aX�l[US5(dI[R"URRSURRS3[SS	9 gURX�X4UU=(a URU:H5$)297zMPass the event to the contained widget.298 299May change focus on button 1 press.300rr�Fr�mouse_event�.z is not subclass of Widgetr]r2)r�r:r�r4rrnr�rLrBrCrwr!r r�rfro)rHr��event�buttonrar\rorbrCr�r�rsrvrErur��301target_rows                 r'rf�Pile.mouse_event�s�����&*�&9�&9�$�&9�&L�#��)�+4�S��T�]�]�5[�+\�'�A�'�����}�s�"� �Z�302���N�D�	,]���%� � �V�q�[�Q�\�\�^�^�"#���q�-�(�(��M�M��;�;�)�)�*�!�A�K�K�,@�,@�+A�A[�\�"��
�303��}�}�V�F��U�E^�t�z�z�]^��_�_r&)rcr`r4ror�r�rprq)�returnzfrozenset[Sizing]rX)rqz�Iterable[Widget | tuple[Literal['pack', WHSettings.PACK] | int, Widget] | tuple[Literal['given', WHSettings.GIVEN], int, Widget] | tuple[Literal['weight', WHSettings.WEIGHT], int | float, Widget]]rrzWidget | int | Nonerl�None)rlz	list[str])rlzdict[str, typing.Any])rlz4Iterator[tuple[str | None, typing.Any] | typing.Any])rlr�)rlrm)rlz�MonitoredFocusList[Widget, tuple[Literal[WHSettings.PACK], None] | tuple[Literal[WHSettings.GIVEN], int] | tuple[Literal[WHSettings.WEIGHT], int | float]])r�z�Sequence[Widget, tuple[Literal[WHSettings.PACK], None] | tuple[Literal[WHSettings.GIVEN], int] | tuple[Literal[WHSettings.WEIGHT], int | float]]rlrm)r�z/Literal['pack', 'given', 'weight'] | WHSettingsr�zint | float | Nonerlz~tuple[Literal[WHSettings.PACK], None] | tuple[Literal[WHSettings.GIVEN], int] | tuple[Literal[WHSettings.WEIGHT], int | float])rlz
Widget | None)r�zWidget | intrlrm)r�r�rlrm)r��(tuple[()] | tuple[int] | tuple[int, int]rlz304int | None)305r�rnrsr�ro�boolr�zlist[int] | Nonerlrn)F)rororl�Etuple[Sequence[int], Sequence[int], Sequence[tuple[int] | tuple[()]]])r��306tuple[int]rororlrp)r�z(tuple[int, int] | tuple[int] | tuple[()]rororlzWtuple[Sequence[int], Sequence[int], Sequence[tuple[int, int] | tuple[int] | tuple[()]]])rF)r�rnrororlztuple[int, int])r�ztuple[int] | tuple[int, int]rororlz	list[int])r�rnrororlzSolidCanvas | CompositeCanvas)r�rnrlztuple[int, int] | None)r�rqrororlr�)r�rnr+�strrlz307str | None)rErnrlrm)r�rnrar�r\r�rlro)r�rnrhrrrir�rar�r\r�rororlzbool | None)+r r!r"r#r$r;rbr{rr�r�rerh�propertyrq�setterr�r4�staticmethodrr=r�ror�r�rrr�r�r�rrr�rr�rArKr	rUr�rTrfr%�
__classcell__)rws@r'r,r,s^����}$�N+/�E�308�E�(�E�309�E�E�N9�5�L�*#��310I�&����*���1��1�����2���
1��
1��"�311�"��"�H�_�_�	�312�	�313�	��	��GQ�GX�GX�,-�n�D�n�)�n�	9�	n��n�,�5��5��\�\�I��I�(5�"I�"�	��	����	��	��#��#����'��'�314�"'+�&?�6�&?��&?��	&?�315$�&?�3162�
&?�T�a317��a318�319O�a320�L�/9��/9��/9�321O�	/9�h�s322�6�s323��s324�325a�	s326�j+�+�9���6����327'�	�6�$8�(�T%��6�����	�328329��:#`�6�#`��#`��	#`�330�#`��
#`��#`�331�#`�#`r&r,))�332__future__r�typingrB�	itertoolsrr�urwid.canvasrrr�urwid.command_mapr	�urwid.split_reprr333�334urwid.utilr�	constantsr
r�	containerrrr�monitored_listrrrPrrr�
TYPE_CHECKING�collections.abcrrr�typing_extensionsrrr)r,rr&r'�<module>r�sr��"�
��#�D�D�%�,�%�)�j�j�=�6�6�	���<�<�)����!�-�!�z`�6�'�)I�z`r&
codekingpro/portable-devtools · Team Ai