o
     JAfH                     @   s  	 d dl Z d dlZd dlZd ZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZd	ZdZdZdZej dkrUdZ!eeeefZ"ndZ!eeeefZ"e#dd e$e%e!D Z&d Z'G d!d" d"Z(e$de%e!> Z)d#d e)D Z*d$d% Z+e+e)Z,g Z-e)D ]Z.d Z/e$e%e!D ]Z0de0> e.@ re/e"e0 O Z/qe-1e/ qG d&d' d'Z2d(Z3e2fd e(fe%e3d   Z4e#d)d e$e%e3D Z5e 6d*Z7e 6d+Z8d,d- Z9d.d/ Z:i Z;d0d1 Z<d2d3 Z=e>d4krd d5l?m@Z@ e@d6dd7d8 d d9lAmBZB eBe= dS dS ):    N                        	   
                                           @      darwin)ZShiftZControl)ZOption)ZCommand)r   )ZAltr   )ZMetaMc                 C   "   g | ]}t | D ]}||fqqS  )
_modifiers.0Znumbernamer    r    (/usr/lib/python3.10/idlelib/multicall.py
<listcomp>7       r&   zapplication has been destroyedc                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
_SimpleBinderc                 C   s8   || _ dt| d  d | _|| _|| _g | _d | _d S )N<r   >)type_typessequencewidget
widgetinstbindedfuncs	handlerid)selfr+   r.   r/   r    r    r%   __init__J   s   
z_SimpleBinder.__init__c                 C   s>   | j s| j| jfdd}| j| j| j|| _ | j| d S )Nc                 S   sT   || _ i }tt|d ddD ]}|| }||vr'd||< || }|r'|  S qd S )Nr   T)mc_typerangelen)eventlr5   	wascalledifuncrr    r    r%   handlerT   s   z#_SimpleBinder.bind.<locals>.handler)r1   r0   r+   r.   bindr/   r-   append)r2   tripletr<   r>   r    r    r%   r?   R   s   

z_SimpleBinder.bindc                 C   s6   | j | | j s| j| j| j| j d | _d S d S N)r0   remover.   unbindr/   r-   r1   )r2   rA   r<   r    r    r%   rD   b   s
   
