
W0                 @   sq   d  d l  Td  d l j Z d  d l Z d  d l Z Gd d   d e  Z e d k rm d  d l	 m
 Z
 e
 e  d S)    )*Nc               @   s   e  Z d  Z d d d  Z d d   Z d d   Z d d	   Z d
 d   Z d d   Z d d   Z	 d d   Z
 d d   Z d d   Z d d d  Z d d d  Z d d   Z d S)GetKeysDialogFc             C   s  t  j |  |  |  j d d  |  j d t d t  |  j |  |  j |  |  j   |  j d |  j	  | |  _
 | |  _ | |  _ d |  _ t |   |  _ |  j j d  |  j   g  |  _ x: |  j D]/ } t |   } | j d  |  j j |  q Wd |  _ |  j   |  j   |  j   |  j   |  j d | j   | j   d	 |  j   d	 | j   | s| j   d	 |  j    d	 n d
 f  |  j!   |  j"   d  S)Nborderwidth   heightwidthZWM_DELETE_WINDOW Fz+%d+%d      )#Toplevel__init__Z	configureZ	resizableFALSEtitleZ	transientZgrab_setprotocolCancelparentactioncurrentKeySequencesresultZ	StringVar	keyStringsetSetModifiersForPlatformmodifier_vars	modifiersappendadvancedCreateWidgetsLoadFinalKeyListZwithdrawZupdate_idletasksZgeometryZwinfo_rootxZwinfo_widthZwinfo_reqwidthZwinfo_rootyZwinfo_heightZwinfo_reqheightZ	deiconifyZwait_window)selfr   r   r   r   Z_htestmodifiervariable r!   E/afs/.cs/s/python-3.5.2/amd64_ubu14/lib/python3.5/keybindingDialog.pyr   
   s@    
				
		



		0
zGetKeysDialog.__init__c             C   sZ  t  |  d d d t } | j d t d t d t  t  |   } | j d t d t  t | d d d	 d
 d |  j	 |  _
 |  j
 j d d d d d d d d  t | d d d	 d
 d |  j |  _ |  j j d d d d d d d d  t  |  |  _ t  |  |  _ t  |  |  _ t  |  |  _ |  j j d d d d d t d d d d  |  j j d d d d d t d d d d  |  j j   |  j j d d d d d t d d  |  j j d d d d d t d d  |  j j   t | d |  j d d |  _ |  j j d d d d d t d d d d  t |  j d d |  j d } | j d t  t |  j d t d |  j d t d d } | j d d d d d t  i  |  _ d } x t |  j |  j   D] \ } } |  j! j" | |  } t# |  j d |  j$ d | d | d | d  d! }	 |	 j d d d | d d d t  |	 |  j | <| d 7} qWt |  j d t d d" d# d$ d% d& d' }
 |
 j d d d d d( d) d d d t  t% |  j d	 d* d+ d, d- t& |  _' |  j' j( d. |  j)  |  j' j d d d d) d/ d) d t*  t+ |  j d0 t, d |  j' j- } |  j' j. d1 | j/  | j d d d d d/ d) d t*  t |  j d d2 d |  j0 |  _1 |  j1 j d d d d d( d)  t |  j d t d d3 |  j d4 d5 } | j d t  t2 |  j d |  j |  _3 |  j3 j d t  t |  j d t d d6 d7 d8 d9 d: d; d< } | j d d d d d t  d  S)=Nr   r	   ZreliefZsideexpandfilltextOKr      Zcommandrowr   columnZpadxr   Zpadyr      ZstickyzAdvanced Key Binding Entry >>ZstickzNew keys for  'z' :ZanchorZjustifyZtextvariableZipadxZipadyr    ZonvalueZoffvaluer   z!Select the desired modifier keys
z"above, and the final key from the
zlist on the right.

z"Use upper case Symbols when using
z&the Shift modifier.  (Letters will be
zconverted automatically.)Z
columnspan      r   
   Z
selectmodez<ButtonRelease-1>ZrowspanZorientZyscrollcommandz
Clear KeyszEnter new binding(s) for  'z' :
z2(These bindings will not be checked for validity!)z4Key bindings are specified using Tkinter keysyms as
zin 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!

z8'Emacs style' multi-keystroke bindings are specified as
z5follows: <Control-x><Control-y>, where the first key
z!is the 'do-nothing' keybinding.

z4Multiple separate bindings for one action should be
z,separated by a space, eg., <Alt-v> <Meta-v>.)4ZFrameZSUNKENpackZTOPTRUEZBOTHZBOTTOMXZButtonr&   ZbuttonOKZgridr   ZbuttonCancelframeKeySeqBasicframeKeySeqAdvancedframeControlsBasicframeHelpAdvancedZNSEWliftToggleLevelbuttonLevelZEWZLabelr   WZLEFTr   ZGROOVEZmodifier_checkbuttonszipr   r   modifier_labelgetZCheckbuttonBuildKeyStringZListboxZSINGLElistKeysFinalbindFinalKeySelectedZNSZ	ScrollbarZVERTICALyviewconfigr   ClearKeySeqZbuttonClearZEntryentryKeysAdvanced)r   Z	frameMainZframeButtonsZlabelTitleBasicZlabelKeysBasicr)   r   r    ZlabelcheckZlabelFnAdviceZscrollKeysFinalZlabelTitleAdvancedZlabelHelpAdvancedr!   r!   r"   r   5   s    %%++%%+	"	"
(%"

zGetKeysDialog.CreateWidgetsc             C   sL   t  j d k r' d d d d g |  _ n d d d g |  _ d d i |  _ d  S)NdarwinShiftZControlZOptionZCommandZAltZCtrl)sysplatformr   r:   )r   r!   r!   r"   r      s    z%GetKeysDialog.SetModifiersForPlatformc             C   s   |  j  j d  d  d  d k rr |  j   |  j  j d d  |  j j   |  j j   |  j j   d |  _	 n@ |  j   |  j  j d d  |  j
 j   |  j j   d |  _	 d  S)Nr%   r'   ZAdvancedz<< Basic Key Binding EntryTzAdvanced Key Binding Entry >>F)r7   ZcgetrB   rA   r2   r5   r4   rC   Z	focus_setr   r1   r3   )r   r!   r!   r"   r6      s    "

