B 3[X@sddlmZmZmZmZddlmZmZmZm Z m Z m Z ddlm Z ddl Z ddlZdZee je jZedZdZdZd ZeeeeeeZd d ZGd d d eZedkrddlmZeddddddlmZeedS))ToplevelListbox StringVarTclError)FrameButton CheckbuttonEntryLabel Scrollbar) messageboxN) ZF1ZF2ZF3ZF4ZF5ZF6ZF7ZF8ZF9ZF10ZF11ZF12z~!@#%^&*()_-+={}[]|;:,.<>/?)TabSpaceZReturn)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 numbersignpercentZ asciicircumZ ampersandZasteriskZ parenleftZ parenrightZ underscoreZminusZplusZequalZ braceleftZ bracerightZ bracketleftZ bracketrightZbarZ semicolonZcolonZcommaZperiodZlessZgreaterZslashZquestionZPriorZNextZLeftZRightZUpZDownr )#r~!@#%^&*()_-+={}[]|;:,.<>/?zPage Upz Page Downz Left Arrowz Right ArrowzUp Arrowz Down Arrowr ShiftzKey-)getstringascii_lowercaseupper)key modifiersmappingr35/opt/alt/python37/lib/python3.7/idlelib/config_key.py translate_keys   r5c@seZdZdZdddddZddZdd Zd d Zd d ZdddZ ddZ ddZ ddZ d ddZ d!ddZddZddZdS)" GetKeysDialogzKey Sequence ErrorF)_htest_utestc CsFt||||jdd|jddd||||||d|j ||_ ||_ ||_ d|_ t||_|jd|g|_x,|jD]"}t|}|d|j|qWd|_|||d||d|d||s |d|dnd f|sB|| dS) N) borderwidthF)heightwidthZWM_DELETE_WINDOWz+%d+%d)!r__init__ZwithdrawZ configureZ resizabletitleZ transientZgrab_setZprotocolcancelparentactioncurrent_key_sequencesresultr key_stringsetset_modifiers_for_platform modifier_varsr1appendadvancedcreate_widgetsZupdate_idletasksZgeometryZ winfo_rootxZ winfo_widthZwinfo_reqwidthZ winfo_rootyZ winfo_heightZwinfo_reqheightZ deiconifyZ wait_window) selfrCrArDrEr7r8modifiervariabler3r3r4r@0s@        *zGetKeysDialog.__init__cOstj||dS)N)r showerror)rNargskwargsr3r3r4rQ`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|jD]T\}}|j||}t|j |j|||d!d"} | jd|ddd#| |j|<|d7}q0Wt |j dd$d%} | jddd&ddd't|j d(d)d*d+|_|jjdBt|jd-|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:relieftopTZboth)sideexpandfillZbottomx)rVrXZOK)textr<commandrr9)rowcolumnpadxpadyZCancelZ keyseq_basic)nameZnsew)r]r^stickyr_r`zNew keys for 'z' :)r[w)anchorleftZgroove)justify textvariablerTr:)ZipadxZipadyrX)r]r^rcr_r=)r\r[rPZonvalueZoffvalue)r]r^r_rczSelect 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 selectmodeendzns)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)rXaKey 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)(rframepackrokZ button_okZgridrBZ button_cancelframe_keyseq_basicr rDrGframe_controls_basicZmodifier_checkbuttonszipr1rJmodifier_labelr,rbuild_key_stringrlist_keys_finalinsertAVAILABLE_KEYSbindfinal_key_selectedr yviewconfigrH clear_key_seqZ button_clearframe_keyseq_advancedr advanced_keysframe_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)Ndarwinr+ZControlZOptionZCommandZAltZCtrl)sysplatformr1ru)rNr3r3r4rIs  z(GetKeysDialog.set_modifiers_for_platformcCs|jddrN||jjdd|j|j|j d|_ n0||jjdd|j |j d|_ dS)Nr[ZAdvancedz<< Basic Key Binding Entry)r[TzAdvanced Key Binding Entry >>F) rZcget startswithr~r}rZliftrrZ focus_setrLrrrs)rNr3r3r4rs     zGetKeysDialog.toggle_levelNcCs |dS)N)rv)rNeventr3r3r4r{sz GetKeysDialog.final_key_selectedcCsN|}}|jd}|r0t||}|||jdd|ddS)Nrer'rr() get_modifiersrwr,r5rKrGrHjoin)rNkeylistr1 final_keyr3r3r4rvs     zGetKeysDialog.build_key_stringcCsdd|jD}dd|DS)NcSsg|] }|qSr3)r,).0rPr3r3r4 sz/GetKeysDialog.get_modifiers..cSsg|] }|r|qSr3r3)rmodr3r3r4rs)rJ)rNZmod_listr3r3r4rszGetKeysDialog.get_modifierscCsF|jdd|jddx|jD]}|dq$W|jddS)NrrmZmovetoz0.0r=)rwZ select_clearr|rJrHrG)rNrPr3r3r4r~s  zGetKeysDialog.clear_key_seqcCs\|j}|s(|j|j|dddS|js8||rH||rH||_| | dS)NzNo key specified.)rArCmessage) rGr,striprQkeyerror_titlerLkeys_okbind_okrF grab_releasedestroy)rNrkeysr3r3r4rqs zGetKeysDialog.okcCsd|_||dS)Nr=)rFrr)rNrr3r3r4rB szGetKeysDialog.cancelcCs|jd}|}|j}dd|jD}|dsF|j||ddnt|sh|ttkrh|j||ddnR|d gkr|ttd krd }|j|||dn"||krd }|j|||dnd SdS)NrecSsg|]}|D]}|q qSr3r3)rrr0r3r3r4rsz)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,rrrEendswithrQ FUNCTION_KEYS MOVE_KEYS)rNrrr1rAZ key_sequencesmsgr3r3r4rs*      zGetKeysDialog.keys_okc Csdy||dd}Wn:tk rN}z|j|j|d|ddSd}~XYnX|||dSdS)NcSsdS)Nr3r3r3r3r44z'GetKeysDialog.bind_ok..z2The entered key sequence is not accepted. Error: )rArCrFT)rzrrQrZunbind)rNrZbindingerrr3r3r4r1s zGetKeysDialog.bind_ok)N)N)N)__name__ __module__ __qualname__rr@rQrMrIrr{rvrr~rqrBrrr3r3r3r4r6+s/f   r6__main__)mainz!idlelib.idle_test.test_config_keyr>F) verbosityexit)run) ZtkinterrrrrZ tkinter.ttkrrrr r r r r-rrtupler.digitsZ ALPHANUM_KEYSZPUNCTUATION_KEYSZWHITESPACE_KEYSZ EDIT_KEYSrryr5r6rZunittestrZidlelib.idle_test.htestrr3r3r3r4s(