mò
­fIc           @   s‹   d  Z  d k Td k Z d k Z d k Z d e f d „  ƒ  YZ e d j o< e ƒ  Z	 d „  Z
 e e	 d d d	 e
 ƒi ƒ  e	 i ƒ  n d S(
   s6   
Dialog for building Tkinter accelerator key bindings
(   t   *Nt   GetKeysDialogc           B   sƒ   t  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d	 „  Z
 d
 „  Z d  d „ Z d  d „ Z d „  Z RS(   Nc         C   s›  t  i |  | ƒ |  i d d ƒ |  i d t d t ƒ |  i | ƒ |  i | ƒ |  i	 ƒ  |  i
 d |  i ƒ | |  _ | |  _ | |  _ d |  _ t |  ƒ |  _ |  i i d ƒ |  i ƒ  g  |  _ x: |  i D]/ } t |  ƒ } | i d ƒ |  i i | ƒ qÍ W|  i ƒ  |  i ƒ  |  i ƒ  |  i ƒ  |  i d | i ƒ  | i ƒ  d |  i ƒ  d | i  ƒ  | i! ƒ  d |  i" ƒ  d f ƒ |  i# ƒ  |  i$ ƒ  d	 S(
   sõ   
        action - string, the name of the virtual event these keys will be
                 mapped to
        currentKeys - list, a list of all key sequence lists currently mapped
                 to virtual events, for overlap checking
        t   borderwidthi   t   heightt   widtht   WM_DELETE_WINDOWt    s   +%d+%di   N(%   t   Toplevelt   __init__t   selft   parentt	   configuret	   resizablet   FALSEt   titlet	   transientt   grab_sett   protocolt   Cancelt   actiont   currentKeySequencest   resultt	   StringVart	   keyStringt   sett   SetModifiersForPlatformt   modifier_varst	   modifierst   modifiert   variablet   appendt   CreateWidgetst   LoadFinalKeyListt   withdrawt   update_idletaskst   geometryt   winfo_rootxt   winfo_widtht   winfo_reqwidtht   winfo_rootyt   winfo_heightt   winfo_reqheightt	   deiconifyt   wait_window(   R	   R
   R   R   R   R   R   (    (    t5   /mit/python/lib/python2.4/idlelib/keybindingDialog.pyR   	   s8     
				
	
 



[
c         C   sZ  t  |  d d d t ƒ} | i d t d t d t ƒ t  |  ƒ } | i d t	 d t
 ƒ t | d d d	 d
 d |  i ƒ|  _ |  i i d d d d d d d d ƒ t | d d d	 d
 d |  i ƒ|  _ |  i i d d d d d d d d ƒ t  | ƒ |  _ t  | ƒ |  _ t  | ƒ |  _ t  | ƒ |  _ |  i i d d d d d t d d d d ƒ |  i i d d d d d t d d d d ƒ |  i i ƒ  |  i i d d d d d t d d ƒ |  i i d d d d d t d d ƒ |  i i ƒ  t | d |  i d d ƒ|  _ |  i i d d d d d t d d d d ƒ t |  i d d |  i d ƒ}	 |	 i d t ƒ t |  i d t d |  i d t  d d ƒ} | i d d d d d t
 ƒ h  |  _" d }
 x¡ t$ |  i% |  i& ƒ D]Š \ } } |  i) i* | | ƒ } t, |  i d |  i- d | d | d | d  d! ƒ} | i d d d |
 d d d t ƒ | |  i" | <|
 d 7}
 qÂWt |  i d t d d" d# d$ d% d& d' ƒ} | i d d d d d( d) d d d t ƒ t0 |  i d	 d* d+ d, d- t1 ƒ|  _2 |  i2 i3 d. |  i4 ƒ |  i2 i d d d d) d/ d) d t5 ƒ t6 |  i d0 t7 d |  i2 i8 ƒ} |  i2 i: d1 | i; ƒ | i d d d d d/ d) d t5 ƒ t |  i d d2 d |  i< ƒ|  _= |  i= i d d d d d( d) ƒ t |  i d t d d3 |  i d4 d5 ƒ} | i d t ƒ t? |  i d |  i ƒ|  _@ |  i@ i d t
 ƒ t |  i d t d d6 d7 d8 d9 d: d; d< ƒ} | i d d d d d t ƒ d  S(=   NR   i   t   relieft   sidet   expandt   fillt   textt   OKR   i   t   commandt   rowi    t   columnt   padxi   t   padyR   i   t   stickys   Advanced Key Binding Entry >>t   sticks   New keys for  's   ' :t   anchort   justifyt   textvariablet   ipadxt   ipadyR   t   onvaluet   offvalueR   s!   Select the desired modifier keys
s"   above, and the final key from the
s   list on the right.

s"   Use upper case Symbols when using
s&   the Shift modifier.  (Letters will be
s   converted automatically.)t
   columnspani   i   R   i
   t
   selectmodes   <ButtonRelease-1>t   rowspant   orientt   yscrollcommands
   Clear Keyss   Enter new binding(s) for  's   ' :
s2   (These bindings will not be checked for validity!)s4   Key bindings are specified using Tkinter keysyms as
sŸ   in these samples: <Control-f>, <Shift-F2>, <F12>,
<Control-space>, <Meta-less>, <Control-Alt-Shift-X>.
Upper case is used when the Shift modifier is present!

s8   'Emacs style' multi-keystroke bindings are specified as
s5   follows: <Control-x><Control-y>, where the first key
s!   is the 'do-nothing' keybinding.

s4   Multiple separate bindings for one action should be
s,   separated by a space, eg., <Alt-v> <Meta-v>.(B   t   FrameR	   t   SUNKENt	   frameMaint   packt   TOPt   TRUEt   BOTHt   frameButtonst   BOTTOMt   Xt   ButtonR2   t   buttonOKt   gridR   t   buttonCancelt   frameKeySeqBasict   frameKeySeqAdvancedt   frameControlsBasict   frameHelpAdvancedt   NSEWt   liftt   ToggleLevelt   buttonLevelt   EWt   LabelR   t   labelTitleBasict   Wt   LEFTR   t   GROOVEt   labelKeysBasict   modifier_checkbuttonsR5   t   zipR   R   R   R   t   modifier_labelt   gett   labelt   Checkbuttont   BuildKeyStringt   checkt   labelFnAdvicet   Listboxt   SINGLEt   listKeysFinalt   bindt   FinalKeySelectedt   NSt	   Scrollbart   VERTICALt   yviewt   scrollKeysFinalt   configR   t   ClearKeySeqt   buttonCleart   labelTitleAdvancedt   Entryt   entryKeysAdvancedt   labelHelpAdvanced(   R	   Rb   RH   Rj   Ru   Ry   Rg   R   Rk   R^   R5   R|   RM   R   (    (    R,   R   /   s~    %%++%%+		 		" (%"		$	c         C   sm   d k  } | i d j o, | i i d ƒ o d d d d g |  _ n d d d g |  _ h  d d	 <|  _ d S(
   sU  Determine list of names of key modifiers for this platform.

        The names are used to build Tk bindings -- it doesn't matter if the
        keyboard has these keys, it matters if Tk understands them. The
        order is also important: key binding equality depends on it, so
        config-keys.def must use the same ordering.
        Nt   darwins   .appt   Shiftt   Controlt   Optiont   Commandt   Altt   Ctrl(   t   syst   platformt
   executablet   countR	   R   Re   (   R	   R„   (    (    R,   R   ~   s     	#c         C   s    |  i i d ƒ d  d j oH |  i ƒ  |  i i d d ƒ |  i i ƒ  |  i i ƒ  |  i i	 ƒ  n8 |  i ƒ  |  i i d d ƒ |  i
 i ƒ  |  i i ƒ  d  S(   NR1   i   t   Advanceds   << Basic Key Binding Entrys   Advanced Key Binding Entry >>(   R	   R[   t   cgetRw   Rv   RU   RY   RW   R{   t	   focus_setRT   RV   (   R	   (    (    R,   RZ      s    

c         C   s   |  i ƒ  d  S(   N(   R	   Ri   (   R	   t   event(    (    R,   Rp   š   s    c         C   st   |  i ƒ  } } |  i i t ƒ } | o# |  i | | ƒ } | i	 | ƒ n |  i
 i d t i | d ƒ d ƒ d  S(   Nt   <t   -t   >(   R	   t   GetModifierst   keyListR   Rn   Rf   t   ANCHORt   finalKeyt   TranslateKeyR   R   R   t   stringt   join(   R	   R   R’   R   (    (    R,   Ri      s    c         C   s7   g  } |  i D] } | | i ƒ  q ~ } t d  | ƒ S(   N(   t   _[1]R	   R   R   Rf   t   modListt   filtert   None(   R	   R—   R–   R   (    (    R,   R   ¥   s    *c         C   s[   |  i i d t ƒ |  i i t d ƒ x |  i D] } | i d ƒ q0 W|  i	 i d ƒ d  S(   Ni    s   0.0R   (
   R	   Rn   t   select_cleart   ENDRt   t   MOVETOR   R   R   R   (   R	   R   (    (    R,   Rw   ©   s    
 c         C   s   d |  _ t t i t i ƒ |  _ t d ƒ |  _ d |  _ d |  _	 d |  _
 |  i |  i |  i |  i |  i	 |  i
 } |  i i t | Œ d  S(   Nt   F1t   F2t   F4t   F5t   F6t   F7t   F8t   F9t   F10t   F11t   F12s   ~!@#%^&*()_-+={}[]|;:,.<>/?t   Tabt   Spacet   Returnt	   BackSpacet   Deletet   Insertt   Homet   Ends   Page Ups	   Page Downs
   Left Arrows   Right Arrows   Up Arrows
   Down Arrow(   R   Rž   Rž   RŸ   R    R¡   R¢   R£   R¤   R¥   R¦   R§   (   R¨   R©   Rª   (   R«   R¬   R­   (   R®   R¯   s   Page Ups	   Page Downs
   Left Arrows   Right Arrows   Up Arrows
   Down Arrow(   R	   t   functionKeyst   tupleR”   t   ascii_lowercaset   digitst   alphanumKeyst   punctuationKeyst   whitespaceKeyst   editKeyst   moveKeyst   keysRn   t   insertR›   (   R	   R¹   (    (    R,   R    °   s    				,c         C   s¡  h  d d <d d <d d <d d <d	 d
 <d d <d d <d d <d d <d d <d d <d d <d d <d d <d d <d d  <d! d" <d# d$ <d% d& <d' d( <d) d* <d+ d, <d- d. <d/ d0 <d1 d2 <d3 d4 <d5 d6 <d7 d8 <d9 d: <d; d< <d= d> <d? d@ <dA dB <dC dD <dE dF <} | | i ƒ  j o | | } n dG | j o | t i j o | i ƒ  } n dH | } | SdI S(J   s2   Translate from keycap symbol to the Tkinter keysymR©   t   spacet   ~t
   asciitildet   !t   exclamt   @t   att   #t
   numbersignt   %t   percentt   ^t   asciicircumt   &t	   ampersandR    t   asteriskt   (t	   parenleftt   )t
   parenrightt   _t
   underscoreR   t   minust   +t   plust   =t   equalt   {t	   braceleftt   }t
   bracerightt   [t   bracketleftt   ]t   bracketrightt   |t   bart   ;t	   semicolont   :t   colont   ,t   commat   .t   periodRŒ   t   lessRŽ   t   greatert   /t   slasht   ?t   questions   Page Upt   Priors	   Page Downt   Nexts
   Left Arrowt   Lefts   Right Arrowt   Rights   Up Arrowt   Ups
   Down Arrowt   DownR¨   t   tabR~   s   Key-N(   t   translateDictt   keyR¹   R   R”   R²   t   upper(   R	   Rö   R   Rõ   (    (    R,   R“   ¿   s     ÿ B

c         C   s1   |  i ƒ  o  |  i i ƒ  |  _ |  i ƒ  n d  S(   N(   R	   t   KeysOKR   Rf   R   t   destroy(   R	   R‹   (    (    R,   R2   Ò   s    c         C   s   d |  _ |  i ƒ  d  S(   NR   (   R	   R   Rù   (   R	   R‹   (    (    R,   R   ×   s    	c         C   sh  |  i i ƒ  } | i ƒ  |  i i t ƒ } |  i ƒ  } | i
 ƒ  } t } d } | p  t i d | d |  d d ƒ nï | i d ƒ p  t i d | d |  d d ƒ n¿ | o0 | |  i j o  t i d | d |  d d ƒ n‡ | d	 g j o: | |  i d j o& d } t i d | d |  d | ƒ n= | |  i j o& d } t i d | d |  d | ƒ n t } | S(   s-   Validity check on user's keybinding selections   Key Sequence ErrorR   R
   t   messages   No keys specified.RŽ   s   Missing the final Keys   No modifier key(s) specified.R~   R¨   R©   sb   The shift modifier by itself may not be used with this key symbol; only with F1-F12, Tab, or Spaces'   This key combination is already in use.N(   s   Tabs   Space(   R	   R   Rf   R¹   t   stripRn   R‘   R’   R   R   t   splitt   keySequencet   Falset   keysOKR   t   tkMessageBoxt	   showerrort   endswithR°   t   msgR   t   True(   R	   R   R   R¹   Rÿ   R’   R  Rý   (    (    R,   Rø   Û   s6     
$(   t   __name__t
   __module__R   R   R   RZ   Rp   Ri   R   Rw   R    R“   R™   R2   R   Rø   (    (    (    R,   R      s   	&	O								t   __main__c          C   s'   d } t t d d g  ƒ }  |  i GHd  S(   NR   s   Get Keyss
   find-again(   t   keySeqR   t   roott   dlgR   (   R
  R  (    (    R,   t   run   s    R1   t   DialogR3   (   t   __doc__t   TkinterR   R”   t   osR   R   R  t   TkR	  R  RP   RI   t   mainloop(   R  R”   R	  R   R  R   (    (    R,   Rì      s   	õ		