Uname: Linux web3.us.cloudlogin.co 5.10.226-xeon-hst #2 SMP Fri Sep 13 12:28:44 UTC 2024 x86_64
Software: Apache
PHP version: 8.1.31 [ PHP INFO ] PHP os: Linux
Server Ip: 162.210.96.117
Your Ip: 18.118.142.2
User: edustar (269686) | Group: tty (888)
Safe Mode: OFF
Disable Function:
NONE

name : multicall.cpython-310.pyc
o

_b�H�@sdZddlZddlZddlZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZd
ZdZdZdZ ej!dkrVdZ"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]Z/dZ0e%e&e"��D]Z1de1>e/@r�e0e#e1OZ0q�e.�2e0�q�Gd'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�rdd6l@mAZAeAd7dd8d9�dd:lBmCZCeCe>�dSdS);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�McC�"g|]
}t|D]}||f�qqS�)�
_modifiers��.0Znumber�namer r �:/usr/local/python-3.10/lib/python3.10/idlelib/multicall.py�
<listcomp>7���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/r r r%�__init__Js
z_SimpleBinder.__init__cCs>|js|j|jfdd�}|j�|j|j|�|_|j�|�dS)NcSsT||_i}tt|�ddd�D]}||}||vr'd||<||�}|r'|SqdS)Nr���T)�mc_type�range�len)�event�lr5�	wascalled�i�func�rr r r%�handlerTs��z#_SimpleBinder.bind.<locals>.handler)r1r0r+r.�bindr/r-�append)r2�tripletr<r>r r r%r?Rs

�z_SimpleBinder.bindcCs6|j�|�|js|j�|j|j|j�d|_dSdS�N)r0�remover.�unbindr/r-r1)r2rAr<r r r%rDbs

�z_SimpleBinder.unbindc
Cs`|jr.z|j�|j|j|j�WdStjy-}zt|jdvr"�WYd}~dSd}~wwdS�Nr)	r1r.rDr/r-�tkinter�TclError�APPLICATION_GONE�args)r2�er r r%�__del__hs
�����z_SimpleBinder.__del__N)�__name__�
__module__�__qualname__r3r?rDrKr r r r%r(Is
r(cs(g|]�d��fdd�tt�D���qS)�c3s,�|]\}}d|>�@r|ddVqdS)rr�-Nr )r#r;�m��sr r%�	<genexpr>ws
�
�z<listcomp>.<genexpr>)�join�	enumerater!)r#r rRr%r&ws
��csLdd�}g}|D]�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}|rt|d�\}}||7}|s|S)znumber of bits set in n base 2rr)�divmod)�n�nb�remr r r%�nbits�s�zexpand_substates.<locals>.nbitsc3s�|]}�|@VqdSrBr )r#�x��stater r%rT�s�z#expand_substates.<locals>.<genexpr>T)�key�reverse)�list�set�sortr@)Zstatesr[Z	statelistZ	substatesr r]r%�expand_substates|srdc@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�_ComplexBindercCs||||j|jfdd�}|S)NcSs�dg|dd�<||_||_i}d}|D])}tt|�ddd�D]}	||	}
|
|vr7d||
<||	|�}|r7q8q|r<q=qg|dd�<|D]}|�qEg|dd�<|rU|SdS)NTrr4)r5�mc_stater6r7)r8�listsr5rf�ishandlerrunning�doafterhandlerr:r=r9r;r<�fr r r%r>�s0���z0_ComplexBinder.__create_handler.<locals>.handler)rhri)r2rgr5rfr>r r r%Z__create_handler�s
�z_ComplexBinder.__create_handlerc	s�|�_t|d�_|�_|�_ddd�tD�i�_g�_g�_g�_	tD]0}�fdd�t
|D�}��||t|�}dt
|�jd}�j�|�j��j||�f�q%dS)NrcS�g|]}g�qSr r �r#rSr r r%r&��z+_ComplexBinder.__init__.<locals>.<listcomp>csg|]	}�jd|�qSrB)r0�r#r;�r2r r%r&�sr)r*)r+r,�typenamer.r/�_statesr0�
handleridsrhri�_state_subsets�_ComplexBinder__create_handler�_state_codes�_state_namesr@r?)r2r+r.r/rSrgr>�seqr ror%r3�s 
��z_ComplexBinder.__init__c	s��d�jvrKdd�tD��j�d<tD]5���fdd��ddfD�}��|�jt��}dt��j�df}�j�|�j	�
�j||�f�q���fdd�}�js[|�dS�j
�|�dS)NrcSrkr r rlr r r%r&�rmz'_ComplexBinder.bind.<locals>.<listcomp>cs(g|]}t�D]	}�j||�qqSr )rsr0)r#�detailr;)rSr2r r%r&�s��z	<%s%s-%s>c��j�d�d���S�Nrr)r0r@r �r<r2rAr r%�<lambda>��z%_ComplexBinder.bind.<locals>.<lambda>)r0rqrtr+rurvrprrr@r.r?r/rhri)r2rAr<rgr>rw�doitr )r<rSr2rAr%r?�s"
�
�
�
z_ComplexBinder.bindcs0���fdd�}�js|�dS�j�|�dS)Ncryrz)r0rCr r{r r%r|�r}z'_ComplexBinder.unbind.<locals>.<lambda>)rhrir@)r2rAr<r~r r{r%rD�s
z_ComplexBinder.unbindcCs`|jD]*\}}z|j�|j||�Wqtjy-}zt|jdvr#�WYd}~qd}~wwdSrE)rrr.rDr/rFrGrHrI)r2rw�idrJr r r%rK�s����z_ComplexBinder.__del__N)rLrMrNrtr3r?rDrKr r r r%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
VisibilitycCrr )r,r"r r r%r&r'z^\w+$z^[1-5]$cCs|r|ddks|ddkrdS|dd��d�}d}|r8|dtvr8|dt|d>O}|d=|r8|dtvs#|rJ|dtvrJt|d}|d=ndSt|tur[|sV|rXdSd}n'|dd	�d
D�vrgt}nt}|snd}nt|�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)r4r*NrrPcSsg|]}t|�qSr )�_type_namesrlr r r%r&$sz#_parse_sequence.<locals>.<listcomp>)r�r�)	�split�_modifier_namesr��_binder_classesr(�
_keysym_re�
_button_rer7�match)r-�words�	modifiersr+rxZtype_rer r r%�_parse_sequences2�

