ó {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 Csd|_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œRRž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.tlessRtgreaterRtslasht/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.RsMissing 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‘RtsplitRt tkMessageBoxt showerrortendswithR°R¸RR‹(R+RºR–Rt keySequencetkeysOKR tmsg((s0/usr/lib64/python2.7/idlelib/keybindingDialog.pyR÷äs6      N(t__name__t __module__RRRRRZRkRfRRqRR’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    ÿ