z_SimpleBinder.unbindc              
   C   s`   | j r.z| j| j| j| j  W d S  tjy- } zt|jd vr" W Y d }~d S d }~ww d S Nr   )	r1   r.   rD   r/   r-   tkinterTclErrorAPPLICATION_GONEargs)r2   er    r    r%   __del__h   s   
z_SimpleBinder.__del__N)__name__
__module____qualname__r3   r?   rD   rK   r    r    r    r%   r(   I   s
    r(   c                    s(   g | ] d   fddttD qS ) c                 3   s,    | ]\}}d |>  @ r|d d V  qdS )r   r   -Nr    )r#   r;   msr    r%   	<genexpr>w   s
    
z<listcomp>.<genexpr>)join	enumerater!   )r#   r    rR   r%   r&   w   s
    c                    sN   	 dd }g }| D ] t t fdd| D }|j|dd || q	|S )Nc                 S   s(   	 d}| rt | d\} }||7 }| s|S )Nr   r   )divmod)nnbremr    r    r%   nbits   s   zexpand_substates.<locals>.nbitsc                 3   s    | ]} |@ V  qd S rB   r    )r#   xstater    r%   rT      s    z#expand_substates.<locals>.<genexpr>T)keyreverse)listsetsortr@   )Zstatesr[   Z	statelistZ	substatesr    r]   r%   expand_substates|   s   rd   c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )_ComplexBinderc                 C   s   |||| j | jfdd}|S )Nc                 S   s   dg|d d < || _ || _i }d }|D ])}tt|d ddD ]}	||	 }
|
|vr7d||
< ||	 | }|r7 nq|r< nqg |d d < |D ]}|  qEg |d d < |rU|S d S )NTr   r4   )r5   mc_stater6   r7   )r8   listsr5   rf   ishandlerrunningdoafterhandlerr:   r=   r9   r;   r<   fr    r    r%   r>      s0   z0_ComplexBinder.__create_handler.<locals>.handler)rh   ri   )r2   rg   r5   rf   r>   r    r    r%   Z__create_handler   s   
z_ComplexBinder.__create_handlerc              	      s   | _ t| d  _| _| _d dd tD i _g  _g  _g  _	tD ]0} fddt
| D } ||t| }dt|   j d } j| j j||f q%d S )Nr   c                 S      g | ]}g qS r    r    r#   rS   r    r    r%   r&          z+_ComplexBinder.__init__.<locals>.<listcomp>c                    s   g | ]	} j d  | qS rB   )r0   r#   r;   r2   r    r%   r&      s    r)   r*   )r+   r,   typenamer.   r/   _statesr0   
handleridsrh   ri   _state_subsets_ComplexBinder__create_handler_state_codes_state_namesr@   r?   )r2   r+   r.   r/   rS   rg   r>   seqr    ro   r%   r3      s    
z_ComplexBinder.__init__c              	      s   d j vrKdd tD j d < tD ]5fddd d fD }|jt }dt jd f }j|j	
j||f q fdd}js[|  d S j| d S )Nr   c                 S   rk   r    r    rl   r    r    r%   r&      rm   z'_ComplexBinder.bind.<locals>.<listcomp>c                    s(   g | ]}t   D ]	}j| | qqS r    )rs   r0   )r#   detailr;   )rS   r2   r    r%   r&      s    z	<%s%s-%s>c                         j d  d   S Nr   r   )r0   r@   r    r<   r2   rA   r    r%   <lambda>       z%_ComplexBinder.bind.<locals>.<lambda>)r0   rq   rt   r+   ru   rv   rp   rr   r@   r.   r?   r/   rh   ri   )r2   rA   r<   rg   r>   rw   doitr    )r<   rS   r2   rA   r%   r?      s"   



z_ComplexBinder.bindc                    s0    fdd}j s|  d S j| d S )Nc                      ry   rz   )r0   rC   r    r{   r    r%   r|      r}   z'_ComplexBinder.unbind.<locals>.<lambda>)rh   ri   r@   )r2   rA   r<   r~   r    r{   r%   rD      s   
z_ComplexBinder.unbindc                 C   s`   | j D ]*\}}z| j| j|| W q tjy- } zt|jd vr# W Y d }~qd }~ww d S rE   )rr   r.   rD   r/   rF   rG   rH   rI   )r2   rw   idrJ   r    r    r%   rK      s   z_ComplexBinder.__del__N)rL   rM   rN   rt   r3   r?   rD   rK   r    r    r    r%   re      s    re   ))KeyPressZKey)
KeyRelease)ZButtonPressZButton)ZButtonRelease)ZActivate)Z	Circulate)ZColormap)Z	Configure)Z
Deactivate)ZDestroy)ZEnter)ZExpose)ZFocusIn)ZFocusOut)ZGravity)ZLeave)ZMap)ZMotion)Z
MouseWheel)ZProperty)ZReparent)ZUnmap)Z
Visibilityc                 C   r   r    )r,   r"   r    r    r%   r&     r'   z^\w+$z^[1-5]$c                 C   s  	 | r| d dks| d dkrd S | dd  d}d}|r9|d tv r9|dt|d  > O }|d= |r9|d tv s$|rK|d tv rKt|d  }|d= nd S t| tu r\|sW|rYd S d }n'|dd d	D v rht}nt}|sod }nt|dkr||d r|d }nd S |||fS )
Nr   r)   r4   r*   r   rP   c                 S   s   g | ]}t | qS r    )_type_namesrl   r    r    r%   r&   $  s    z#_parse_sequence.<locals>.<listcomp>)r   r   )	split_modifier_namesr   _binder_classesr(   
_keysym_re
_button_rer7   match)r-   words	modifiersr+   rx   Ztype_rer    r    r%   _parse_sequence  s4   

r   c                 C   s\   | d rdt | d   t| d  d  d | d  d S dt | d   t| d  d  d S )Nr   r)   r   r   rP   r*   )rv   r,   )rA   r    r    r%   _triplet_to_sequence2  s   "$r   c                    s2   	  t v r	t   S G  fddd }|t  < |S )Nc                       sb   e Zd Z fddZd fdd	Zd fdd	Z fdd	Z fd
dZd fdd	Zdd Z	dS )z#MultiCallCreator.<locals>.MultiCallc                    s@   j  g|R i | i  _ fddtttD  _d S )Nc                    s   g | ]
}t | | qS r    )r   rn   )r2   r.   r    r%   r&   K  s    z@MultiCallCreator.<locals>.MultiCall.__init__.<locals>.<listcomp>)r3   _MultiCall__eventinfor6   r7   r,   _MultiCall__binders)r2   rI   kwargsr.   ro   r%   r3   E  s
   
