f0c@sdZddlTddljZddlZddlmZGdddeZ e dkre Z dd Z ee d d d e je jndS( u6 Dialog for building Tkinter accelerator key bindings i(u*N(u macosxSupportcBs|EeZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ dddZdddZddZdS(u GetKeysDialogcCstj|||jdd|jdtdt|j||j||j|jd|j ||_ ||_ ||_ d|_ t||_|jjd|jg|_x:|jD]/}t|}|jd|jj|qWd |_|j|j|j|j|jd|j|jd|jd|j|j d|j!df|j"|j#d S( u 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 u borderwidthiuheightuwidthuWM_DELETE_WINDOWuu+%d+%diNF($uToplevelu__init__u configureu resizableuFALSEutitleu transientugrab_setuprotocoluCanceluparentuactionucurrentKeySequencesuresultu StringVaru keyStringusetuSetModifiersForPlatformu modifier_varsu modifiersuappenduFalseuadvancedu CreateWidgetsuLoadFinalKeyListuwithdrawuupdate_idletasksugeometryu winfo_rootxu winfo_widthuwinfo_reqwidthu winfo_rootyu winfo_heightuwinfo_reqheightu deiconifyu wait_window(uselfuparentutitleuactionucurrentKeySequencesumodifieruvariable((u=/opt/alt/python33/lib64/python3.3/idlelib/keybindingDialog.pyu__init__ s>                  uGetKeysDialog.__init__c CsZt|dddt}|jdtdtdtt|}|jdtdtt|ddd d d |j |_ |j j d d dd ddddt|ddd d d |j |_ |j j d d ddddddt||_t||_t||_t||_|jj d d dd dtdddd|jj d d dd dtdddd|jj|jj d ddd dtdd|jj d ddd dtdd|jjt|d |jdd|_|jj d ddd dtddddt|jdd|jd}|jdtt|jdtd|jdtdd}|jdddddti|_d }xt|j|j D]\}}|j!j"||}t#|jd |j$d|d|d|d d!} | j d d d|dddt| |j|<|d7}qWt|jdtdd"d#d$d%d&d'} | j d ddd d(d)dddtt%|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} | jdtt2|jd|j|_3|j3jdtt|jdtdd6d7d8d9d:d;d<} | j d d dd dtdS(=Nu borderwidthiureliefusideuexpandufillutextuOKuwidthiucommandurowiucolumnupadxiupadyuCanceliustickyuAdvanced Key Binding Entry >>ustickuNew keys for 'u' :uanchorujustifyu textvariableuipadxuipadyuvariableuonvalueuoffvalueuu!Select the desired modifier keys u"above, and the final key from the ulist on the right. u"Use upper case Symbols when using u&the Shift modifier. (Letters will be uconverted automatically.)u columnspaniiuheighti u selectmodeuurowspanuorientuyscrollcommandu Clear KeysuEnter new binding(s) for 'u' : u2(These bindings will not be checked for validity!)u4Key bindings are specified using Tkinter keysyms as uin these samples: , , , , , . Upper case is used when the Shift modifier is present! u8'Emacs style' multi-keystroke bindings are specified as u5follows: , where the first key u!is the 'do-nothing' keybinding. u4Multiple separate bindings for one action should be u,separated by a space, eg., .(4uFrameuSUNKENupackuTOPuTRUEuBOTHuBOTTOMuXuButtonuOKubuttonOKugriduCancelu buttonCanceluframeKeySeqBasicuframeKeySeqAdvanceduframeControlsBasicuframeHelpAdvanceduNSEWuliftu ToggleLevelu buttonLeveluEWuLabeluactionuWuLEFTu keyStringuGROOVEumodifier_checkbuttonsuzipu modifiersu modifier_varsumodifier_labelugetu CheckbuttonuBuildKeyStringuListboxuSINGLEu listKeysFinalubinduFinalKeySelecteduNSu ScrollbaruVERTICALuyviewuconfigusetu ClearKeySequ buttonClearuEntryuentryKeysAdvanced(uselfu frameMainu frameButtonsulabelTitleBasiculabelKeysBasicucolumnumodifieruvariableulabeluchecku labelFnAdviceuscrollKeysFinalulabelTitleAdvancedulabelHelpAdvanced((u=/opt/alt/python33/lib64/python3.3/idlelib/keybindingDialog.pyu CreateWidgets1s %%++ %%  +  "  "  ( %"    uGetKeysDialog.CreateWidgetscCsVddl}tjr0ddddg|_ndddg|_idd6|_dS( uUDetermine 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. iNuShiftuControluOptionuCommanduAltuCtrl(usysu macosxSupporturunningAsOSXAppu modifiersumodifier_label(uselfusys((u=/opt/alt/python33/lib64/python3.3/idlelib/keybindingDialog.pyuSetModifiersForPlatforms   u%GetKeysDialog.SetModifiersForPlatformcCs|jjddddkrr|j|jjdd|jj|jj|jjd|_ n@|j|jjdd|j j|j jd|_ dS(NutextiuAdvancedu<< Basic Key Binding EntryuAdvanced Key Binding Entry >>TF(u buttonLevelucgetu ClearKeySequconfiguframeKeySeqAdvanceduliftuframeHelpAdvanceduentryKeysAdvancedu focus_setuTrueuadvanceduframeKeySeqBasicuframeControlsBasicuFalse(uself((u=/opt/alt/python33/lib64/python3.3/idlelib/keybindingDialog.pyu ToggleLevels"        uGetKeysDialog.ToggleLevelcCs|jdS(N(uBuildKeyString(uselfuevent((u=/opt/alt/python33/lib64/python3.3/idlelib/keybindingDialog.pyuFinalKeySelectedsuGetKeysDialog.FinalKeySelectedcCso|j}}|jjt}|rJ|j||}|j|n|jjddj|ddS(Nu( u GetModifiersu listKeysFinalugetuANCHORu TranslateKeyuappendu keyStringusetujoin(uselfukeyListu modifiersufinalKey((u=/opt/alt/python33/lib64/python3.3/idlelib/keybindingDialog.pyuBuildKeyStrings uGetKeysDialog.BuildKeyStringcCs'dd|jD}dd|DS(NcSsg|]}|jqS((uget(u.0uvariable((u=/opt/alt/python33/lib64/python3.3/idlelib/keybindingDialog.pyu s u.GetKeysDialog.GetModifiers..cSsg|]}|r|qS(((u.0umod((u=/opt/alt/python33/lib64/python3.3/idlelib/keybindingDialog.pyu s (u modifier_vars(uselfumodList((u=/opt/alt/python33/lib64/python3.3/idlelib/keybindingDialog.pyu GetModifierssuGetKeysDialog.GetModifierscCs[|jjdt|jjtdx|jD]}|jdq0W|jjddS(Niu0.0u(u listKeysFinalu select_clearuENDuyviewuMOVETOu modifier_varsusetu keyString(uselfuvariable((u=/opt/alt/python33/lib64/python3.3/idlelib/keybindingDialog.pyu ClearKeySeqs uGetKeysDialog.ClearKeySeqc Csd|_ttjtj|_td |_d|_d|_d|_ |j|j|j|j|j|j }|j j t |dS(NuF1uF2uF4uF5uF6uF7uF8uF9uF10uF11uF12u~!@#%^&*()_-+={}[]|;:,.<>/?uTabuSpaceuReturnu BackSpaceuDeleteuInsertuHomeuEnduPage Upu Page Downu Left Arrowu Right ArrowuUp Arrowu Down Arrow( uF1uF2uF2uF4uF5uF6uF7uF8uF9uF10uF11uF12(uTabuSpaceuReturn(u BackSpaceuDeleteuInsert(uHomeuEnduPage Upu Page Downu Left Arrowu Right ArrowuUp Arrowu Down Arrow( u functionKeysutupleustringuascii_lowercaseudigitsu alphanumKeysupunctuationKeysuwhitespaceKeysueditKeysumoveKeysu listKeysFinaluinsertuEND(uselfukeys((u=/opt/alt/python33/lib64/python3.3/idlelib/keybindingDialog.pyuLoadFinalKeyLists    ,uGetKeysDialog.LoadFinalKeyListcCsLi#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}||kr||}ndF|kr>|tjkr>|j}ndG|}|S(Hu2Translate from keycap symbol to the Tkinter keysymuspaceuSpaceu asciitildeu~uexclamu!uatu@u numbersignu#upercentu%u asciicircumu^u ampersandu&uasterisku*u parenleftu(u parenrightu)u underscoreu_uminusu-uplusu+uequalu=u braceleftu{u bracerightu}u bracketleftu[u bracketrightu]ubaru|u semicolonu;ucolonu:ucommau,uperiodu.ulessuuslashu/uquestionu?uPrioruPage UpuNextu Page DownuLeftu Left ArrowuRightu Right ArrowuUpuUp ArrowuDownu Down ArrowuTabuShiftuKey-(ustringuascii_lowercaseuupper(uselfukeyu modifiersu translateDict((u=/opt/alt/python33/lib64/python3.3/idlelib/keybindingDialog.pyu TranslateKeys  #   uGetKeysDialog.TranslateKeycCs8|js|jr4|jj|_|jndS(N(uadvanceduKeysOKu keyStringugeturesultudestroy(uselfuevent((u=/opt/alt/python33/lib64/python3.3/idlelib/keybindingDialog.pyuOKsuGetKeysDialog.OKcCsd|_|jdS(Nu(uresultudestroy(uselfuevent((u=/opt/alt/python33/lib64/python3.3/idlelib/keybindingDialog.pyuCancels uGetKeysDialog.Cancelc Csj|jj}|j|jjt}|j}|j}d}d}|sttj d|d|ddn|j dstj d|d|ddn| r||j |j krtj d|d|ddn|d gkr,||j |j dkr,d }tj d|d|d|n:||j kr`d }tj d|d|d|nd}|S(uValidity check on user's 'basic' keybinding selection. Doesn't check the string produced by the advanced dialog because 'modifiers' isn't set. uKey Sequence ErrorutitleuparentumessageuNo keys specified.u>uMissing the final KeyuNo modifier key(s) specified.uShiftuTabuSpaceuBThe shift modifier by itself may not be used with this key symbol.u'This key combination is already in use.F(uTabuSpaceT(u keyStringugetustripu listKeysFinaluANCHORu GetModifiersusplituFalseu tkMessageBoxu showerroruendswithu functionKeysumoveKeysucurrentKeySequencesuTrue(uselfukeysufinalKeyu modifiersu keySequenceukeysOKutitleumsg((u=/opt/alt/python33/lib64/python3.3/idlelib/keybindingDialog.pyuKeysOKs6      uGetKeysDialog.KeysOKN(u__name__u __module__u __qualname__u__init__u CreateWidgetsuSetModifiersForPlatformu ToggleLeveluFinalKeySelecteduBuildKeyStringu GetModifiersu ClearKeySequLoadFinalKeyListu TranslateKeyuNoneuOKuCanceluKeysOK(u __locals__((u=/opt/alt/python33/lib64/python3.3/idlelib/keybindingDialog.pyu GetKeysDialog s ' O        u GetKeysDialogu__main__cCs,d}ttddg}t|jdS(NuuGet Keysu find-again(u GetKeysDialogurootuprinturesult(ukeySequdlg((u=/opt/alt/python33/lib64/python3.3/idlelib/keybindingDialog.pyurunsurunutextuDialogucommand(u__doc__utkinterutkinter.messageboxu messageboxu tkMessageBoxustringuidlelibu macosxSupportuToplevelu GetKeysDialogu__name__uTkurooturunuButtonupackumainloop(((u=/opt/alt/python33/lib64/python3.3/idlelib/keybindingDialog.pyus