Current Dir: /snap/core22/2437/usr/lib/python3/dist-packages/urwid/__pycache__/

[FILE] canvas.cpython-310.pyc [ edit | delete | rename ]
[FILE] command_map.cpython-310.pyc [ edit | delete | rename ]
[FILE] compat.cpython-310.pyc [ edit | delete | rename ]
[FILE] container.cpython-310.pyc [ edit | delete | rename ]
[FILE] curses_display.cpython-310.pyc [ edit | delete | rename ]
[FILE] decoration.cpython-310.pyc [ edit | delete | rename ]
[FILE] display_common.cpython-310.pyc [ edit | delete | rename ]
[FILE] escape.cpython-310.pyc [ edit | delete | rename ]
[FILE] font.cpython-310.pyc [ edit | delete | rename ]
[FILE] graphics.cpython-310.pyc [ edit | delete | rename ]
[FILE] html_fragment.cpython-310.pyc [ edit | delete | rename ]
[FILE] lcd_display.cpython-310.pyc [ edit | delete | rename ]
[FILE] listbox.cpython-310.pyc [ edit | delete | rename ]
[FILE] main_loop.cpython-310.pyc [ edit | delete | rename ]
[FILE] monitored_list.cpython-310.pyc [ edit | delete | rename ]
[FILE] numedit.cpython-310.pyc [ edit | delete | rename ]
[FILE] old_str_util.cpython-310.pyc [ edit | delete | rename ]
[FILE] raw_display.cpython-310.pyc [ edit | delete | rename ]
[FILE] signals.cpython-310.pyc [ edit | delete | rename ]
[FILE] split_repr.cpython-310.pyc [ edit | delete | rename ]
[FILE] text_layout.cpython-310.pyc [ edit | delete | rename ]
[FILE] treetools.cpython-310.pyc [ edit | delete | rename ]
[FILE] util.cpython-310.pyc [ edit | delete | rename ]
[FILE] version.cpython-310.pyc [ edit | delete | rename ]
[FILE] vterm.cpython-310.pyc [ edit | delete | rename ]
[FILE] web_display.cpython-310.pyc [ edit | delete | rename ]
[FILE] widget.cpython-310.pyc [ edit | delete | rename ]
[FILE] wimp.cpython-310.pyc [ edit | delete | rename ]
[FILE] _async_kw_event_loop.cpython-310.pyc [ edit | delete | rename ]
[FILE] __init__.cpython-310.pyc [ edit | delete | rename ]

Viewing: /snap/core22/2437/usr/lib/python3/dist-packages/urwid/__pycache__/text_layout.cpython-310.pyc

o

��o_+G�@s�ddlmZmZddlmZmZmZmZmZm	Z	ddl
mZmZm
Z
mZGdd�d�ZGdd�de�ZGdd	�d	e�Ze�ZGd
d�d�Zdd
�Zdd�Zdd�Zdd�Zdd�Zddd�ZdS)�)�division�print_function)�
calc_width�
calc_text_pos�calc_trim_text�is_wide_char�move_prev_char�move_next_char)�bytes�PYTHON3�B�xrangec@s$eZdZdd�Zdd�Zdd�ZdS)�
TextLayoutcC�dS)z/Return True if align is a supported align mode.T���self�alignrr�3/usr/lib/python3/dist-packages/urwid/text_layout.py�supports_align_mode�zTextLayout.supports_align_modecCr)z-Return True if wrap is a supported wrap mode.Tr�r�wraprrr�supports_wrap_mode!rzTextLayout.supports_wrap_modecCstd��)a�
        Return a layout structure for text.

        :param text: string in current encoding or unicode string
        :param width: number of screen columns available
        :param align: align mode for text
        :param wrap: wrap mode for text

        Layout structure is a list of line layouts, one per output line.
        Line layouts are lists than may contain the following tuples:

        * (column width of text segment, start offset, end offset)
        * (number of space characters to insert, offset or None)
        * (column width of insert text, offset, "insert text")

        The offset in the last two tuples is used to determine the
        attribute used for the inserted spaces or text respectively.
        The attribute used will be the same as the attribute at that
        text offset.  If the offset is None when inserting spaces
        then no attribute will be used.
        zVThis function must be overridden by a real text layout class. (see StandardTextLayout))�NotImplementedError)r�text�widthrrrrr�layout$szTextLayout.layoutN)�__name__�
