B 0‘c8ã@sæddlmZmZmZmZddlmZmZmZm Z m Z m Z ddlm Z ddl Z ddlZdZee je jƒZedƒZdZdZd ZeeeeeeZd d „ZGd d „d eƒZedkrâddlmZeddddddlmZeeƒdS)é)ÚToplevelÚListboxÚ StringVarÚTclError)ÚFrameÚButtonÚ CheckbuttonÚEntryÚLabelÚ Scrollbar)Ú messageboxN) ZF1ZF2ZF3ZF4ZF5ZF6ZF7ZF8ZF9ZF10ZF11ZF12z~!@#%^&*()_-+={}[]|;:,.<>/?)ÚTabÚSpaceZReturn)Z BackSpaceZDeleteZInsert)ZHomeZEndzPage Upz Page Downz Left Arrowz Right ArrowzUp Arrowz Down Arrowc$Cs|ddddddddd d d d d ddddddddddddddddddd d!d"d#d$œ#}| ||¡}d%|krr|tjkrr| ¡}d&|›S)'NZspaceZ asciitildeZexclamZatZ numbersignÚpercentZ asciicircumZ ampersandZasteriskZ parenleftZ parenrightZ underscoreZminusZplusZequalZ braceleftZ bracerightZ bracketleftZ bracketrightZbarZ semicolonZcolonZcommaZperiodZlessZgreaterZslashZquestionZPriorZNextZLeftZRightZUpZDownr )#rú~ú!ú@ú#ú%ú^ú&Ú*ú(ú)Ú_ú-ú+ú=Ú{Ú}ú[ú]ú|ú;ú:ú,Ú.ú<ú>ú/ú?zPage Upz Page Downz Left Arrowz Right ArrowzUp Arrowz Down Arrowr ÚShiftzKey-)ÚgetÚstringÚascii_lowercaseÚupper)ÚkeyÚ modifiersÚmapping©r3ú7/opt/alt/python37/lib64/python3.7/idlelib/config_key.pyÚ translate_keys   r5c@s†eZdZdZdddœdd„Zdd„Zdd „Zd d „Zd d „Zddd„Z dd„Z dd„Z dd„Z d dd„Z d!dd„Zdd„Zdd„ZdS)"Ú GetKeysDialogzKey Sequence ErrorF)Ú_htestÚ_utestc CsFt ||¡| ¡|jdd|jddd| |¡| |¡| ¡| d|j ¡||_ ||_ ||_ d|_ t|ƒ|_|j d¡| ¡g|_x,|jD]"}t|ƒ}| d¡|j |¡qœWd|_| ¡| ¡| d| ¡| ¡d| ¡d| ¡|s | ¡d| ¡dnd f¡|sB| ¡|  ¡dS) Né)Ú borderwidthF)ÚheightÚwidthZWM_DELETE_WINDOWÚz+%d+%déé–)!rÚ__init__ZwithdrawZ configureZ resizableÚtitleZ transientZgrab_setZprotocolÚcancelÚparentÚactionÚcurrent_key_sequencesÚresultrÚ key_stringÚsetÚset_modifiers_for_platformÚ modifier_varsr1ÚappendÚadvancedÚcreate_widgetsZupdate_idletasksZgeometryZ winfo_rootxZ winfo_widthZwinfo_reqwidthZ winfo_rootyZ winfo_heightZwinfo_reqheightZ deiconifyZ wait_window) ÚselfrCrArDrEr7r8ÚmodifierÚvariabler3r3r4r@0s@        *zGetKeysDialog.__init__cOstj||ŽdS)N)r Ú showerror)rNÚargsÚkwargsr3r3r4rQ`szGetKeysDialog.showerrorc Cs0t|ddd|_}|jddddt|ƒ}|jdd d t|d d |jd |_|jjdddddt|dd |jd |_|jjdddddt|dd|_ |j jddddddt |j d|j ›dd}|jddt |j d|j ddd}|jddd dt|ƒ|_ |j jddddd i|_d}xft|j|jƒD]T\}}|j ||¡}t|j |j|||d!d"} | jd|ddd#| |j|<|d7}q0Wt |j dd$d%} | jddd&ddd't|j d(d)d*d+|_|jjdBtžŽ|j d-|j¡|jjdd&d&d.d/t|j d0|jjd1} |jj| jd2| jddd&d.d/t|j d3|j d4|_!|j!jddd&d5t|d6d|_"|j"jddddddt |j"dd7|j ›d8d9d%} | jddt#|j"|j d:|_$|j$jd d;t|ƒ|_%|j%jddddd t |j%ddd?|_'|j'jddd@dddA| &¡dS)CNr>Zsunken)r:ÚreliefÚtopTZboth)ÚsideÚexpandÚfillZbottomÚx)rVrXZOKé)Útextr<Úcommandrr9)ÚrowÚcolumnÚpadxÚpadyZCanceléZ keyseq_basic)ÚnameZnsew)r]r^Ústickyr_r`zNew keys for 'z' :)r[Úw)ÚanchorÚleftZgroove)ÚjustifyÚ textvariablerTr:)ZipadxZipadyrX)r]r^rcr_r=)r\r[rPZonvalueZoffvalue)r]r^r_rcz¸Select the desired modifier keys above, and the final key from the list on the right. Use upper case Symbols when using the Shift modifier. (Letters will be converted automatically.))rgr[é)r]r^Ú columnspanr_rcéé Zsingle)r<r;Z selectmodeÚendzÚns)r]r^ZrowspanrcZvertical)Zorientr\)Zyscrollcommandz Clear Keys)r[r\)r]r^rjZkeyseq_advancedzEnter new binding(s) for 'z' : z2(These bindings will not be checked for validity!))rh)rXaÁKey bindings are specified using Tkinter keysyms as in these samples: , , , , , . Upper case is used when the Shift modifier is present! 'Emacs style' multi-keystroke bindings are specified as follows: , where the first key is the 'do-nothing' keybinding. Multiple separate bindings for one action should be separated by a space, eg., .)r]r^rcz<< Basic Key Binding Entry)r\r[Zew)r]r^Zstickr_r`)rm)(rÚframeÚpackrÚokZ button_okZgridrBZ button_cancelÚframe_keyseq_basicr rDrGÚframe_controls_basicZmodifier_checkbuttonsÚzipr1rJÚmodifier_labelr,rÚbuild_key_stringrÚlist_keys_finalÚinsertÚAVAILABLE_KEYSÚbindÚfinal_key_selectedr ÚyviewÚconfigrHÚ clear_key_seqZ button_clearÚframe_keyseq_advancedr Ú advanced_keysÚframe_help_advancedÚ toggle_levelÚ button_level)rNroZ frame_buttonsZ basic_titleZ basic_keysr^rOrPZlabelZcheckZ help_basicZscroll_keys_finalZadvanced_titleZ help_advancedr3r3r4rMdsˆ                 zGetKeysDialog.create_widgetscCs4tjdkrddddg|_n dddg|_ddi|_dS)NÚdarwinr+ZControlZOptionZCommandZAltZCtrl)ÚsysÚplatformr1ru)rNr3r3r4rIÊs  z(GetKeysDialog.set_modifiers_for_platformcCs‚|j d¡ d¡rN| ¡|jjdd|j ¡|j ¡|j  ¡d|_ n0| ¡|jjdd|j  ¡|j  ¡d|_ dS)Nr[ZAdvancedz<< Basic Key Binding Entry)r[TzAdvanced Key Binding Entry >>F) rƒZcgetÚ startswithr~r}rZliftrr€Z focus_setrLrrrs)rNr3r3r4r‚Øs     zGetKeysDialog.toggle_levelNcCs | ¡dS)N)rv)rNÚeventr3r3r4r{èsz GetKeysDialog.final_key_selectedcCsN| ¡}}|j d¡}|r0t||ƒ}| |¡|j dd |¡›d¡dS)Nrer'rr()Ú get_modifiersrwr,r5rKrGrHÚjoin)rNÚkeylistr1Ú final_keyr3r3r4rvìs     zGetKeysDialog.build_key_stringcCsdd„|jDƒ}dd„|DƒS)NcSsg|] }| ¡‘qSr3)r,)Ú.0rPr3r3r4ú ÷sz/GetKeysDialog.get_modifiers..cSsg|] }|r|‘qSr3r3)rÚmodr3r3r4rŽøs)rJ)rNZmod_listr3r3r4r‰õszGetKeysDialog.get_modifierscCsF|j dd¡|j dd¡x|jD]}| d¡q$W|j d¡dS)NrrmZmovetoz0.0r=)rwZ select_clearr|rJrHrG)rNrPr3r3r4r~ús  zGetKeysDialog.clear_key_seqcCs\|j ¡ ¡}|s(|j|j|dddS|js8| |¡rH| |¡rH||_|  ¡|  ¡dS)NzNo key specified.)rArCÚmessage) rGr,ÚstriprQÚkeyerror_titlerLÚkeys_okÚbind_okrFÚ grab_releaseÚdestroy)rNrˆÚkeysr3r3r4rqs zGetKeysDialog.okcCsd|_| ¡| ¡dS)Nr=)rFr•r–)rNrˆr3r3r4rB szGetKeysDialog.cancelcCs¾|j d¡}| ¡}|j}dd„|jDƒ}| d¡sF|j||ddnt|sh|ttkrh|j||ddnR|d gkr˜|ttd kr˜d }|j|||dn"||kr¶d }|j|||dnd SdS)NrecSsg|]}|D]}|‘q qSr3r3)rr‹r0r3r3r4rŽsz)GetKeysDialog.keys_ok..r(zMissing the final Key)rCrzNo modifier key(s) specified.)rArCrr+)r rzBThe shift modifier by itself may not be used with this key symbol.z'This key combination is already in use.TF) rwr,r‰r’rEÚendswithrQÚ FUNCTION_KEYSÚ MOVE_KEYS)rNr—rŒr1rAZ key_sequencesÚmsgr3r3r4r“s*      zGetKeysDialog.keys_okc Csdy| |dd„¡}Wn:tk rN}z|j|j|d|›ddSd}~XYnX| ||¡dSdS)NcSsdS)Nr3r3r3r3r4Ú4óz'GetKeysDialog.bind_ok..z2The entered key sequence is not accepted. Error: )rArCrFT)rzrrQr’Zunbind)rNr—ZbindingÚerrr3r3r4r”1s zGetKeysDialog.bind_ok)N)N)N)Ú__name__Ú __module__Ú __qualname__r’r@rQrMrIr‚r{rvr‰r~rqrBr“r”r3r3r3r4r6+s/f   r6Ú__main__)Úmainz!idlelib.idle_test.test_config_keyr>F)Ú verbosityÚexit)Úrun) ZtkinterrrrrZ tkinter.ttkrrrr r r r r-r…r™Útupler.ÚdigitsZ ALPHANUM_KEYSZPUNCTUATION_KEYSZWHITESPACE_KEYSZ EDIT_KEYSršryr5r6rŸZunittestr£Zidlelib.idle_test.htestr¦r3r3r3r4Ús(