a
    "hH                     @   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rd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 ]BZ.d Z/e$e%e!D ] Z0de0> e.@ r.e/e"e0 O Z/q.e-1e/ qG 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 ):    N                        	   
                                           @      darwin)ZShiftZControl)ZOption)ZCommand)r   )ZAltr   )ZMetaMc                 C   s"   g | ]}t | D ]}||fqqS  )
_modifiers.0numbernamer   r   9/opt/python-3.9.21/usr/lib/python3.9/idlelib/multicall.py
<listcomp>7   s   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 ]0}|| }||vrd||< || }|r|  S qd S )Nr   T)mc_typerangelen)eventlr4   	wascalledifuncrr   r   r%   handlerT   s    z#_SimpleBinder.bind.<locals>.handler)r0   r/   r*   r-   bindr.   r,   append)r1   tripletr;   r=   r   r   r%   r>   R   s    

z_SimpleBinder.bindc                 C   s2   | j | | j s.| j| j| j| j d | _d S N)r/   remover-   unbindr.   r,   r0   )r1   r@   r;   r   r   r%   rC   b   s    z_SimpleBinder.unbindc              
   C   s\   | j rXz| j| j| j| j  W n6 tjyV } zt|jd vrB W Y d }~n
d }~0 0 d S Nr   )	r0   r-   rC   r.   r,   tkinterTclErrorAPPLICATION_GONEargs)r1   er   r   r%   __del__h   s    z_SimpleBinder.__del__N)__name__
__module____qualname__r2   r>   rC   rJ   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   rQ   r%   r&   w   s   c                    sL   dd }g }| D ]6 t t fdd| D }|j|dd || q|S )Nc                 S   s$   d}| r t | d\} }||7 }q|S )Nr   r   )divmod)nnbremr   r   r%   nbits   s
    
zexpand_substates.<locals>.nbitsc                 3   s   | ]} |@ V  qd S rA   r   )r"   xstater   r%   rS          z#expand_substates.<locals>.<genexpr>T)keyreverse)listsetsortr?   )ZstatesrZ   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 ]R}tt|d ddD ]0}	||	 }
|
|vr>d||
< ||	 | }|r> qpq>|r& qzq&g |d d < |D ]
}|  qg |d d < |r|S d S )NTr   r3   )r4   mc_stater5   r6   )r7   listsr4   rf   ishandlerrunningdoafterhandlerr9   r<   r8   r:   r;   fr   r   r%   r=      s*    z0_ComplexBinder.__create_handler.<locals>.handler)rh   ri   )r1   rg   r4   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 ]`} fddt
| D } ||t| }dt|   j d } j| j j||f qJd S )Nr   c                 S   s   g | ]}g qS r   r   r"   rR   r   r   r%   r&      r^   z+_ComplexBinder.__init__.<locals>.<listcomp>c                    s   g | ]} j d  | qS rA   )r/   r"   r:   r1   r   r%   r&      r^   r(   r)   )r*   r+   typenamer-   r.   _statesr/   
handleridsrh   ri   _state_subsets_ComplexBinder__create_handler_state_codes_state_namesr?   r>   )r1   r*   r-   r.   rR   rg   r=   seqr   rm   r%   r2      s    z_ComplexBinder.__init__c              	      s   d j vrdd tD j d < tD ]jfddd d fD }|jt }dt jd f }j|j	
j||f q* fdd}js|  nj| d S )Nr   c                 S   s   g | ]}g qS r   r   rk   r   r   r%   r&      r^   z'_ComplexBinder.bind.<locals>.<listcomp>c                    s(   g | ] }t   D ]}j| | qqS r   )rq   r/   )r"   detailr:   )rR   r1   r   r%   r&      s   z	<%s%s-%s>c                      s   j d  d   S Nr   r   )r/   r?   r   r;   r1   r@   r   r%   <lambda>   r^   z%_ComplexBinder.bind.<locals>.<lambda>)r/   ro   rr   r*   rs   rt   rn   rp   r?   r-   r>   r.   rh   ri   )r1   r@   r;   rg   r=   ru   doitr   )r;   rR   r1   r@   r%   r>      s"    


z_ComplexBinder.bindc                    s.    fdd}j s|  nj| d S )Nc                      s   j d  d   S rw   )r/   rB   r   rx   r   r%   ry      r^   z'_ComplexBinder.unbind.<locals>.<lambda>)rh   ri   r?   )r1   r@   r;   rz   r   rx   r%   rC      s    z_ComplexBinder.unbindc                 C   sb   | j D ]V\}}z| j| j|| W q tjyZ } zt|jd vrF W Y d }~qd }~0 0 qd S rD   )rp   r-   rC   r.   rE   rF   rG   rH   )r1   ru   idrI   r   r   r%   rJ      s    z_ComplexBinder.__del__N)rK   rL   rM   rr   r2   r>   rC   rJ   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   s"   g | ]}t | D ]}||fqqS r   )r+   r!   r   r   r%   r&     s   z^\w+$z^[1-5]$c                 C   s   | r| d dks| d dkr d S | dd  d}d}|rb|d tv rb|dt|d  > O }|d= q6|r|d tv rt|d  }|d= nd S t| tu r|s|rd S d }nN|dd d	D v rt}nt}|sd }n(t|dkr||d r|d }nd S |||fS )
Nr   r(   r3   r)   r   rO   c                 S   s   g | ]}t | qS r   )_type_namesrk   r   r   r%   r&   $  r^   z#_parse_sequence.<locals>.<listcomp>)r|   r}   )	split_modifier_namesr~   _binder_classesr'   
_keysym_re
_button_rer6   match)r,   words	modifiersr*   rv   Ztype_rer   r   r%   _parse_sequence  s0    
r   c                 C   s`   | d r8dt | d   t| d  d  d | d  d S dt | d   t| d  d  d S d S )Nr   r(   r   r   rO   r)   )rt   r+   )r@   r   r   r%   _triplet_to_sequence2  s    "r   c                    s0    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   rl   )r1   r-   r   r%   r&   K  s   z@MultiCallCreator.<locals>.MultiCall.__init__.<locals>.<listcomp>)r2   _MultiCall__eventinfor5   r6   r+   _MultiCall__binders)r1   rH   kwargsr-   rm   r%   r2   E  s
    
z,MultiCallCreator.<locals>.MultiCall.__init__Nc                    s   t |tu rt|dkr|d d dkr|dd  dkr|| jv r| j| }|d d ur|d D ]}| j|d  ||d  q`||d< |d d ur|d D ]}| j|d  || qn|g g| j|<  | |||S )Nr   <<>>r   r   )r*   strr6   r   r   rC   r>   )r1   r,   r;   addeir@   r   r   r%   r>   N  s     

z(MultiCallCreator.<locals>.MultiCall.bindc                    s   t |tu rt|dkr|d d dkr|dd  dkr|| jv r| j| \}}|d ur|D ]}| j|d  || q\d | j| d<  | ||S )Nr   r   r   r   r   r   )r*   r   r6   r   r   rC   )r1   r,   Zfuncidr;   tripletsr@   r   r   r%   rC   `  s    z*MultiCallCreator.<locals>.MultiCall.unbindc                    s|   || j vrd g g| j |< | j | \}}|D ]L}t|}|d u rN | || q*|d url| j|d  || || q*d S Nr   )r   r   	event_addr   r>   r?   r1   virtual	sequencesr;   r   ru   r@   r   r   r%   r   k  s    
z-MultiCallCreator.<locals>.MultiCall.event_addc                    sr   || j vrd S | j | \}}|D ]L}t|}|d u rD | || q |d urb| j|d  || || q d S r   )r   r   event_deleter   rC   rB   r   r   r   r%   r   |  s    
z0MultiCallCreator.<locals>.MultiCall.event_deletec                    sF   |d u s|| j vr | |S ttt| j | d  | | S d S r   )r   
event_infotuplemapr   )r1   r   r   r   r%   r     s    
z.MultiCallCreator.<locals>.MultiCall.event_infoc                 S   s~   | j D ]r}| j | \}}|r|D ]V}z| j|d  || W q  tjyt } zt|jd vr` W Y d }~q d }~0 0 q qd S )Nr   r   )r   r   rC   rE   rF   rG   rH   )r1   r   r;   r   r@   rI   r   r   r%   rJ     s    
z+MultiCallCreator.<locals>.MultiCall.__del__)NNN)N)N)
rK   rL   rM   r2   r>   rC   r   r   r   rJ   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 rA   )print)r7   ru   r   r%   r=     s    z-_multi_call.<locals>.bindseq.<locals>.handlerz<<handler%d>>r   r   )r>   r   )ru   rW   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>)
rE   ZTopleveltitler   intZgeometryr   r   Textpack)parenttopr[   yr   r   r   r%   _multi_call  s&    

 r   __main__)mainzidlelib.idle_test.test_mainmenuF)	verbosityexit)run)CresysrE   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dictr5   r6   r   rG   r'   ro   rt   rd   rq   rs   rR   r<   r:   r?   re   r+   r   r~   compiler   r   r   r   r   r   r   rK   Zunittestr   Zidlelib.idle_test.htestr   r   r   r   r%   <module>   sd   


-_



'g