__module__�__qualname__rrrrrrrrsrc@seZdZdS)�CanNotDisplayTextN)rrr rrrrr!=sr!c@sDeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dS)�StandardTextLayoutcCsdS)Nr)rrrr�__init__AszStandardTextLayout.__init__cC�|dvS)z4Return True if align is 'left', 'center' or 'right'.)�left�center�rightrrrrrrL�z&StandardTextLayout.supports_align_modecCr$)z<Return True if wrap is 'any', 'space', 'clip' or 'ellipsis'.)�any�space�clip�ellipsisrrrrrrOr(z%StandardTextLayout.supports_wrap_modecCs<z|�|||�}|�|||||�WStyggYSw)z#Return a layout structure for text.)�calculate_text_segments�align_layoutr!)rrrrr�segsrrrrRs
�zStandardTextLayout.layoutcCsHd}|sJdt|���|D]}t|�}||kr|St||�}q|S)z�
        Return a minimal maxcol value that would result in the same
        number of lines for layout.  layout must be a layout structure
        returned by self.layout().
        rzhuh? empty layout?: )�repr�
line_width�max)r�maxcolr�maxwidth�l�lwrrr�packZszStandardTextLayout.packc	Cs�g}|D];}t|�}||ks|dkr|�|�q|dkr)|�||dfg|�q|dks/J�|�||dddfg|�q|S)z-Convert the layout segs to an aligned layout.r%r'Nr&��)r1�append)	rrrr/rr�outr5�scrrrr.is
"zStandardTextLayout.align_layoutcCsPd\}}}trt|t�rt|�}t|�}t|�}g}d}|dvr�|t|�kr�|�||�}	|	dkr4t|�}	t|||	�}
|dkre|
|kred}t|||	d|d�\}}
}}|dksXJ�||ks^J�|d|}
nd}|	}
d}g}||
kry||
||
fg7}|r�|d|
d	�	d
�fg7}|||
fg7}|�
|�|	d}|t|�ks&|S|t|�k�r&|�||�}	|	dkr�t|�}	t|||	�}
|
dkr�|�
d|	fg�|	d}q�|
|kr�|�
|
||	fd|	fg�|	d}q�t|||	|�\}}
||kr�td��|dk�r|�
|
||fg�|}q�|d
k�sJ�|||k�r |�
|
||fd|fg�|d}q�t
||��r2|�
|
||fg�|}q�|}||k�r�t|||�}|||k�rht|||�}
d|fg}||k�r^|
||fg|}|�
|�|d}n�t
||��r�t|||�}t|||�}
|�
|
||fg�|}n�||k�s9|�rt|d�dk�s�t|d�dk�rt|dd�dk�rt|d�dk�r�|d\\}}d}|}}n|d\\}}}\}}||k�r|dk�r|||k�r|d=|}t|||	|�\}}
|�
|
||fg�|}|t|�k�r||||fv�r|d�
d|f�|d7}q�|�
|
||fg�|}|t|�ks�|S)a:
        Calculate the segments of text to display given width screen
        columns to display them.

        text - unicode text or byte string to display
        width - number of available screen columns
        wrap - wrapping mode used

        Returns a layout structure without alignment applied.
        )�
r=� r)r+r,���r,Tr8Fu…zutf-8z-Wide character will not fit in 1-column widthr)r*r9)r�
isinstancer
r�ord�len�findrr�encoder:rr!rrr	)rrrr�nl�nl_o�sp_o�b�p�n_crr<�trimmed�spos�n_end�pad_left�	pad_rightr5�pos�prev�next�h_sc�h_off�p_sc�p_off�p_endrrrr-zs�

���
�




�*

���\z*StandardTextLayout.calculate_text_segmentsN)
rrr r#rrrr7r.r-rrrrr"@sr"c@seZdZdd�Zdd�ZdS)�
LayoutSegmentcCsDt|�tksJt|���t|�dvsJt|���|dd�\|_|_t|j�tks0Jt|j���t|�dkrut|j�tksDJt|j���|jdksOJt|���|d}t|�tkra||_d|_	dSt|�tksmJt|���d|_||_	dSt|�dks�Jt|���|jdur�|jdks�Jt|���t|j�tks�J�d|_|_	dS)z0Create object from line layout segment structure)r9�Nr9rYr)
�type�tupler0rBr<�offs�intr
r�end)r�seg�trrrr#s&


