Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes15kdownloads
text_layout.cpython-313.pyc195 linesDownload Raw Back to __pycache__
1�

2��jY����SSKJr SSKrSSKrSSKrSSKJrJrJrJ	r	J3r4 SSKJrJ
r
 \R(aSSKJr SSKJrJr \R("SS9SS	j5r\R("SS9SS5j5r"SS5r"S
S\5r"SS\5r\"5r"SS5rSSjrSSjrSSjrSSjr SSjr!S S!Sjjr"g)"�)�annotationsN)�
calc_text_pos�6calc_width�is_wide_char�move_next_char�move_prev_char)�calc_trim_text�get_encoding)�Literal)�Align�WrapMode�)�maxsizec�d�SRU5RU5$![a gf=f)z*Get ellipsis character for given encoding.u…z...)�encode�decode�UnicodeEncodeError)�encodings �WD:\code\apps\devtools\python\user_packages\Python313\site-packages\urwid/text_layout.py�get_ellipsis_stringr%s3����|�|�H�%�,�,�X�6�6������s�"�7/�/c�,�[R"USS9$)z0Get ellipsis character width for given encoding.�ignore)�
control_codes)�wcwidth�width)�strings r�8_get_widthr.s���=�=��x�8�8�c�F�\rSrSrSSjrSSjrS	SjrSrg)9�10TextLayout�4c��g)z/Return True if align is a supported align mode.T���self�aligns  r�supports_align_mode�TextLayout.supports_align_mode5���rc��g)z-Return True if wrap is a supported wrap mode.Tr#�r%�wraps  r�supports_wrap_mode�TextLayout.supports_wrap_mode9r)rc��[S5e)a11Return a layout structure for text.12 13:param text: string in current encoding or unicode string14:param width: number of screen columns available15:param align: align mode for text16:param wrap: wrap mode for text17 18Layout structure is a list of line layouts, one per output line.19Line layouts are lists than may contain the following tuples:20 21* (column width of text segment, start offset, end offset)22* (number of space characters to insert, offset or None)23* (column width of insert text, offset, "insert text")24 25The offset in the last two tuples is used to determine the26attribute used for the inserted spaces or text respectively.27The attribute used will be the same as the attribute at that28text offset.  If the offset is None when inserting spaces29then no attribute will be used.30zVThis function must be overridden by a real text layout class. (see StandardTextLayout))�NotImplementedError)r%�textrr&r,s     r�layout�TextLayout.layout=s��8"�d�31�	32rr#N�r&�*Literal['left', 'center', 'right'] | Align�return�bool�r,�6Literal['any', 'space', 'clip', 'ellipsis'] | WrapModer6r7�33r1�str | bytesr�intr&r5r,r9r6�Alist[list[tuple[int, int, int | bytes] | tuple[int, int | None]]])�__name__�34__module__�__qualname__�__firstlineno__r'r-r2�__static_attributes__r#rrr r 4sC����35��36��37�:�	38�39E�40�41K�
42rr c��\rSrSrSrg)�CanNotDisplayText�^r#N)r>r?r@rArBr#rrrDrD^s��rrDc��\rSrSrSSjrS
SjrSSjrSSjrSSjrSSjr	SSjr43SS	jrS44rg)�StandardTextLayout�bc��g)Nr#)r%s r�__init__�StandardTextLayout.__init__cs��rc��US;$)z4Return True if align is 'left', 'center' or 'right'.>�left�right�centerr#r$s  rr'�&StandardTextLayout.supports_align_modeos���3�3�3rc��US;$)z<Return True if wrap is 'any', 'space', 'clip' or 'ellipsis'.>�any�clip�space�ellipsisr#r+s  rr-�%StandardTextLayout.supports_wrap_modess���;�;�;rc�t�URXU5nURXXTU5$![a //s$f=f)z#Return a layout structure for text.)�calculate_text_segments�align_layoutrD)r%r1rr&r,�segss      rr2�StandardTextLayout.layoutwsD��	��/�/��T�B�D��$�$�T�$�e�D�D�� �	��4�K�	�s�$'�
7�7c��SnU(d[SU<35eUH"n[U5nXQ:�aUs $[X55nM$ U$)z�Return a minimal maxcol value that would result in the same number of lines for layout.45 46layout must be a layout structure returned by self.layout().47rzhuh? empty layout?: )�48ValueError�49line_width�max)r%�maxcolr2�maxwidth�lines�lws      r�pack�StandardTextLayout.pack�sN������3�F�:�>�?�?��E��E�"�B��|��
��8�(�H�	�50�rc�"�/nUH�n[U5nX�:XdUS:XaURU5 M,US:XaURX(-51S4/UQ5 MLUS:wa[U5eX(-52S-S-n	URU	(aU	S4/UQOU5 M� U$)z1Convert the layout segments to an aligned layout.rMrNNrO��)r^�appendr])53r%r1rrZr,r&�outrb�sc�
pad_trim_lefts54          rrY�StandardTextLayout.align_layout�s������E��E�"�B��{�e�v�o��55�56�5�!������57�58�U�Z��.�7��7�8���� � ��'�'�"�Z�!�^��1�M��J�J�-���-�6��6�U�S���59rc��/n[U[5(aSOSn[5n[U5n[	U5nX(-60S-61=n	S:aUSU	n[	U5nURU5n62SnU[
U5::a�URX[5nUS:Xa[
U5n[XU5n
US:XaYX�:�aTU(aMSn[XUSX(-635unnnnUS:wa[S	U<35eX�:wa[S64U<SU<35eUS-65U-66n
OSnUnSn/nUU:waUX�U4/-
nU(a	UUUU674/-
nUUU4/-
nURU5 US-nU[
U5::aM�U$)
zOCalculate text segments for cases of a text trimmed (wrap is clip or ellipsis).�68�69rgrN�����rUTz%Invalid padding for start column==0: z7Invalid start offset for  start column==0 and position=z: F)�70isinstance�strr71rrr�len�findrr	r]ri)r%r1rr,�segments�nlr�ellipsis_string�ellipsis_width�extra�
ellipsis_char�idx�nl_pos�screen_columns�trimmed�	start_off�end_off�pad_left�	pad_right�lines                    r�_calculate_trimmed_segments�.StandardTextLayout._calculate_trimmed_segments�s�����",�T�3�"7�"7�$�U���>��-�h�7��#�O�4���+�a�/�/�E�1�4�-�f�u�5�O�'��8�N�'�.�.�x�8�
����S��Y���Y�Y�r�'�F���|��T���'��6�:�N��z�!�n�&<����:H��TZ�\]�_d�_u�:v�7�	�7�H�i��q�=�$�'L�X�L�%Y�Z�Z��#�$�'^�_b�^e�eg�hq�gt�%u�v�v�!&���Y�!6�� �� ���	��D��g�~��.�w�7�8�8����.�'�=�A�B�B���i��)�*�*�D��O�O�D�!��1�*�C�?�S��Y��@�rc�(�US;aURXU5$SupEn[U[5(aSn[U5n[U5n/nSnU[	U5::Ga�URXH5n	U	S:Xa[	U5n	[
XU	5n72U73S:XaURSU	4/5 U	S-nM_X�::aURX�U	4SU	4/5 U	S-nM�[XX�5up�X�:Xa[S5eUS:XaURX�U4/5 UnM�US	:wa[U5eXU:XaURX�U4SU4/5 US-nM�[X5(aURX�U4/5 UnGMUnX�:�a�[XU5nXU:Xa5[
XU5n74SU4/n
X�:waX�U4/U
Qn
URU
5 US-nGOC[X5(a0[XU5n[
XU5n75URX�U4/5 UnGOX�:�aM�U(a�[	US5S76:Xd'[	US5S:Xa�[	USS5S77:Xa�[	US5S:XaUSuunnSnU=nnOUSuunnnunnUU:anUS:XahUUU:Xa_US	Un[XX�5up�URX�U4/5 UnU[	U5:a$XXe1;aUSRSU45 US-
nGM�URX�U4/5 UnU[	U5::aGM�U$)a78Calculate the segments of text to display given width screen columns to display them.79 80text - Unicode text or byte string to display81width - number of available screen columns82wrap - wrapping mode used83 84Returns a layout structure without an alignment applied.85>rSrU)roro� rprrqrgz-Wide character will not fit in 1-column widthrRrTrh)r�rr�bytes�ordrtrurrirrDr]rrr)r%r1rr,rw�nl_o�sp_orvr|r}r~�pos�prevr��	next_char�h_sc�h_off�p_sc�p_off�_p_ends                    rrX�*StandardTextLayout.calculate_text_segments�s~���'�'��3�3�D��F�F�(���$��d�E�"�"��B��t�9�D��t�9�D������S��Y���Y�Y�r�'�F���|��T���'��6�:�N���"����!�V��
�.��q�j����&����.�v�!>��F�� L�M��q�j���"/��6�"I��C��z�'�(W�X�X��u�}����.�s�!;� <�=�����w�� ��&�&��y�D� ����.�s�!;�a��X� F�G��A�g����D�&�&����.�s�!;� <�=�����D��*�%�d��6���:��%�%/��4�%@�N���I�;�D��{�!/�d� ;�C�d�C���O�O�D�)���(�C����+�+� .�t�3� ?�I�%/��9�%E�N��O�O�n�9�%E�$F�G�#�C��#�*�,��X�b�\�!2�a�!7�C����<M�QR�<R�WZ�[c�df�[g�hi�[j�Wk�op�Wp��8�B�<�(�A�-�*2�2�,���$�� ��).�.���BJ�"��>�.�$��v�
��u��e�|���	�d�5�k�T�6I�$�R�L�#��.;�D�v�.U�+�� ���.�s�)C�(D�E�!����T��?��	�d�\�0I�$�R�L�/�/��C��9��1�H�C� ����.�s�!;� <�=���A�S��Y��B�rr#N)r6�Noner4r8r:)r`r<r2r=r6r<)r1r;rr<rZr=r,r9r&r5r6r=)r1r;rr<r,z=Literal['clip', 'ellipsis', WrapMode.CLIP, WrapMode.ELLIPSIS]r6r=)r1r;rr<r,r9r6r=)
r>r?r@rArJr'r-r2rdrYr�rXrBr#rrrGrGbs��
�4�<������:�	�86E��87K�
����R��88
�	�&�����P�	�89E��:�
�90K��25��5��5�L�	5�9192K�5�n{��{��{�E�	{�9394K�{rrGc�(�\rSrSrSSjrSSjrSrg)�
LayoutSegmentilc�t�[U[5(d[U5e[U5S;a[	U5eUSSuUlUl[UR95[5(d[UR965e[U5S:Xa�[UR[5(d[UR5eUR97S::a[	U5eUSn[U[5(aX l	SUl98g[U[5(d[U5eSUl	X l99g[U5S:wa[	U5eURbOUR100S:a[	U5e[UR[5(d[UR5eS=Ul	Ul101g)z0Create object from line layout segment structure>rh�Nrhr�r)rr�tuple�	TypeErrorrtr]rk�offsr<r�r1�end)r%�seg�ts   rrJ�LayoutSegment.__init__msL���#�u�%�%��C�.� ��s�8�6�!��S�/�!� ��!�W�������$�'�'�3�'�'��D�G�G�$�$��s�8�q�=��d�i�i��-�-���	�	�*�*��w�w�!�|� ��o�%��A��A��!�U�#�#�*+�	����!�!�S�)�)�#�A�,�&� ��	����3�x�1�}� ��o�%��y�y�$��7�7�Q�;�$�S�/�)�!�$�)�)�S�1�1�#�D�I�I�.�.�#'�'�D�I��rc��[US5n[X0R5nX#:�a/$UR(ap[	URS[UR5X#5upEpgX2-102URSRU5URXE-SRU5-4/$UR(az[	XRURX#5upEpg/nU(aURSUS-10345 URX2-104U-105U-106XE45 U(aURSU45 U$X2-107UR4/$)a108Return a "sub-segment" list containing segment structures109that make up a portion of this segment.110 111A list is returned to handle cases where wide characters112need to be replaced with a space character at either edge113so two or three segments will be returned.114rrrg)115r_�minrkr1r	rtr��ljustr�ri)	r%r1�startr��spos�eposr�r�rbs	         r�subseg�LayoutSegment.subseg�s���E�1�
���#�w�w����<��I��9�9�.<�T�Y�Y��3�t�y�y�>�[`�.f�+�D���[�$�)�)�S�Y�Y�x�-@�4�9�9�T�CW�-W�Z]�Zc�Zc�dm�Zn�-n�o�p�p��8�8�.<�T�9�9�d�h�h�X]�.c�+�D���E�����a����]�+��L�L�#�+��0�9�<�d�I�J�����a��Y�'��L���d�i�i�(�)�)r)r�r�rkr1N)r�z5tuple[int, int, int | bytes] | tuple[int, int | None]r6r�)r1r;r�r<r�r<r6z4list[tuple[int, int] | tuple[int, int, int | bytes]])r>r?r@rArJr�rBr#rrr�r�ls
��#(�J*rr�c�|�SnUnU(a [US5S:XaUSScUSSnUH116nXS-
nM U$)z�117Return the screen column width of one line of a text layout structure.118 119This function ignores any existing shift applied to the line,120represented by an (amount, None) tuple at the start of the line.121rrhrgN)rt)rZrk�seglist�ss    rr^r^�sR��122�B��G���D��G���!�d�1�g�a�j�&8��q�r�(��
��123��d�124���
�Irc���[U[5(d[U5eU(a;[US5S:Xa)USSc XSS-
nU(a125US4/USSQ$USS$U(aUS4/UQ$U$)z�126Return a shifted line from a layout structure to the left or right.127segs -- line of a layout structure128amount -- screen columns to shift right (+ve) or left (-ve)129rrhrgN)rrr<r�rt)rZ�amounts  r�130shift_liner��s����f�c�"�"�������D��G���!�d�1�g�a�j�&8��q�'�!�*�����T�N�.�T�!�"�X�.�.��A�B�x��
����&��&�&��Krc�x�/nSnUH�nUSnU(dUS:aTX':�a131X'-nXW-
nM$[U5nXW-U:�aURXX5-1325s $XHRXU5-
nSnXW-
nMiXS:�a U$XW-U:�a%[U5nXHRUSX5-1335-
n U$URU5 M� U$)z�134Return a trimmed line of a text layout structure.135text -- text to which this layout structure applies136start -- starting screen column137end -- ending screen column138r)r�r�ri)	rZr1r�r��result�xr�rkr�s	         r�	trim_liner��s����F�	�A���
��V���B��F��{���������c�"�A��v��}��x�x��S�W�5�5��h�h�t�B�/�/�F��E�
�G�A���8���M�
�6�C�<��c�"�A��h�h�t�Q���0�0�F���M�	�
�
�c��+�,�Mrc��SnSnSnUS:Xa0UH)n[U5nURcMURs $ gUS:XauUHn[U5nURcMUnM! UnUcgURcUR$[XRURURS-1395S$UH�n[U5nURb�URb[XRs=::aXWR-:a+O O([XRURX%-1405Ss $XR::aXWR-S-141nUnUb[X%-1425[X#-1435:aUnURnXS:�a OXWR-
nM� Ub[
U[5(aU$Un[XRURURS-1445S$)zv145Calculate the closest linear position to pref_col given a146line layout structure.  Returns None if no position found.147NrrMrNrg)r�r�r�rrk�absrrr<)r1�line_layout�pref_col�148closest_sc�closest_pos�149current_scr�r�s        r�
calc_line_posr�s����J��K��J��6���C��c�"�A��v�v�!��v�v�
����7���C��c�"�A��v�v�!����
���9���5�5�=��6�6�M��T�6�6�1�5�5�!�$�$��(�;�A�>�>����#����6�6���u�u� ��=�J���,=�=�(��v�v�q�u�u�h�>S�T�UV�W�W��)�!+�d�d�!2�Q�!6�J�"#�K��!�c�(�*?�&@�3�x�G\�C]�&]�'�150��f�f���&���d�d��151�%�(��j��c�:�:���	�A���v�v�q�u�u�a�d�d�Q�h�7��:�:rc���US:dU[U5:�a[S5e[XUU5=nbU$[[	US-152SS55n[[	US-[U555nU(aoU(ahU(a%URS5n[XUU5=nbU$U(a%URS5n[XUU5=nbU$U(a	U(aMhg)zU153Calculate the closest linear position to pref_col and row given a154layout structure.155rz&calculate_pos: out of layout row rangergrq)rtr]r��list�range�pop)r1r2r��rowr��156rows_above�157rows_below�rs        r�calc_posr�<s����Q�w�#��V��$��A�B�B��T�#�;��9�9��F��158��e�C�!�G�R��,�-�J��e�C�!�G�S��[�1�2�J�159������q�!�A�$�T�!�9�h�?�?��L��160�����q�!�A�$�T�!�9�h�?�?��L��161����
rc�B�SnSnUGHnSnUH�n[U5n	U	RcXyR-
nM+U	RU:XaXu4s s $U	RbDU	RUs=::aU	R:a#O O U[	X	RU5-
nXu4s s $[U	RU-1625n163U	Rb!U	RU:aX)RS-164-165n166UbX�S:aX�U44nXyR-
nM� US-
nGM U(aUS$g)z�167Calculate the coordinates closest to position pos in text with layout.168 169text -- raw string or unicode string170layout -- layout structure applied to text171pos -- integer position into text172clamp -- ignored right now173Nrrg)rr)r�r�rkr�rr�)r1r2r��clamp�closest�yr�r�r�r��distances           r�calc_coordsr�]s��37�G�	�A���
���C��c�"�A��v�v�~��T�T�	����v�v��}��t���u�u� �Q�V�V�s�%:�Q�U�U�%:��Z��f�f�c�2�2���t���1�6�6�C�<�(�H��u�u� �Q�U�U�S�[��%�%�!�)�,����(�Q�Z�"7�"��F�*��
���I�A�� 	174�Q���%�(��q�z��r)rrsr6rs)r6r<)rZ�;list[tuple[int, int, int | bytes] | tuple[int, int | None]]r6r<)rZr�r�r<r6r�)175rZr�r1r;r�r<r�r<r6r�)r1r;r��7Literal['left', 'right', Align.LEFT, Align.RIGHT] | int)176r1r;r2r=r�r�r�r<r6r<)rg)177r1r;r2r=r�r<r�r<r6ztuple[int, int])#�178__future__r�	functools�typingr�urwid.str_utilrrrrr�179urwid.utilr	r180�
TYPE_CHECKING�typing_extensionsr�urwid.widgetrr
�	lru_cacherrr �	ExceptionrDrG�default_layoutr�r^r�r�r�r�r�r#rr�<module>r�s���*#��
��b�b�3�	���)�,����Q��� �����Q��9� �9�181'182�'183�T	�	�	�A��A�L$�%��C*�C*�L
� �184E����A��0$�185E�$�186�$��$�187
�	$�188A�$�N8;�189�8;�F�8;�v
�190�
�M�
�F�
�191
�	
�192	�
�J�	&�193�&�M�&�194
�&��	&�195�&r
codekingpro/portable-devtools · Team Ai