r�cCs\|drdt|dt|ddd|ddSdt|dt|dddS)Nrr)rrrPr*)rvr,)rAr r r%�_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�sJ��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�rn)r2r.r r%r&Ks�z@MultiCallCreator.<locals>.MultiCall.__init__.<locals>.<listcomp>)r3�_MultiCall__eventinfor6r7r,�_MultiCall__binders)r2rI�kwargs�r.ror%r3Es

�z,MultiCallCreator.<locals>.MultiCall.__init__Ncs�t|�turdt|�dkrd|dd�dkrd|dd�dkrd||jvr]|j|}|ddur@|dD]}|j|d�||d�q0||d<|ddur\|dD]
}|j|d�||�qNn|gg|j|<��||||�S)Nr�<<����>>rr)r+�strr7r�r�rDr?)r2r-r<�add�eirAr�r r%r?Ns"��

�z(MultiCallCreator.<locals>.MultiCall.bindcs�t|�turCt|�dkrC|dd�dkrC|dd�dkrC||jvrC|j|\}}|durC|D]
}|j|d�||�q.d|j|d<��|||�S)Nrr�r�r�rr)r+r�r7r�r�rD)r2r-Zfuncidr<�tripletsrAr�r r%rD`s���z*MultiCallCreator.<locals>.MultiCall.unbindcs|||jvrdgg|j|<|j|\}}|D]&}t|�}|dur'��|||�q|dur6|j|d�||�|�|�qdS�Nr)r�r��	event_addr�r?r@�r2�virtual�	sequencesr<r�rwrAr�r r%r�ks
�z-MultiCallCreator.<locals>.MultiCall.event_addcsr||jvrdS|j|\}}|D]&}t|�}|dur"��|||�q|dur1|j|d�||�|�|�qdSr�)r�r��event_deleter�rDrCr�r�r r%r�|s
�z0MultiCallCreator.<locals>.MultiCall.event_deletecsB|dus	||jvr��||�Sttt|j|d����||�Sr�)r��
event_info�tuple�mapr�)r2r�r�r r%r��s�
�z.MultiCallCreator.<locals>.MultiCall.event_infocSs||jD]8}|j|\}}|r;|D]*}z
|j|d�||�Wqtjy:}zt|jdvr0�WYd}~qd}~wwqdS)Nrr)r�r�rDrFrGrHrI)r2r�r<r�rArJr r r%rK�s
�����z+MultiCallCreator.<locals>.MultiCall.__del__)NNNrB)
rLrMrN�
issubclassrFZMiscr3r?rDr�r�r�rKr r�r r%�	MultiCallBs	r�)�_multicall_dict)r.r�r r�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��dSrB)�print)r8�rwr r%r>�sz-_multi_call.<locals>.bindseq.<locals>.handlerz
<<handler%d>>rr)r?r�)rwrXr>��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>)
rFZToplevel�titler��intZgeometryr�r�ZText�pack)�parent�topr\�yr�r r�r%�_multi_call�s&

 r��__main__)�mainzidlelib.idle_test.test_mainmenuF)�	verbosity�exit)�run)D�__doc__�re�sysrFZMC_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�dictr6r7r�rHr(rqrvrdrsrurSr=r;r@rer,r�r��compiler�r�r�r�r�r�r�rLZunittestr�Zidlelib.idle_test.htestr�r r r r%�<module>sl

�
-��_

�

'g
�
© 2025 GrazzMean