zLayoutSegment.__init__c	Cs|dkrd}||jkr|j}||krgS|jrAt|jdt|j�||�\}}}}|||jt��|�|j||�t��|�fgS|jrxt||j|j||�\}}}}g}|r_|�d|df�|�||||||f�|rv|�d|f�|S|||jfgS)a2
        Return a "sub-segment" list containing segment structures
        that make up a portion of this segment.

        A list is returned to handle cases where wide characters
        need to be replaced with a space character at either edge
        so two or three segments will be returned.
        rr8)	r<rrrBr\r
�ljustr^r:)	rr�startr^rL�eposrNrOr5rrr�subseg0s2	��
��zLayoutSegment.subsegN)rrr r#rdrrrrrXsrXcCsRd}|}|rt|d�dkr|dddkr|dd�}|D]}||d7}q|S)z�
    Return the screen column width of one line of a text layout structure.

    This function ignores any existing shift applied to the line,
    represented by an (amount, None) tuple at the start of the line.
    rr9r8N)rB)r/r<�seglist�srrrr1Ss$r1cCs�t|�tksJt|���|r9t|d�dkr9|dddkr9||dd7}|r3|dfg|dd�S|dd�S|rB|dfg|S|S)z�
    Return a shifted line from a layout structure to the left or right.
    segs -- line of a layout structure
    amount -- screen columns to shift right (+ve) or left (-ve)
    rr9r8N)rZr]r0rB)r/�amountrrr�
shift_linebs$rhc	Cs�g}d}|D]b}|d}|s|dkrD||kr||8}||7}qt|�}|||kr4|�||||�S||�|||�7}d}||7}q||krK|S|||krct|�}||�|d||�7}|S|�|�q|S)z�
    Return a trimmed line of a text layout structure.
    text -- text to which this layout structure applies
    start -- starting screen column
    end -- ending screen column
    r)rXrdr:)	r/rrbr^r5�xr_r<rfrrr�	trim_linevs4��rjcCs�d}d}d}|dkr|D]}t|�}|jdur|jSqdS|dkrQ|D]
}t|�}|jdur2|}q%|}|dur;dS|jdurC|jSt||j|j|jd�dS|D]W}t|�}|jdur�|jdur�||kr}|||jkr}t||j|j||�dS||kr�||jd}|}|dus�t||�t||�kr�|}|j}||kr�n||j7}qS|dus�t|�tkr�|S|}t||j|j|jd�dS)z�
    Calculate the closest linear position to pref_col given a
    line layout structure.  Returns None if no position found.
    Nrr%r'r8)rXr\r^rr<�absrZr])r�line_layout�pref_col�
closest_sc�closest_pos�
current_scr_rfrrr�
calc_line_pos�sb

�
�


��
�rqcCs�|dks
|t|�krtd��t||||�}|dur|Stt|ddd��}tt|dt|���}|rc|rc|rJ|�d�}t||||�}|durJ|S|r_|�d�}t||||�}|dur_|S|rc|s5dS)za
    Calculate the closest linear position to pref_col and row given a
    layout structure.
    rz&calculate_pos: out of layout row rangeNr8r?)rB�	Exceptionrq�listr
�pop)rrrm�rowrP�
rows_above�
rows_below�rrrr�calc_pos�s$

�	ryr8cCs
d}d}|D]v}d}|D]k}t|�}	|	jdur||	j7}q|	j|kr*||fS|	jdurJ|	j|krJ|	j|krJ|t||	j|�7}||fSt|	j|�}
|	jdurb|	j|krb||	jd}
|dusl|
|dkrr|
||ff}||	j7}q|d7}q|r�|dSdS)z�
    Calculate the coordinates closest to position pos in text with layout.

    text -- raw string or unicode string
    layout -- layout structure applied to text
    pos -- integer position into text
    clamp -- ignored right now
    Nrr8)rr)rXr\r<r^rrk)rrrP�clamp�closest�yrlrir_rf�distancerrr�calc_coords�s0	



r~N)r8)�
__future__rr�
urwid.utilrrrrrr	�urwid.compatr
rrr
rrrr!r"�default_layoutrXr1rhrjrqryr~rrrr�<module>s  P@#:
Upload File: