Sindbad~EG File Manager

Current Path : /usr/local/lib/python3.9/idlelib/__pycache__/
Upload File :
Current File : //usr/local/lib/python3.9/idlelib/__pycache__/multicall.cpython-39.pyc

a

��g�H�@sdZddlZddlZddlZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZd
ZdZdZdZ ej!dkr�dZ"eeee fZ#ndZ"eeeefZ#e$dd �e%e&e"��D��Z'd!Z(Gd"d#�d#�Z)e%de&e"�>�Z*d$d �e*D�Z+d%d&�Z,e,e*�Z-gZ.e*D]BZ/dZ0e%e&e"��D] Z1de1>e/@�r2e0e#e1OZ0�q2e.�2e0��qGd'd(�d(�Z3d)Z4e3fde)fe&e4�dZ5e$d*d �e%e&e4��D��Z6e�7d+�Z8e�7d,�Z9d-d.�Z:d/d0�Z;iZ<d1d2�Z=d3d4�Z>e?d5k�rdd6l@mAZAeAd7dd8d9�dd:lBmCZCeCe>�dS);a�
MultiCall - a class which inherits its methods from a Tkinter widget (Text, for
example), but enables multiple calls of functions per virtual event - all
matching events will be called, not only the most specific one. This is done
by wrapping the event functions - event_add, event_delete and event_info.
MultiCall recognizes only a subset of legal event sequences. Sequences which
are not recognized are treated by the original Tk handling mechanism. A
more-specific event will be called before a less-specific event.

The recognized sequences are complete one-event sequences (no emacs-style
Ctrl-X Ctrl-C, no shortcuts like <3>), for all types of events.
Key/Button Press/Release events can have modifiers.
The recognized modifiers are Shift, Control, Option and Command for Mac, and
Control, Alt, Shift, Meta/M for other platforms.

For all events which were handled by MultiCall, a new member is added to the
event instance passed to the binded functions - mc_type. This is one of the
event type constants defined in this module (such as MC_KEYPRESS).
For Key/Button events (which are handled by MultiCall and may receive
modifiers), another member is added - mc_state. This member gives the state
of the recognized modifiers, as a combination of the modifier constants
also defined in this module (for example, MC_SHIFT).
Using these members is absolutely portable.

The order by which events are called is defined by these rules:
1. A more-specific event will be called before a less-specific event.
2. A recently-binded event will be called before a previously-binded event,
   unless this conflicts with the first rule.
Each function will be called at most once for each event.
�N���������	�
���
���������� �@��darwin)�ZShift�ZControl)ZOption)ZCommand)r)ZAltr)ZMeta�McCs"g|]}t|D]}||f�qqS�)�
_modifiers��.0�number�namerr�-/usr/local/lib/python3.9/idlelib/multicall.py�
<listcomp>7s�r&zapplication has been destroyedc@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�
_SimpleBindercCs8||_dt|dd|_||_||_g|_d|_dS)N�<r�>)�type�_types�sequence�widget�
widgetinst�bindedfuncs�	handlerid)�selfr*r-r.rrr%�__init__Jsz_SimpleBinder.__init__cCs>|js.|j|jfdd�}|j�|j|j|�|_|j�|�dS)NcSsT||_i}tt|�ddd�D]0}||}||vrd||<||�}|r|SqdS)Nr���T)�mc_type�range�len)�event�lr4�	wascalled�i�func�rrrr%�handlerTsz#_SimpleBinder.bind.<locals>.handler)r0r/r*r-�bindr.r,�append)r1�tripletr;r=rrr%r>Rs

�z_SimpleBinder.bindcCs2|j�|�|js.|j�|j|j|j�d|_dS�N)r/�remover-�unbindr.r,r0)r1r@r;rrr%rCbsz_SimpleBinder.unbindc
Cs\|jrXz|j�|j|j|j�Wn6tjyV}zt|jdvrB�WYd}~n
d}~00dS�Nr)	r0r-rCr.r,�tkinter�TclError�APPLICATION_GONE�args)r1�errr%�__del__hs�z_SimpleBinder.__del__N)�__name__�
__module__�__qualname__r2r>rCrJrrrr%r'Isr'cs(g|] �d��fdd�tt�D���qS)�c3s*|]"\}}d|>�@r|ddVqdS)rr�-Nr)r"r:�m��srr%�	<genexpr>ws�z<listcomp>.<genexpr>)�join�	enumerater )r"rrQr%r&ws��csLdd�}g}|D]6�tt�fdd�|D���}|j|dd�|�|�q|S)z�For each item of states return a list containing all combinations of
    that item with individual bits reset, sorted by the number of set bits.
    cSs$d}|r t|d�\}}||7}q|S)znumber of bits set in n base 2rr)�divmod)�n�nb�remrrr%�nbits�s

