� {fc@swdZddlTddlZddlZddlZdefd��YZedkrsddlm Z e e�ndS(s6 Dialog for building Tkinter accelerator key bindings i����(t*Nt GetKeysDialogcBs�eZed�Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z d�Z d �Z d d �Zd d �Zd �ZRS(cCs�tj||�|jdd�|jdtdt�|j|�|j|�|j�|jd|j �||_ ||_ ||_ d|_ t|�|_|jjd�|j�g|_x:|jD]/}t|�}|jd�|jj|�q�Wt|_|j�|j�|j�|j�|jd|j�|j�d|j�d|j�|s�|j �d|j!�dnd f�|j"�|j#�d S( s3 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 _htest - bool, change box location when running htest t borderwidthitheighttwidthtWM_DELETE_WINDOWts+%d+%dii�N($tToplevelt__init__t configuret resizabletFALSEttitlet transienttgrab_settprotocoltCanceltparenttactiontcurrentKeySequencestresultt StringVart keyStringtsettSetModifiersForPlatformt modifier_varst modifierstappendtFalsetadvancedt CreateWidgetstLoadFinalKeyListtwithdrawtupdate_idletaskstgeometryt winfo_rootxt winfo_widthtwinfo_reqwidtht winfo_rootyt winfo_heighttwinfo_reqheightt deiconifyt wait_window(tselfRR RRt_htesttmodifiertvariable((s0/usr/lib64/python2.7/idlelib/keybindingDialog.pyR s@                  0 c CsZt|dddt�}|jdtdtdt�t|�}|jdtdt�t|ddd d d |j �|_ |j j d d dd dddd�t|ddd d d |j �|_ |j j d d dddddd�t|�|_t|�|_t|�|_t|�|_|jj d d dd dtdddd�|jj d d dd dtdddd�|jj�|jj d ddd dtdd�|jj d ddd dtdd�|jj�t|d |jdd�|_|jj d ddd dtdddd�t|jdd|jd�}|jdt�t|jdtd|jdtdd�}|jdddddt�i|_d }x�t|j|j �D]�\}}|j!j"||�}t#|jd |j$d|d|d|d d!�} | j d d d|dddt�| |j|<|d7}q�Wt|jdtdd"d#d$d%d&d'�} | j d ddd d(d)dddt�t%|jd d*d+d,d-t&�|_'|j'j(d.|j)�|j'j d d dd)d/d)dt*�t+|jd0t,d |j'j-�} |j'j.d1| j/�| j d d ddd/d)dt*�t|jdd2d |j0�|_1|j1j d ddd d(d)�t|jdtdd3|jd4d5�} | jdt�t2|jd|j�|_3|j3jdt�t|jdtdd6d7d8d9d:d;d<�} | j d d dd dt�dS(=NRitrelieftsidetexpandtfillttexttOKRitcommandtrowitcolumntpadxitpadyRitstickysAdvanced Key Binding Entry >>tsticksNew keys for 's' :tanchortjustifyt textvariabletipadxtipadyR.tonvaluetoffvalueRs!Select the desired modifier keys s"above, and the final key from the slist on the right. s"Use upper case Symbols when using s&the Shift modifier. (Letters will be sconverted automatically.)t columnspaniiRi t selectmodestrowspantorienttyscrollcommands Clear KeyssEnter new binding(s) for 's' : s2(These bindings will not be checked for validity!)s4Key bindings are specified using Tkinter keysyms as s�in these samples: , , , , , . Upper case is used when the Shift modifier is present! s8'Emacs style' multi-keystroke bindings are specified as s5follows: , where the first key s!is the 'do-nothing' keybinding. s4Multiple separate bindings for one action should be s,separated by a space, eg., .(4tFrametSUNKENtpacktTOPtTRUEtBOTHtBOTTOMtXtButtonR4tbuttonOKtgridRt buttonCanceltframeKeySeqBasictframeKeySeqAdvancedtframeControlsBasictframeHelpAdvancedtNSEWtliftt ToggleLevelt buttonLeveltEWtLabelRtWtLEFTRtGROOVEtmodifier_checkbuttonstzipRRtmodifier_labeltgett CheckbuttontBuildKeyStringtListboxtSINGLEt listKeysFinaltbindtFinalKeySelectedtNSt ScrollbartVERTICALtyviewtconfigRt ClearKeySeqt buttonCleartEntrytentryKeysAdvanced(R+t frameMaint frameButtonstlabelTitleBasictlabelKeysBasicR7R-R.tlabeltcheckt labelFnAdvicetscrollKeysFinaltlabelTitleAdvancedtlabelHelpAdvanced((s0/usr/lib64/python2.7/idlelib/keybindingDialog.pyR5s� %%++ %%  +  "  "  ( %"    cCsMtjdkr'ddddg|_ndddg|_idd6|_dS( sUDetermine 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. tdarwintShifttControltOptiontCommandtAlttCtrlN(tsystplatformRRc(R+((s0/usr/lib64/python2.7/idlelib/keybindingDialog.pyR�scCs�|jjd�d dkrl|j�|jjdd�|jj�|jj�|jj�t |_ n@|j�|jjdd�|j j�|j j�t |_ dS(NR3itAdvanceds<< Basic Key Binding EntrysAdvanced Key Binding Entry >>(R[tcgetRqRpRURYRWRtt focus_settTrueRRTRVR(R+((s0/usr/lib64/python2.7/idlelib/keybindingDialog.pyRZ�s        cCs|j�dS(N(Rf(R+tevent((s0/usr/lib64/python2.7/idlelib/keybindingDialog.pyRk�scCsr|j�}}|jjt�}|rJ|j||�}|j|�n|jjdtj |d�d�dS(Nt( t GetModifiersRiRdtANCHORt TranslateKeyRRRtstringtjoin(R+tkeyListRtfinalKey((s0/usr/lib64/python2.7/idlelib/keybindingDialog.pyRf�s cCs?g|jD]}|j�^q }g|D]}|r)|^q)S(N(RRd(R+R.tmodListtmod((s0/usr/lib64/python2.7/idlelib/keybindingDialog.pyR��s"cCs[|jjdt�|jjtd�x|jD]}|jd�q0W|jjd�dS(Nis0.0R(Rit select_cleartENDRotMOVETORRR(R+R.((s0/usr/lib64/python2.7/idlelib/keybindingDialog.pyRq�s c Cs�d|_ttjtj�|_td �|_d|_d|_d|_ |j|j|j|j|j|j }|j j t |�dS( NtF1tF2tF3tF4tF5tF6tF7tF8tF9tF10tF11tF12s~!@#%^&*()_-+={}[]|;:,.<>/?tTabtSpacetReturnt BackSpacetDeletetInserttHometEndsPage Ups Page Downs Left Arrows Right ArrowsUp Arrows Down Arrow( R�R�R�R�R�R�R�R�R�R�R�R�(R�R�R�(R�R�R�(R�R�sPage Ups Page Downs Left Arrows Right ArrowsUp Arrows Down Arrow( t functionKeysttupleR�tascii_lowercasetdigitst alphanumKeystpunctuationKeystwhitespaceKeysteditKeystmoveKeysRitinsertR�(R+tkeys((s0/usr/lib64/python2.7/idlelib/keybindingDialog.pyR�s    ,cCsRi#dd6dd6dd6dd6d d 6d d 6d d6dd6dd6dd6dd6dd6dd6dd6dd6dd 6d!d"6d#d$6d%d&6d'd(6d)d*6d+d,6d-d.6d/d06d1d26d3d46d5d66d7d86d9d:6d;d<6d=d>6d?d@6dAdB6dCdD6dEdE6}||j�kr||}ndF|krD|tjkrD|j�}ndG|}|S(Hs2Translate from keycap symbol to the Tkinter keysymtspaceR�t asciitildet~texclamt!tatt@t numbersignt#tpercentt%t asciicircumt^t ampersandt&tasteriskRt parenleftt(t parenrightt)t underscoret_tminusR�tplust+tequalt=t braceleftt{t bracerightt}t bracketleftt[t bracketrightt]tbart|t semicolont;tcolont:tcommat,tperiodt.tlessR�tgreaterR�tslasht/tquestiont?tPriorsPage UptNexts Page DowntLefts Left ArrowtRights Right ArrowtUpsUp ArrowtDowns Down ArrowR�R�sKey-(R�R�R�tupper(R+tkeyRt translateDict((s0/usr/lib64/python2.7/idlelib/keybindingDialog.pyR��s  #  cCsB|js|j�r>|jj�|_|j�|j�ndS(N(RtKeysOKRRdRt grab_releasetdestroy(R+R�((s0/usr/lib64/python2.7/idlelib/keybindingDialog.pyR4�s cCs!d|_|j�|j�dS(NR(RR�R�(R+R�((s0/usr/lib64/python2.7/idlelib/keybindingDialog.pyR�s  cCsj|jj�}|j�|jjt�}|j�}|j�}t}d}|sttj d|d|dd�n�|j d�s�tj d|d|dd�n�| r�||j |j kr�tj d|d|dd�n�|d gkr,||j |j dkr,d }tj d|d|d|�n:||j kr`d }tj d|d|d|�nt}|S(s�Validity check on user's 'basic' keybinding selection. Doesn't check the string produced by the advanced dialog because 'modifiers' isn't set. sKey Sequence ErrorR RtmessagesNo keys specified.R�sMissing the final KeysNo modifier key(s) specified.R�R�R�sBThe shift modifier by itself may not be used with this key symbol.s'This key combination is already in use.(R�R�(RRdtstripRiR�R�tsplitRt tkMessageBoxt showerrortendswithR�R�RR�(R+R�R�Rt keySequencetkeysOKR tmsg((s0/usr/lib64/python2.7/idlelib/keybindingDialog.pyR��s6      N(t__name__t __module__RRRRRZRkRfR�RqRR�tNoneR4RR�(((s0/usr/lib64/python2.7/idlelib/keybindingDialog.pyR s + O          t__main__(trun( t__doc__tTkinterR�R�R�RRRtidlelib.idle_test.htestR(((s0/usr/lib64/python2.7/idlelib/keybindingDialog.pyts    