zGetKeysDialog.ToggleLevelc             C   s   |  j    d  S)N)r<   )r   eventr!   r!   r"   r?      s    zGetKeysDialog.FinalKeySelectedc             C   sl   |  j    } } |  j j t  } | rG |  j | |  } | j |  |  j j d d j |  d  d  S)N<->)	GetModifiersr=   r;   ANCHORTranslateKeyr   r   r   join)r   ZkeyListr   finalKeyr!   r!   r"   r<      s    zGetKeysDialog.BuildKeyStringc             C   s'   d d   |  j  D } d d   | D S)Nc             S   s   g  |  ] } | j     q Sr!   )r;   ).0r    r!   r!   r"   
<listcomp>   s   	 z.GetKeysDialog.GetModifiers.<locals>.<listcomp>c             S   s   g  |  ] } | r |  q Sr!   r!   )rR   modr!   r!   r"   rS      s   	 )r   )r   ZmodListr!   r!   r"   rM      s    zGetKeysDialog.GetModifiersc             C   s[   |  j  j d t  |  j  j t d  x |  j D] } | j d  q0 W|  j j d  d  S)Nr   z0.0r   )r=   Zselect_clearENDr@   ZMOVETOr   r   r   )r   r    r!   r!   r"   rB      s
    zGetKeysDialog.ClearKeySeqc             C   s   d |  _  t t j t j  |  _ t d  |  _ d |  _ d |  _ d |  _	 |  j |  j |  j  |  j |  j |  j	 } |  j
 j t |  d  S)NF1F2F4F5F6F7F8F9F10F11F12z~!@#%^&*()_-+={}[]|;:,.<>/?TabSpaceReturn	BackSpaceDeleteInsertHomeEndPage Up	Page Down
Left ArrowRight ArrowUp Arrow
Down Arrow)rV   rW   rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   )ra   rb   rc   )rd   re   rf   )rg   rh   ri   rj   rk   rl   rm   rn   )functionKeystuplestringascii_lowercasedigitsZalphanumKeysZpunctuationKeysZwhitespaceKeysZeditKeysmoveKeysr=   insertrU   )r   keysr!   r!   r"   r      s     			 	,zGetKeysDialog.LoadFinalKeyListc          F   C   s#  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 dE i# } | | k r | | } dF | k r| t  j k r| j   } dG | } | S)HNrb   Zspace~Z
asciitilde!Zexclam@Zat#Z
numbersign%percent^Zasciicircum&Z	ampersandr   Zasterisk(Z	parenleft)Z
parenright_Z
underscorerK   Zminus+Zplus=Zequal{Z	braceleft}Z
braceright[Zbracketleft]Zbracketright|Zbar;Z	semicolon:Zcolon,Zcomma.ZperiodrJ   ZlessrL   Zgreater/Zslash?ZquestionzPage UpZPriorz	Page DownZNextz
Left ArrowZLeftzRight ArrowZRightzUp ArrowZUpz
Down ArrowZDownra   rF   zKey-)rq   rr   upper)r   keyr   ZtranslateDictr!   r!   r"   rO      s     

zGetKeysDialog.TranslateKeyNc             C   s5   |  j  s |  j   r1 |  j j   |  _ |  j   d  S)N)r   KeysOKr   r;   r   destroy)r   rI   r!   r!   r"   r&      s    zGetKeysDialog.OKc             C   s   d |  _  |  j   d  S)Nr   )r   r   )r   rI   r!   r!   r"   r      s    	zGetKeysDialog.Cancelc             C   sj  |  j  j   } | j   |  j j t  } |  j   } | j   } d } d } | st t j d | d |  d d  n | j	 d  s t j d | d |  d d  n | r | |  j
 |  j k r t j d | d |  d d	  n | d
 g k r,| |  j
 |  j d k r,d } t j d | d |  d |  n: | |  j k r`d } t j d | d |  d |  n d } | S)NFzKey Sequence Errorr   r   messagezNo keys specified.rL   zMissing the final KeyzNo modifier key(s) specified.rF   ra   rb   zBThe shift modifier by itself may not be used with this key symbol.z'This key combination is already in use.T)zTabzSpace)r   r;   stripr=   rN   rM   splittkMessageBoxZ	showerrorendswithro   rt   r   )r   rv   rQ   r   ZkeySequenceZkeysOKr   msgr!   r!   r"   r      s6    



zGetKeysDialog.KeysOK)__name__
__module____qualname__r   r   r   r6   r?   r<   rM   rB   r   rO   r&   r   r   r!   r!   r!   r"   r   	   s   +Or   __main__)run)tkinterZtkinter.messageboxZ
messageboxr   rq   rG   r   r   r   Zidlelib.idle_test.htestr   r!   r!   r!   r"   <module>   s   