zexpand_substates.<locals>.nbitsc3s|]}�|@VqdSrAr)r"�x��staterr%rS��z#expand_substates.<locals>.<genexpr>T)�key�reverse)�list�set�sortr?)ZstatesrZZ	statelistZ	substatesrr\r%�expand_substates|srdc@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�_ComplexBindercCs||||j|jfdd�}|S)NcSs�dg|dd�<||_||_i}d}|D]R}tt|�ddd�D]0}	||	}
|
|vr>d||
<||	|�}|r>qpq>|r&qzq&g|dd�<|D]
}|�q�g|dd�<|r�|SdS)NTrr3)r4�mc_stater5r6)r7�listsr4rf�ishandlerrunning�doafterhandlerr9r<r8r:r;�frrr%r=�s*z0_ComplexBinder.__create_handler.<locals>.handler)rhri)r1rgr4rfr=rrr%Z__create_handler�s�
z_ComplexBinder.__create_handlerc	s�|�_t|d�_|�_|�_ddd�tD�i�_g�_g�_g�_	tD]`}�fdd�t
|D�}��||t|�}dt
|�jd}�j�|�j��j||�f�qJdS)NrcSsg|]}g�qSrr�r"rRrrr%r&�r^z+_ComplexBinder.__init__.<locals>.<listcomp>csg|]}�jd|�qSrA)r/�r"r:�r1rr%r&�r^r(r))r*r+�typenamer-r.�_statesr/�
handleridsrhri�_state_subsets�_ComplexBinder__create_handler�_state_codes�_state_namesr?r>)r1r*r-r.rRrgr=�seqrrmr%r2�s�z_ComplexBinder.__init__c	s��d�jvr�dd�tD��j�d<tD]j���fdd��ddfD�}��|�jt��}dt��j�df}�j�|�j	�
�j||�f�q*���fdd�}�js�|�n�j
�|�dS)NrcSsg|]}g�qSrrrkrrr%r&�r^z'_ComplexBinder.bind.<locals>.<listcomp>cs(g|] }t�D]}�j||�qqSr)rqr/)r"�detailr:)rRr1rr%r&�s�z	<%s%s-%s>cs�j�d�d���S�Nrr)r/r?r�r;r1r@rr%�<lambda>�r^z%_ComplexBinder.bind.<locals>.<lambda>)r/rorrr*rsrtrnrpr?r-r>r.rhri)r1r@r;rgr=ru�doitr)r;rRr1r@r%r>�s"
�
��
z_ComplexBinder.bindcs.���fdd�}�js|�n�j�|�dS)Ncs�j�d�d���Srw)r/rBrrxrr%ry�r^z'_ComplexBinder.unbind.<locals>.<lambda>)rhrir?)r1r@r;rzrrxr%rC�sz_ComplexBinder.unbindcCsb|jD]V\}}z|j�|j||�WqtjyZ}zt|jdvrF�WYd}~qd}~00qdSrD)rpr-rCr.rErFrGrH)r1ru�idrIrrr%rJ�sz_ComplexBinder.__del__N)rKrLrMrrr2r>rCrJrrrr%re�s
re))�KeyPressZKey)�
KeyRelease)ZButtonPressZButton)Z
ButtonRelease)ZActivate)Z	Circulate)ZColormap)Z	Configure)Z
Deactivate)ZDestroy)ZEnter)ZExpose)ZFocusIn)ZFocusOut)ZGravity)ZLeave)ZMap)ZMotion)Z
MouseWheel)ZProperty)ZReparent)ZUnmap)Z
VisibilitycCs"g|]}t|D]}||f�qqSr)r+r!rrr%r&s�z^\w+$z^[1-5]$cCs|r|ddks|ddkr dS|dd��d�}d}|rb|dtvrb|dt|d>O}|d=q6|r�|dtvr�t|d}|d=ndSt|tur�|s�|r�dSd}nN|dd	�d
D�vr�t}nt}|s�d}n(t|�dkr�|�|d�r�|d}ndS|||fS)a-Get a string which should describe an event sequence. If it is
    successfully parsed as one, return a tuple containing the state (as an int),
    the event type (as an index of _types), and the detail - None if none, or a
    string if there is one. If the parsing is unsuccessful, return None.
    rr(r3r)NrrOcSsg|]}t|�qSr)�_type_namesrkrrr%r&$r^z#_parse_sequence.<locals>.<listcomp>)r|r})	�split�_modifier_namesr~�_binder_classesr'�
_keysym_re�
_button_rer6�match)r,�words�	modifiersr*rvZtype_rerrr%�_parse_sequences0
r�cCs`|dr8dt|dt|ddd|ddSdt|dt|dddSdS)Nrr(rrrOr))rtr+)r@rrr%�_triplet_to_sequence2s"��r�cs0�tvrt�SG�fdd�d��}|t�<|S)z�Return a MultiCall class which inherits its methods from the
    given widget class (for example, Tkinter.Text). This is used
    instead of a templating mechanism.
    csreZdZe�ej�sJ��fdd�Zd�fdd�	Zd�fdd�	Z�fdd	�Z	�fd