z,MultiCallCreator.<locals>.MultiCall.__init__Nc                    s   t |tu rdt|dkrd|d d dkrd|dd  dkrd|| jv r]| j| }|d d ur@|d D ]}| j|d  ||d  q0||d< |d d ur\|d D ]}| j|d  || qNn|g g| j|<  | |||S )Nr   <<>>r   r   )r+   strr7   r   r   rD   r?   )r2   r-   r<   addeirA   r   r    r%   r?   N  s    

z(MultiCallCreator.<locals>.MultiCall.bindc                    s   t |tu rCt|dkrC|d d dkrC|dd  dkrC|| jv rC| j| \}}|d urC|D ]}| j|d  || q.d | j| d<  | ||S )Nr   r   r   r   r   r   )r+   r   r7   r   r   rD   )r2   r-   Zfuncidr<   tripletsrA   r   r    r%   rD   `  s    
z*MultiCallCreator.<locals>.MultiCall.unbindc                    s|   || j vrd g g| j |< | j | \}}|D ]&}t|}|d u r' | || q|d ur6| j|d  || || qd S Nr   )r   r   	event_addr   r?   r@   r2   virtual	sequencesr<   r   rw   rA   r   r    r%   r   k  s   
z-MultiCallCreator.<locals>.MultiCall.event_addc                    sr   || j vrd S | j | \}}|D ]&}t|}|d u r" | || q|d ur1| j|d  || || qd S r   )r   r   event_deleter   rD   rC   r   r   r    r%   r   |  s   
z0MultiCallCreator.<locals>.MultiCall.event_deletec                    sB   |d u s	|| j vr | |S ttt| j | d  | | S r   )r   
event_infotuplemapr   )r2   r   r   r    r%   r     s   
z.MultiCallCreator.<locals>.MultiCall.event_infoc                 S   s|   | j D ]8}| j | \}}|r;|D ]*}z| j|d  || W q tjy: } zt|jd vr0 W Y d }~qd }~ww qd S )Nr   r   )r   r   rD   rF   rG   rH   rI   )r2   r   r<   r   rA   rJ   r    r    r%   rK     s   
z+MultiCallCreator.<locals>.MultiCall.__del__)NNNrB   )
rL   rM   rN   r3   r?   rD   r   r   r   rK   r    r   r    r%   	MultiCallB  s    	r   )_multicall_dict)r.   r   r    r   r%   MultiCallCreator:  s   [r   c                    s   t | }|d tt|  ddd  \}}|d||d f  tt j|  	  dgf fdd	}|d	 |d
 |d |d |d |d |d |d |d |d |d |d d S )NzTest MultiCall+r   z+%d+%d   r   c                    sH    fdd} d|d  | d|d    |d  d7  < d S )Nc                    s   t   d S rB   )print)r8   rw   r    r%   r>     s   z-_multi_call.<locals>.bindseq.<locals>.handlerz<<handler%d>>r   r   )r?   r   )rw   rX   r>   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>)
rF   ZTopleveltitler   intZgeometryr   r   ZTextpack)parenttopr\   yr   r    r   r%   _multi_call  s&   

 r   __main__)mainzidlelib.idle_test.test_mainmenuF)	verbosityexit)run)CresysrF   ZMC_KEYPRESSZMC_KEYRELEASEZMC_BUTTONPRESSZMC_BUTTONRELEASEZMC_ACTIVATEZMC_CIRCULATEZMC_COLORMAPZMC_CONFIGUREZMC_DEACTIVATEZ
MC_DESTROYZMC_ENTERZ	MC_EXPOSEZ
MC_FOCUSINZMC_FOCUSOUTZ
MC_GRAVITYZMC_LEAVEZMC_MAPZ	MC_MOTIONZMC_MOUSEWHEELZMC_PROPERTYZMC_REPARENTZMC_UNMAPZMC_VISIBILITYZMC_SHIFTZ
MC_CONTROLZMC_ALTZMC_METAZ	MC_OPTIONZ
MC_COMMANDplatformr!   Z_modifier_masksdictr6   r7   r   rH   r(   rq   rv   rd   rs   ru   rS   r=   r;   r@   re   r,   r   r   compiler   r   r   r   r   r   r   rL   Zunittestr   Zidlelib.idle_test.htestr   r    r    r    r%   <module>   sl    


-_



'g
