%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /snap/core/17212/usr/lib/python3/dist-packages/urwid/__pycache__/
Upload File :
Create Path :
Current File : //snap/core/17212/usr/lib/python3/dist-packages/urwid/__pycache__/wimp.cpython-35.pyc



>$�V8T�@s�ddlmZmZmZmZmZddlmZddlm	Z	ddl
mZmZddl
mZddlmZddlmZddlmZdd	lmZdd
lmZGdd�de�ZGd
d�de�ZGdd�de�ZGdd�de�ZGdd�de�ZGdd�ded�e�ZGdd�de�Zdd�Z e!dkr�e �dS)�)�Text�
WidgetWrap�delegate_to_widget_mixin�BOX�FLOW)�CompositeCanvas)�connect_signal)�Columns�Overlay)�is_mouse_press)�calc_coords)�disconnect_signal)�python3_repr)�WidgetDecoration)�ACTIVATEc@sLeZdZdZddd�Zddd�Zdd	�Zd
d�ZdS)
�SelectableIconT�cCs|jj|�||_dS)a�
        :param text: markup for this widget; see :class:`Text` for
                     description of text markup
        :param cursor_position: position the cursor will appear in the
                                text when this widget is in focus

        This is a text widget that is selectable.  A cursor
        displayed at a fixed location in the text when in focus.
        This widget has no special handling of keyboard or mouse input.
        N)�_SelectableIcon__super�__init__�_cursor_position)�self�textZcursor_position�r�,/usr/lib/python3/dist-packages/urwid/wimp.pyr$szSelectableIcon.__init__FcCs=|jj||�}|r9t|�}|j|�|_|S)a�
        Render the text content of this widget with a cursor when
        in focus.

        >>> si = SelectableIcon("[!]")
        >>> si
        <SelectableIcon selectable flow widget '[!]'>
        >>> si.render((4,), focus=True).cursor
        (1, 0)
        >>> si = SelectableIcon("((*))", 2)
        >>> si.render((8,), focus=True).cursor
        (2, 0)
        >>> si.render((2,), focus=True).cursor
        (0, 1)
        )r�renderr�get_cursor_coordsZcursor)r�size�focus�crrrr2s
zSelectableIcon.rendercCsl|jt|j�krdS|\}|j|�}t|j||j�\}}||krbdS||fS)z�
        Return the position of the cursor if visible.  This method
        is required for widgets that display a cursor.
        N)r�lenrZget_line_translationr)rrZmaxcolZtrans�x�yrrrrIs	z SelectableIcon.get_cursor_coordscCs|S)zn
        No keys are handled by this widget.  This method is
        required for selectable widgets.
        r)rr�keyrrr�keypressYszSelectableIcon.keypressN)�__name__�
__module__�__qualname__�_selectablerrrr#rrrrr"s
rc@seZdZdS)�
CheckBoxErrorN)r$r%r&rrrrr(`sr(c@s�eZdZdd�Zded�ded�ded�iZd	Zd
gZdddddd
�Zdd�Z	dd�Z
dd�Zdd�Ze
e�Zddd�Zdd�Ze
ee�Zdd�Zdd�Zdd�ZdS) �CheckBoxcCs
ttg�S)N)�	frozensetr)rrrr�sizingdszCheckBox.sizingTz[X]Fz[ ]�mixedz[#]��changeNcCsh|jjd�td�|_||_d|_|rJt|d||�|j|�|j|�dS)a~
        :param label: markup for check box label
        :param state: False, True or "mixed"
        :param has_mixed: True if "mixed" is a state to cycle through
        :param on_state_change: shorthand for connect_signal()
                                function call for a single callback
        :param user_data: user_data for on_state_change

        Signals supported: ``'change'``

        Register signal handler with::

          urwid.connect_signal(check_box, 'change', callback, user_data)

        where callback is callback(check_box, new_state [,user_data])
        Unregister signal handlers with::

          urwid.disconnect_signal(check_box, 'change', callback, user_data)

        >>> CheckBox("Confirm")
        <CheckBox selectable flow widget 'Confirm' state=False>
        >>> CheckBox("Yogourt", "mixed", True)
        <CheckBox selectable flow widget 'Yogourt' state='mixed'>
        >>> cb = CheckBox("Extra onions", True)
        >>> cb
        <CheckBox selectable flow widget 'Extra onions' state=True>
        >>> cb.render((20,), focus=True).text # ... = b in Python 3
        [...'[X] Extra onions    ']
        N�r.)	�_CheckBox__superrr�_label�	has_mixed�_stater�	set_label�	set_state)r�label�stater2�on_state_change�	user_datarrrrrs		
zCheckBox.__init__cCs|jj�t|j�gS)N)r0�_repr_wordsrr6)rrrrr:�szCheckBox._repr_wordscCst|jj�d|j�S)Nr7)�dictr0�_repr_attrsr7)rrrrr<�szCheckBox._repr_attrscCs|jj|�dS)as
        Change the check box label.

        label -- markup for label.  See Text widget for description
        of text markup.

        >>> cb = CheckBox("foo")
        >>> cb
        <CheckBox selectable flow widget 'foo' state=False>
        >>> cb.set_label(('bright_attr', "bar"))
        >>> cb
        <CheckBox selectable flow widget 'bar' state=False>
        N)r1�set_text)rr6rrrr4�szCheckBox.set_labelcCs
|jjS)a;
        Return label text.

        >>> cb = CheckBox("Seriously")
        >>> print(cb.get_label())
        Seriously
        >>> print(cb.label)
        Seriously
        >>> cb.set_label([('bright_attr', "flashy"), " normal"])
        >>> print(cb.label)  #  only text is returned
        flashy normal
        )r1r)rrrr�	get_label�s
zCheckBox.get_labelcCs�|j|krdS||jkrDtdt|�t|�f��|ri|jdk	ri|jd|�||_td|j|j|f|jg�|_d|j_	dS)a�
        Set the CheckBox state.

        state -- True, False or "mixed"
        do_callback -- False to supress signal from this change

        >>> changes = []
        >>> def callback_a(cb, state, user_data):
        ...     changes.append("A %r %r" % (state, user_data))
        >>> def callback_b(cb, state):
        ...     changes.append("B %r" % state)
        >>> cb = CheckBox('test', False, False)
        >>> key1 = connect_signal(cb, 'change', callback_a, "user_a")
        >>> key2 = connect_signal(cb, 'change', callback_b)
        >>> cb.set_state(True) # both callbacks will be triggered
        >>> cb.state
        True
        >>> disconnect_signal(cb, 'change', callback_a, "user_a")
        >>> cb.state = False
        >>> cb.state
        False
        >>> cb.set_state(True)
        >>> cb.state
        True
        >>> cb.set_state(False, False) # don't send signal
        >>> changes
        ["A True 'user_a'", 'B True', 'B False', 'B True']
        Nz%s Invalid state: %sr.�fixedr)
r3�statesr(�repr�_emitr	�reserve_columnsr1Z_wZ	focus_col)rr7�do_callbackrrrr5�s	zCheckBox.set_statecCs|jS)z!Return the state of the checkbox.)r3)rrrr�	get_state�szCheckBox.get_statecCs%|j|tkr|S|j�dS)a�
        Toggle state on 'activate' command.

        >>> assert CheckBox._command_map[' '] == 'activate'
        >>> assert CheckBox._command_map['enter'] == 'activate'
        >>> size = (10,)
        >>> cb = CheckBox('press me')
        >>> cb.state
        False
        >>> cb.keypress(size, ' ')
        >>> cb.state
        True
        >>> cb.keypress(size, ' ')
        >>> cb.state
        False
        N)�_command_mapr�toggle_state)rrr"rrrr#�szCheckBox.keypresscCsw|jdkr|jd�nT|jdkrW|jrG|jd�qs|jd�n|jdkrs|jd�dS)aM
        Cycle to the next valid state.

        >>> cb = CheckBox("3-state", has_mixed=True)
        >>> cb.state
        False
        >>> cb.toggle_state()
        >>> cb.state
        True
        >>> cb.toggle_state()
        >>> cb.state
        'mixed'
        >>> cb.toggle_state()
        >>> cb.state
        False
        FTr,N)r7r5r2)rrrrrGs	zCheckBox.toggle_statecCs+|dkst|�rdS|j�dS)a
        Toggle state on button 1 press.

        >>> size = (20,)
        >>> cb = CheckBox("clickme")
        >>> cb.state
        False
        >>> cb.mouse_event(size, 'mouse press', 1, 2, 0, True)
        True
        >>> cb.state
        True
        rFT)rrG)rr�event�buttonr r!rrrr�mouse_event+s

zCheckBox.mouse_event)r$r%r&r+rr@rC�signalsrr:r<r4r>�propertyr6r5rEr7r#rGrJrrrrr)cs&	)/r)c@speZdZded�ded�ded�iZdZdd	d	d
d�Zddd
�Zdd�Zd	S)�RadioButtonTz(X)Fz( )r,z(#)r-z
first TrueNcCsI|dkr|}||_|jj||d||�|j|�dS)a
        :param group: list for radio buttons in same group
        :param label: markup for radio button label
        :param state: False, True, "mixed" or "first True"
        :param on_state_change: shorthand for connect_signal()
                                function call for a single 'change' callback
        :param user_data: user_data for on_state_change

        This function will append the new radio button to group.
        "first True" will set to True if group is empty.

        Signals supported: ``'change'``

        Register signal handler with::

          urwid.connect_signal(radio_button, 'change', callback, user_data)

        where callback is callback(radio_button, new_state [,user_data])
        Unregister signal handlers with::

          urwid.disconnect_signal(radio_button, 'change', callback, user_data)

        >>> bgroup = [] # button group
        >>> b1 = RadioButton(bgroup, "Agree")
        >>> b2 = RadioButton(bgroup, "Disagree")
        >>> len(bgroup)
        2
        >>> b1
        <RadioButton selectable flow widget 'Agree' state=True>
        >>> b2
        <RadioButton selectable flow widget 'Disagree' state=False>
        >>> b2.render((15,), focus=True).text # ... = b in Python 3
        [...'( ) Disagree   ']
        z
first TrueFN)�group�_RadioButton__superr�append)rrNr6r7r8r9rrrrEs$	zRadioButton.__init__cCss|j|krdS|jj||�|dk	r6dSx6|jD]+}||krUq@|jr@|jd�q@WdS)a�
        Set the RadioButton state.

        state -- True, False or "mixed"

        do_callback -- False to supress signal from this change

        If state is True all other radio buttons in the same button
        group will be set to False.

        >>> bgroup = [] # button group
        >>> b1 = RadioButton(bgroup, "Agree")
        >>> b2 = RadioButton(bgroup, "Disagree")
        >>> b3 = RadioButton(bgroup, "Unsure")
        >>> b1.state, b2.state, b3.state
        (True, False, False)
        >>> b2.set_state(True)
        >>> b1.state, b2.state, b3.state
        (False, True, False)
        >>> def relabel_button(radio_button, new_state):
        ...     radio_button.set_label("Think Harder!")
        >>> key = connect_signal(b3, 'change', relabel_button)
        >>> b3
        <RadioButton selectable flow widget 'Unsure' state=False>
        >>> b3.set_state(True) # this will trigger the callback
        >>> b3
        <RadioButton selectable flow widget 'Think Harder!' state=True>
        NTF)r3rOr5rN)rr7rD�cbrrrr5ss	zRadioButton.set_statecCs|jd�dS)a�
        Set state to True.

        >>> bgroup = [] # button group
        >>> b1 = RadioButton(bgroup, "Agree")
        >>> b2 = RadioButton(bgroup, "Disagree")
        >>> b1.state, b2.state
        (True, False)
        >>> b2.toggle_state()
        >>> b1.state, b2.state
        (False, True)
        >>> b2.toggle_state()
        >>> b1.state, b2.state
        (False, True)
        TN)r5)rrrrrG�szRadioButton.toggle_state)	r$r%r&rr@rCrr5rGrrrrrM>s-.rMc@s�eZdZdd�Zed�Zed�ZdgZdddd�Zd	d
�Z	dd�Z
d
d�Zee�Z
dd�Zdd�ZdS)�ButtoncCs
ttg�S)N)r*r)rrrrr+�sz
Button.sizing�<�>�clickNcCs�tdd�|_tdd|jf|jdd|jfgdd�}|jj|�|rqt|d||�|j|�dS)a�
        :param label: markup for button label
        :param on_press: shorthand for connect_signal()
                         function call for a single callback
        :param user_data: user_data for on_press

        Signals supported: ``'click'``

        Register signal handler with::

          urwid.connect_signal(button, 'click', callback, user_data)

        where callback is callback(button [,user_data])
        Unregister signal handlers with::

          urwid.disconnect_signal(button, 'click', callback, user_data)

        >>> Button("Ok")
        <Button selectable flow widget 'Ok'>
        >>> b = Button("Cancel")
        >>> b.render((15,), focus=True).text # ... = b in Python 3
        [...'< Cancel      >']
        r/rr?rZdividecharsrUN)	rr1r	�button_left�button_right�_Button__superrrr4)rr6Zon_pressr9Zcolsrrrr�s	zButton.__init__cCs|jj�t|j�gS)N)rXr:rr6)rrrrr:�szButton._repr_wordscCs|jj|�dS)z�
        Change the button label.

        label -- markup for button label

        >>> b = Button("Ok")
        >>> b.set_label("Yup yup")
        >>> b
        <Button selectable flow widget 'Yup yup'>
        N)r1r=)rr6rrrr4�szButton.set_labelcCs
|jjS)z�
        Return label text.

        >>> b = Button("Ok")
        >>> print(b.get_label())
        Ok
        >>> print(b.label)
        Ok
        )r1r)rrrrr>�s
zButton.get_labelcCs(|j|tkr|S|jd�dS)aC
        Send 'click' signal on 'activate' command.

        >>> assert Button._command_map[' '] == 'activate'
        >>> assert Button._command_map['enter'] == 'activate'
        >>> size = (15,)
        >>> b = Button("Cancel")
        >>> clicked_buttons = []
        >>> def handle_click(button):
        ...     clicked_buttons.append(button.label)
        >>> key = connect_signal(b, 'click', handle_click)
        >>> b.keypress(size, 'enter')
        >>> b.keypress(size, ' ')
        >>> clicked_buttons # ... = u in Python 2
        [...'Cancel', ...'Cancel']
        rUN)rFrrB)rrr"rrrr#szButton.keypresscCs.|dkst|�rdS|jd�dS)a
        Send 'click' signal on button 1 press.

        >>> size = (15,)
        >>> b = Button("Ok")
        >>> clicked_buttons = []
        >>> def handle_click(button):
        ...     clicked_buttons.append(button.label)
        >>> key = connect_signal(b, 'click', handle_click)
        >>> b.mouse_event(size, 'mouse press', 1, 4, 0, True)
        True
        >>> b.mouse_event(size, 'mouse press', 2, 4, 0, True) # ignored
        False
        >>> clicked_buttons # ... = u in Python 2
        [...'Ok']
        rFrUT)rrB)rrrHrIr r!rrrrrJs
zButton.mouse_event)r$r%r&r+rrVrWrKrr:r4r>rLr6r#rJrrrrrR�s	'
rRc@s[eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zddd
�ZdS)�
PopUpLaunchercCs|jj|�d|_dS)N)�_PopUpLauncher__superr�_pop_up_widget)r�original_widgetrrrr3szPopUpLauncher.__init__cCstd��dS)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.
        z"Subclass must override this methodN)�NotImplementedError)rrrr�
create_pop_up7szPopUpLauncher.create_pop_upcCstd��dS)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.
        z"Subclass must override this methodN)r])rrrr�get_pop_up_parameters?sz#PopUpLauncher.get_pop_up_parameterscCs|j�|_|j�dS)N)r^r[�_invalidate)rrrr�open_pop_upIszPopUpLauncher.open_pop_upcCsd|_|j�dS)N)r[r`)rrrr�close_pop_upMs	zPopUpLauncher.close_pop_upFcCsG|jj||�}|jrCt|�}|j|j|j��|S)N)rZrr[rZ
set_pop_upr_)rrr�canvrrrrQs
	zPopUpLauncher.renderN)	r$r%r&rr^r_rarbrrrrrrY1s
rY�_original_widgetc@s�eZdZeeg�ZdZdd�Zdd�Zddd�Z	d	d
�Z
dd�Zd
d�Zdd�Z
dd�Zdddd�ZdS)�PopUpTargetTcCs)|jj|�d|_|j|_dS)N)Z_PopUpTarget__superr�_pop_uprd�_current_widget)rr\rrrr_s	zPopUpTarget.__init__c
Cs�|jj|d|�}||_|j�}|r�|\}}\}}}	|j|kr�||_t||jd|f|d|f|	�|_q�|jjd|f|d|f|	�nd|_|j|_dS)Nrz
fixed leftz	fixed top)rdrZ_cache_original_canvasZ
get_pop_uprfr
rgZset_overlay_parameters)
rrrrcZpop_up�left�top�wZ
overlay_widthZoverlay_heightrrr�_update_overlayds				zPopUpTarget._update_overlayFcCs&|j||�|jj|d|�S)Nr)rkrgr)rrrrrrrxszPopUpTarget.rendercCs |j|d�|jj|�S)NT)rkrgr)rrrrrr{szPopUpTarget.get_cursor_coordscCs |j|d�|jj|�S)NT)rkrg�get_pref_col)rrrrrrl~szPopUpTarget.get_pref_colcCs#|j|d�|jj||�S)NT)rkrgr#)rrr"rrrr#�szPopUpTarget.keypresscCs&|j|d�|jj|||�S)NT)rkrg�move_cursor_to_coords)rrr r!rrrrm�sz!PopUpTarget.move_cursor_to_coordscCs/|j||�|jj||||||�S)N)rkrgrJ)rrrHrIr r!rrrrrJ�szPopUpTarget.mouse_eventNcCs |j||�|jj|�S)N)rkrg�pack)rrrrrrrn�szPopUpTarget.pack)r$r%r&�setrZ_sizingr'rrkrrrlr#rmrJrnrrrrreYsrecCsddl}|j�dS)Nr)�doctestZtestmod)rprrr�_test�srq�__main__N)"Zurwid.widgetrrrrrZurwid.canvasrZ
urwid.signalsrZurwid.containerr	r
Z
urwid.utilrZurwid.text_layoutrr
Zurwid.split_reprrZurwid.decorationrZurwid.command_maprr�	Exceptionr(r)rMrRrYrerqr$rrrr�<module>s((>�v}	':

Zerion Mini Shell 1.0