d�Z
d�fdd
�	Zdd�ZdS)z#MultiCallCreator.<locals>.MultiCallcs@�j�g|�Ri|��i�_��fdd�ttt��D��_dS)Ncsg|]}t||����qSr)r�rl)r1r-rr%r&Ks�z@MultiCallCreator.<locals>.MultiCall.__init__.<locals>.<listcomp>)r2�_MultiCall__eventinfor5r6r+�_MultiCall__binders)r1rH�kwargs�r-rmr%r2Es

�z,MultiCallCreator.<locals>.MultiCall.__init__Ncs�t|�tur�t|�dkr�|dd�dkr�|dd�dkr�||jvr�|j|}|ddur�|dD]}|j|d�||d�q`||d<|ddur�|dD]}|j|d�||�q�n|gg|j|<��||||�S)Nr�<<����>>rr)r*�strr6r�r�rCr>)r1r,r;�add�eir@r�rr%r>Ns ��

z(MultiCallCreator.<locals>.MultiCall.bindcs�t|�tur�t|�dkr�|dd�dkr�|dd�dkr�||jvr�|j|\}}|dur�|D]}|j|d�||�q\d|j|d<��|||�S)Nrr�r�r�rr)r*r�r6r�r�rC)r1r,Zfuncidr;�tripletsr@r�rr%rC`s���z*MultiCallCreator.<locals>.MultiCall.unbindcs|||jvrdgg|j|<|j|\}}|D]L}t|�}|durN��|||�q*|durl|j|d�||�|�|�q*dS�Nr)r�r��	event_addr�r>r?�r1�virtual�	sequencesr;r�rur@r�rr%r�ks
z-MultiCallCreator.<locals>.MultiCall.event_addcsr||jvrdS|j|\}}|D]L}t|�}|durD��|||�q |durb|j|d�||�|�|�q dSr�)r�r��event_deleter�rCrBr�r�rr%r�|s
z0MultiCallCreator.<locals>.MultiCall.event_deletecsF|dus||jvr��||�Sttt|j|d����||�SdSr�)r��
event_info�tuple�mapr�)r1r�r�rr%r��s�
�z.MultiCallCreator.<locals>.MultiCall.event_infocSs~|jD]r}|j|\}}|r|D]V}z|j|d�||�Wq tjyt}zt|jdvr`�WYd}~q d}~00q qdS)Nrr)r�r�rCrErFrGrH)r1r�r;r�r@rIrrr%rJ�s
z+MultiCallCreator.<locals>.MultiCall.__del__)NNN)N)N)
rKrLrM�
issubclassrEZMiscr2r>rCr�r�r�rJrr�rr%�	MultiCallBs	r�)�_multicall_dict)r-r�rr�r%�MultiCallCreator:s
[r�cs�t�|�}|�d�tt|���d�dd��\}}|�d||df�ttj�|����	�dgf�fdd�	}|d	�|d
�|d�|d�|d
�|d�|d�|d�|d�|d�|d�|d�dS)NzTest MultiCall�+rz+%d+%d�rcsH�fdd�}��d|d|���d|d��|dd7<dS)Ncst��dSrA)�print)r7�rurr%r=�sz-_multi_call.<locals>.bindseq.<locals>.handlerz
<<handler%d>>rr)r>r�)rurWr=��textr�r%�bindseq�sz_multi_call.<locals>.bindseqz<Key>z
<Control-Key>z<Alt-Key-a>z<Control-Key-a>z<Alt-Control-Key-a>z<Key-b>z<Control-Button-1>z
<Button-2>z<Alt-Button-1>z
<FocusOut>z<Enter>z<Leave>)
rEZToplevel�titler��intZgeometryrr��Text�pack)�parent�topr[�yr�rr�r%�_multi_call�s&

 r��__main__)�mainzidlelib.idle_test.test_mainmenuF)�	verbosity�exit)�run)D�__doc__�re�sysrEZMC_KEYPRESSZ
MC_KEYRELEASEZMC_BUTTONPRESSZMC_BUTTONRELEASEZMC_ACTIVATEZMC_CIRCULATEZMC_COLORMAPZMC_CONFIGUREZ
MC_DEACTIVATEZ
MC_DESTROYZMC_ENTERZ	MC_EXPOSEZ
MC_FOCUSINZMC_FOCUSOUTZ
MC_GRAVITYZMC_LEAVEZMC_MAPZ	MC_MOTIONZ
MC_MOUSEWHEELZMC_PROPERTYZMC_REPARENTZMC_UNMAPZ
MC_VISIBILITYZMC_SHIFTZ
MC_CONTROLZMC_ALTZMC_METAZ	MC_OPTIONZ
MC_COMMAND�platformr Z_modifier_masks�dictr5r6r�rGr'rortrdrqrsrRr<r:r?rer+r�r~�compiler�r�r�r�r�r�r�rKZunittestr�Zidlelib.idle_test.htestr�rrrr%�<module>sf

�
-�_

�

'g


Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists