
WH                 @   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 dP Z dQ Z dR Z dS Z dT Z dU Z e  j  d k r dZ 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' Gd# d$   d$  Z( e$ d e% e!  > Z) d% d!   e) D Z* d& d'   Z+ e+ e)  Z, g  Z- xZ e) D]R Z. d  Z/ x6 e$ e% e!   D]" Z0 d e0 >e. @re/ e" e0 OZ/ qWe- j1 e/  qWGd( d)   d)  Z2 dw Z3 e2 f d e( f e% e3  d Z4 e# dC d!   e$ e% e3   D  Z5 e j6 dD  Z7 e j6 dE  Z8 dF dG   Z9 dH dI   Z: i  Z; dJ dK   Z< dL dM   Z= e> dN k rd  dO l? m@ Z@ e@ e=  d S)x    N                        	   
                                       darwinShiftControlOptionCommandAltMetaMc             C   s-   g  |  ]# } t  | D] } | | f  q q S )
_modifiers).0numbernamer    r    >/afs/.cs/s/python-3.5.2/amd64_rhel6/lib/python3.5/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   sJ   | |  _  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   sV   |  j  sB |  j |  j d d  } |  j j |  j |  j |  |  _  |  j j |  d  S)Nc             S   sp   | |  _  i  } xZ t t |  d d d  D]< } | | } | | k r, d | | <| |   } | r, | Sq, Wd  S)Nr   Tr3   )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   sE   |  j  j |  |  j  sA |  j j |  j |  j |  j  d  |  _ d  S)N)r/   remover-   unbindr.   r,   r0   )r1   r@   r;   r    r    r%   rB   b   s    	z_SimpleBinder.unbindc             C   sq   |  j  rm y# |  j j |  j |  j |  j   Wn> t j k
 rl } z t | j d k rZ   WYd  d  } ~ Xn Xd  S)Nr   )	r0   r-   rB   r.   r,   tkinterTclErrorAPPLICATION_GONEargs)r1   er    r    r%   __del__h   s    	z_SimpleBinder.__del__N)__name__
__module____qualname__r2   r>   rB   rH   r    r    r    r%   r'   I   s   r'   c                s8   g  |  ].   d  j    f d d   t t  D   q S) c             3   s1   |  ]' \ } } 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    )rO   r%   r&   w   s   	c                so   d d   } g  } xV |  D]N   t  t   f d d   |  D   } | j d | d d  | j |  q W| S)Nc             S   s6   d } x) |  r1 t  |  d  \ }  } | | 7} q	 W| S)Nr   r   )divmod)nnbremr    r    r%   nbits   s
    	zexpand_substates.<locals>.nbitsc             3   s   |  ] }   | @Vq d  S)Nr    )r"   x)stater    r%   rP      s    z#expand_substates.<locals>.<genexpr>keyreverseT)listsetsortr?   )ZstatesrW   Z	statelistZ	substatesr    )rY   r%   expand_substates|   s    %r_   c               @   sL   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 d d  } | S)Nc             S   s   d g | d  d   <| |  _  | |  _ i  } d  } xs | D]k } x[ t t |  d d d  D]= }	 | |	 }
 |
 | k r[ d | |
 <| |	 |   } | r[ Pq[ W| r8 Pq8 Wg  | d  d   <x | D] } |   q Wg  | d  d   <| r | Sd  S)NTr   r3   r3   )r4   mc_stater5   r6   )r7   listsr4   ra   ishandlerrunningdoafterhandlerr9   r<   r8   r:   r;   fr    r    r%   r=      s*    		#

z0_ComplexBinder.__create_handler.<locals>.handler)rc   rd   )r1   rb   r4   ra   r=   r    r    r%   Z__create_handler   s
    z_ComplexBinder.__create_handlerc                s   |   _  t | d   _ |   _ |   _ d  d d   t D i   _ g    _ g    _ g    _	 x t D] }   f d d   t
 | D }   j | | t |  } d t |   j d }   j j |   j j   j | |  f  qj Wd  S)Nr   c             S   s   g  |  ] } g   q Sr    r    )r"   rO   r    r    r%   r&      s   	 z+_ComplexBinder.__init__.<locals>.<listcomp>c                s!   g  |  ] }   j  d  |  q S)N)r/   )r"   r:   )r1   r    r%   r&      s   	 r(   r)   )r*   r+   typenamer-   r.   _statesr/   
handleridsrc   rd   _state_subsets_ComplexBinder__create_handler_state_codes_state_namesr?   r>   )r1   r*   r-   r.   rO   rb   r=   seqr    )r1   r%   r2      s    						z_ComplexBinder.__init__c                s   d  j  k r d d   t D  j   d <x t D]    f d d    d d  f D }  j |  j t   } d t   j  d f }  j j |  j	 j
  j | |  f  q8 W    f d d   }  j s |   n  j j |  d  S)Nr   c             S   s   g  |  ] } g   q Sr    r    )r"   rO   r    r    r%   r&      s   	 z'_ComplexBinder.bind.<locals>.<listcomp>c                s2   g  |  ]( } t    D] }  j | |  q q Sr    )ri   r/   )r"   detailr:   )rO   r1   r    r%   r&      s   	z	<%s%s-%s>c                  s     j   d  d j    S)Nr   r   )r/   r?   r    )r;   r1   r@   r    r%   <lambda>   s    z%_ComplexBinder.bind.<locals>.<lambda>)r/   rg   rj   r*   rk   rl   rf   rh   r?   r-   r>   r.   rc   rd   )r1   r@   r;   rb   r=   rm   doitr    )r;   rO   r1   r@   r%   r>      s    	
z_ComplexBinder.bindc                s?       f d d   }  j  s+ |   n  j j |  d  S)Nc                  s     j   d  d j    S)Nr   r   )r/   rA   r    )r;   r1   r@   r    r%   ro      s    z'_ComplexBinder.unbind.<locals>.<lambda>)rc   rd   r?   )r1   r@   r;   rp   r    )r;   r1   r@   r%   rB      s    	
z_ComplexBinder.unbindc             C   s|   xu |  j  D]j \ } } y |  j j |  j | |  Wq
 t j k
 rs } z t | j d k ra   WYd  d  } ~ Xq
 Xq
 Wd  S)Nr   )rh   r-   rB   r.   rC   rD   rE   rF   )r1   rm   idrG   r    r    r%   rH      s    z_ComplexBinder.__del__N)rI   rJ   rK   rj   r2   r>   rB   rH   r    r    r    r%   r`      s
   r`   KeyPressKey
KeyReleaseButtonPressButtonButtonReleaseActivate	CirculateColormap	Configure
DeactivateDestroyEnterExposeFocusInFocusOutGravityLeaveMapMotion
MouseWheelPropertyReparentUnmap
Visibilityc             C   s-   g  |  ]# } t  | D] } | | f  q q Sr    )r+   )r"   r#   r$   r    r    r%   r&     s   	z^\w+$z^[1-5]$c             C   sY  |  s' |  d d k s' |  d
 d k r+ d  S|  d d  j  d  } d } x7 | r | d t k r | d t | d >O} | d =qM W| r | d t k r t | d } | d =n d  St | t k r | s | r d  Sd  } nm | d d   d D k rt } n t } | sd  } n6 t |  d k rH| j | d  rH| d } n d  S| | | f S)Nr   r(   r   r)   rM   c             S   s   g  |  ] } t  |  q Sr    )_type_names)r"   rO   r    r    r%   r&   $  s   	 z#_parse_sequence.<locals>.<listcomp>rr   rt   r3   r3   )rr   rt   )	split_modifier_namesr   _binder_classesr'   
_keysym_re
_button_rer6   match)r,   Zwords	modifiersr*   rn   Ztype_rer    r    r%   _parse_sequence  s0    '
			%r   c             C   sb   |  d r: d t  |  d t |  d d d |  d d Sd t  |  d t |  d d d Sd  S)Nr   r(   r   r   rM   r)   )rl   r+   )r@   r    r    r%   _triplet_to_sequence2  s    
0r   c                s>     t  k r t    SG  f d d   d    } | t    <| S)Nc                   s   e  Z d  Z   f d d   Z d d 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                sK    j    | |  i    _    f d d   t t t   D   _ d  S)Nc                s&   g  |  ] } t  | |      q Sr    )r   )r"   r:   )r1   r-   r    r%   r&   K  s   	z@MultiCallCreator.<locals>.MultiCall.__init__.<locals>.<listcomp>)r2   _MultiCall__eventinfor5   r6   r+   _MultiCall__binders)r1   rF   kwargs)r-   )r1   r%   r2   E  s    	z,MultiCallCreator.<locals>.MultiCall.__init__Nc                s&  t  |  t k rt |  d k r| d  d  d k r| d d   d k r| |  j k r |  j | } | d d  k	 r x1 | d D]% } |  j | d j | | d  q W| | d <| d d  k	 rxC | d D]! } |  j | d j | |  q Wn | g  g |  j | <  j |  | | |  S)Nr   z<<z>>r   r   )r*   strr6   r   r   rB   r>   )r1   r,   r;   addeir@   )r-   r    r%   r>   N  s    $,#
"z(MultiCallCreator.<locals>.MultiCall.bindc                s   t  |  t k r t |  d k r | d  d  d k r | d d   d k r | |  j k r |  j | \ } } | d  k	 r x) | D]! } |  j | d j | |  q Wd  |  j | d <  j |  | |  S)Nr   z<<z>>r   r   r   )r*   r   r6   r   r   rB   )r1   r,   Zfuncidr;   tripletsr@   )r-   r    r%   rB   `  s    $,z*MultiCallCreator.<locals>.MultiCall.unbindc                s   | |  j  k r" d  g  g |  j  | <|  j  | \ } } xp | D]h } t |  } | d  k rp   j |  | |  q< | d  k	 r |  j | d j | |  | j |  q< Wd  S)Nr   )r   r   	event_addr   r>   r?   )r1   virtual	sequencesr;   r   rm   r@   )r-   r    r%   r   k  s    z-MultiCallCreator.<locals>.MultiCall.event_addc                s   | |  j  k r d  S|  j  | \ } } xp | D]h } t |  } | d  k ra   j |  | |  q- | d  k	 r |  j | d j | |  | j |  q- Wd  S)Nr   )r   r   event_deleter   rB   rA   )r1   r   r   r;   r   rm   r@   )r-   r    r%   r   |  s    z0MultiCallCreator.<locals>.MultiCall.event_deletec                s]   | d  k s | |  j  k r+   j |  |  St t t |  j  | d     j |  |  Sd  S)Nr   )r   
event_infotuplemapr   )r1   r   )r-   r    r%   r     s
    	z.MultiCallCreator.<locals>.MultiCall.event_infoc             S   s   x |  j  D] } |  j  | \ } } | r
 xn | D]f } y |  j | d j | |  Wq0 t j k
 r } z t | j d k r   WYd  d  } ~ Xq0 Xq0 Wq
 Wd  S)Nr   r   )r   r   rB   rC   rD   rE   rF   )r1   r   r;   r   r@   rG   r    r    r%   rH     s    z+MultiCallCreator.<locals>.MultiCall.__del__)
rI   rJ   rK   r2   r>   rB   r   r   r   rH   r    )r-   r    r%   	MultiCallB  s   	r   )_multicall_dict)r-   r   r    )r-   r%   MultiCallCreator:  s
    [
r   c                s$  t  j   } | j d  t t t t j d |  j      \ } } } } | j d | | d f  t	 t  j
  |      j   d g   f d d  } | d  | d	  | d
  | d  | d  | d  | d  | d  | d  | d  | d  | d  | j   d  S)NzTest MultiCallz[x+]z+%d+%d   r   c                sT     f d d   }  j  d | d |   j d | d    | d d 7<d  S)Nc                s   t     d  S)N)print)r7   )rm   r    r%   r=     s    z-_multi_call.<locals>.bindseq.<locals>.handlerz<<handler%d>>r   r   )r>   r   )rm   rT   r=   )text)rm   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>)rC   ZTktitler\   r   intrer   Zgeometryr   ZTextpackZmainloop)parentrootwidthZheightrX   yr   r    )r   r%   _multi_call  s(    3












r   __main__)runr   r   r	       @      r   r   r   r   )r   r   r   r   r   r   r   r   r   )r   r   r   r   zKeyPressrs   z
KeyReleaseru   rv   rw   rx   ry   rz   r{   r|   r}   r~   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )Asysr   rC   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   rE   r'   rg   rl   r_   ri   rk   rO   r<   r:   r?   r`   r+   r   r   compiler   r   r   r   r   r   r   rI   Zidlelib.idle_test.htestr   r    r    r    r%   <module>    s                         
-	
`     "'g