U :eg@s\ddlZddlmZmZmZmZmZmZmZm Z m Z m Z m Z m Z mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZddl m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+ddlm,Z,ddl-m.Z/ddlm0Z0ddl1m2Z2m3Z3ddl4m5Z5ddl6m7Z7dd l8m9Z9dd l:m;Z;mZ>dd l?m@Z@dd lAmBZBddlCmDZDddlEmFZFddlGmHZHddl=mIZIe3ZJe@eBeDeFeHfZKGdddeZLdaMGddde!ZNGddde!ZOGddde!ZPGddde!ZQGdddZReRZSdZTd d!d"d#d$d%ZUd&d'ZVGd(d)d)e!ZWeXd*krXdd+lYmZZZeZd,d-d.d/dd0l[m\Z\e\eLdS)1N)ToplevelListboxScaleCanvas StringVar BooleanVarIntVarTRUEFALSETOPBOTTOMRIGHTLEFTSOLIDGROOVENONEBOTHXYWEEWNSNSEWNW HORIZONTALVERTICALANCHORACTIVEEND) Frame LabelFrameButton CheckbuttonEntryLabel OptionMenuNotebook Radiobutton ScrollbarStyle) colorchooser) messagebox)idleConf ConfigChanges) GetKeysDialog) DynOptionMenu)macosx) SectionName HelpSource) view_text) AutoComplete) CodeContext) ParenMatch)FormatParagraph)Squeezer)ScrollableTextFramecseZdZd$dddddZddZdd Zd d Zd d ZddZfddZ ddZ ddZ ddZ ddZ ddZddZddZd d!Zd"d#ZZS)% ConfigDialogF)_htest_utestcCst||||_|ri|_|s(|||p2d|d}||sPdnd}|d|d|| |j t t d| || d|j|jjt|s|||dS)NzIDLE Preferences+heightwidthZWM_DELETE_WINDOW)r__init__parent instance_dictZwithdrawtitleZ winfo_rootxZ winfo_rootyZgeometrycreate_widgetsZ resizabler Z transientprotocolcancelfontpagefontlistZ focus_settracersattachZgrab_setZ wm_deiconifyZ wait_window)selfrGrIr=r>xyrT9/usr/local/python38/lib/python3.8/idlelib/configdialog.pyrF0s(    zConfigDialog.__init__cCst|dd|_}|jjddt||_}t||_t||j|_t ||_ t ||_ | |_|j|jdd|j|jdd|j|j dd|j|j d d|j|jd d||jtttd |jtd dS) NZ5pxpaddingZnwes)sticky Fonts/Tabstext Highlightsz Keys z General Extensionssideexpandfillr_)r framegridr'noteHighPagehighpageFontPagerMKeysPageZkeyspageGenPageZgenpagecreate_page_extensionsZextpageaddZenable_traversalpackr r rcreate_action_buttonsr )rQrcrerTrTrUrJ_s     zConfigDialog.create_widgetscCstri}nddi}t|jdd}t|dd}i|_d|jfd|jfd|jfd|jffD]:\}}t |f||t d ||j|<|j|j t d d qZt|dd d j t d|j td|S)NrW)rVZOkZApplyZCancelZHelp)r[command takefocus)r_padxr)rD borderwidthrb)r1ZisAquaTkr rcZbuttonsokapplyrLhelpr"r rmrr r )rQZ padding_argsZouterZ buttons_frameZtxtcmdrTrTrUrns(     z"ConfigDialog.create_action_buttonscCs||dSN)rxdestroyrQrTrTrUrwszConfigDialog.okcCs$|t||dSr{)deactivate_current_configchangessave_allsave_all_changed_extensionsactivate_config_changesr}rTrTrUrxszConfigDialog.applycCst|dSr{)rclearr|r}rTrTrUrLszConfigDialog.cancelcs&|jjdda|tdS)N1.0end)rM font_samplegetfont_sample_textZ grab_releasesuperr|r} __class__rTrUr|szConfigDialog.destroycCs8|jj|jdd}t|dtt|dddS)Nr[)optionzHelp for IDLE preferencesr<)rIcontents)reZtabselectstripr4 help_common help_pagesr)rQZpagerTrTrUryszConfigDialog.helpcCs"|jj}|D] }|qdSr{)rGrHkeysZRemoveKeybindings)rQ win_instancesinstancerTrTrUr~s z&ConfigDialog.deactivate_current_configcCs\|jj}|D]4}||||||qt D] }| qJdSr{) rGrHrZResetColorizerZ ResetFontZset_notabs_indentwidthZApplyKeybindingsZreset_help_menu_entriesZupdate_cursor_blink reloadablesreload)rQrrklassrTrTrUrs  z$ConfigDialog.activate_config_changescCsd|j}t|j}tjd|_tjd|_|t |_ | t ||_ |j ddd|jdddt||j dd|_|jd|jt||jjd }|j|j_t|d d d |_|jjddd d |jdddd |jjdddddgd|jddi|_d|_||_|j|_d}t|j D] }|!||d|d}q|j ||j"d|d|S)N extensionsrZweightrqZbrowse)Z listvariableZ selectmodez<>rr)rErDZnwscolumnrowrXnsnsew )rrrXrurVr<{z} )#rGr rer- defaultCfgext_defaultCfguserCfg ext_userCfgregisteris_intload_extensionsrZextension_names rowconfigurecolumnconfigurerextension_listbindextension_selectedr)yviewsetyscrollcommandr! details_framerd configure config_framecurrent_extensionZ outerframeZtabbed_page_setsortedrcreate_extension_frameZ selection_set)rQrGrcZscrollZ ext_namesext_namerTrTrUrks@           z#ConfigDialog.create_page_extensionsc CsLi|_tjddD]}g|j|<q|jD]}t|j|}dd|D}|D]}||qP||}|D]}|jj||dd}zddd|}d}WnBtk rzt |}d }Wnt k r|}d}YnXYnXz|j j|||d|d }Wnt k r|}YnXt |} | t||j|||||| d qlq(dS) NF)Z active_onlycSsg|]}|dr|qS)enable) startswith).0opt_namerTrTrU @s z0ConfigDialog.load_extensions..T)raw)TrueFalseboolint)typerdefault)namerrvaluevar)rr-Z GetExtensionsrrZ GetOptionListremoveGetKeyErrorr ValueErrorrrrstrappend) rQrZopt_listZenablesrZdef_strZdef_objZopt_typerrrTrTrUr5sV      zConfigDialog.load_extensionscCs|j}|r|j|}|dks,||jkrV|jrV|jjdd|j|jd|_|r|jj|d|j|jdddd||_dS)Nr<rZrrr) r curselectionrrrconfigrZ grid_forgetrd)rQeventZnewselrTrTrUrcs  zConfigDialog.extension_selectedcCst|jddd}||j|<|j}t|j|D]\}}t||dd}|j|dtd|d}|dd krt ||d d d d j|dt ddq.|ddkrt ||d|j dfddj|dt ddq.t ||ddj|dt ddq.dS)NrrCrrZrrrrXrrrrr)variableonvalueoffvaluerEr)rrrXrurkey%Pr) textvariablevalidatevalidatecommandrErrE)VerticalScrolledFramerrinterior enumeraterr%rdrr#rr$rr)rQrfZ entry_arearoptZlabelrrTrTrUrrsF   z#ConfigDialog.create_extension_framecCsX|d}|d}|dp"|}|d|||krH|j||S|j|||S)Nrrr)rrrrZ RemoveOption SetOption)rQsectionrrrrrTrTrUset_extension_valuesz ConfigDialog.set_extension_valuecCsFd}|jD](}|j|}|D]}|||rd}qq |rB|jdS)NFT)rrrZSave)rQZ has_changesroptionsrrTrTrUrs    z(ConfigDialog.save_all_changed_extensions)r<)__name__ __module__ __qualname__rFrJrnrwrxrLr|ryr~rrkrrrrr __classcell__rTrTrrUr;,s /"(     >.r;u^ AaBbCcDdEeFfGgHhIiJj 1234567890#:+=(){}[] ¢£¥§©«®¶½ĞÀÁÂÃÄÅÇÐØß ɐɕɘɞɟɤɫɮɰɷɻʁʃʆʎʞʢʫʭʯ ΑαΒβΓγΔδΕεΖζΗηΘθΙιΚκ БбДдЖжПпФфЧчЪъЭэѠѤѬӜ אבגדהוזחטיךכלםמןנסעף ابجدهوزحطي٠١٢٣٤٥٦٧٨٩ ०१२३४५६७८९अआइईउऊएऐओऔ ௦௧௨௩௪௫௬௭௮௯அஇஉஎ 〇一二三四五六七八九 汉字漢字人木火土金水 가냐더려모뵤수유즈치 あいうえおアイウエオ csVeZdZfddZddZddZddZd d Zdd d ZddZ ddZ Z S)rhcs0t||j|_|||dSr{)rrFhighlight_samplecreate_page_font_tab load_font_cfg load_tab_cfg)rQmasterrgrrTrUrFs  zFontPage.__init__c Cstt||j|_tt||j|_tt||j|_tt|d|_ t |dt dd}t |dt dd}t |dt dd}t |}t |}t |tdd}t|d d td |_|jd |j|jd |j|jd|jt|}|j|jjd|jj|jdt |dd}t||jd|_t||jdddd|_t|} | j|_|jjtddd|j t!t"t |tdd} t#||j ddddd|_$|j%ddd|j&ddd|j'ddddd|j'dddddd d!|j'ddddd"d#|j(t)ddt*d$|j(t)ddt*d$|j(t)t+d%|jj(tt,t*d&|j(tt-d'|j(tt+d%|jj(tt+d%|jj(tt+d(d)| j(t,t.d*| j(t)t+dd)|j$j(t)dt*d+dS),N)mainIndent num-spacesrqz Shell/Editor Font rvreliefr[z Font Sample (Editable) z Indentation Width z Font Face :)Zjustifyr[rTrDrsexportselectionzzr)rzSize :rZrrZBold)rrrr[)wraprErDzPython Standard: 4 Spaces!Z horizontal)rorientZ tickintervalZfrom_torrt)rrrupadyrpr)rrZrowspanrurrXZew)rrrurrXr_rurrar_anchorr^)r_rar?r_rru)r`ra)r_rura)/rOrlrvar_changed_font font_name font_sizer font_boldr space_numr!rr r%rrr rNron_fontlist_selectr)rrrr0sizelistr#Z bold_toggler:r[rrinsertrrrZ indent_scalerrrdrmr rrr rr) rQZ frame_fontZ frame_sampleZ frame_indentZframe_font_nameZframe_font_paramZfont_name_titleZ scroll_fontZfont_size_titleZfont_sample_frameZ indent_titlerTrTrUrs. zFontPage.create_page_font_tabc Cst|dd}|d}|d}|ddk}ttt|}|D]}|jt |qD|j |dd|D}z>| |}|j ||j ||j||j|Wntk rYnX|jd ||j||dS) Nr EditorWindowrrrqZboldcSsg|] }|qSrT)lower)rsrTrTrUrhsz*FontPage.load_font_cfg..)789101112131416Z18Z20Z22Z25Z29Z34Z40)r-ZGetFontr rrtkfontfamiliesrNr rrindexsee select_set select_anchorZactivaterrSetMenur set_samples) rQZconfigured_fontrrrZfontsfontZlc_fontsZcurrent_font_indexrTrTrUrWs,        zFontPage.load_font_cfgcGsZ|j}tddd||j}tddd||j}tddd||dS)Nrr rz font-sizez font-bold)rrr add_optionrrrrQparamsrrTrTrUrys   zFontPage.var_changed_fontcCs0|j|jjdkrtnt}|j|dS)NZ KeyRelease) rNrrrrrrrr )rQrrrTrTrUrszFontPage.on_fontlist_selectNcCsH|j}|jrtjntj}||j|f}||jd<||jd<dS)Nr) rrrrZBOLDZNORMALrrr)rQrrZ font_weightZnew_fontrTrTrUrs   zFontPage.set_samplescCs$tjdddddd}|j|dS)Nrrrrrr)r- GetOptionrr)rQrrTrTrUrszFontPage.load_tab_cfgcGs|j}tddd|dS)Nrrr)rrrrr rTrTrUvar_changed_space_nums zFontPage.var_changed_space_num)N) rrrrFrrrrrrr%rrTrTrrUrhs p"  rhcseZdZfddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*ZZS)+rfcs4t|||_t||_||dSr{)rrFwinfo_toplevelcdr*stylecreate_page_highlightload_theme_cfgrQrrrTrUrFs    zHighPage.__init__cs&ddddddddd d d d d dddd_ttj_ttj_t_ ttj _ ttj _ ttj_tdtdd}tdtdd}t|tdd}|j}_|jddddtdtd|ddd|dd dd!}|D]\}}|t||qt|d"t}td|D]0} || d#| tt |d$d%d&qHjD].} | ffd'd( } |!j| dd)| qd*|d+<j"jd,dd-d.t#|d,d/_$t#|} t%j$d0j&d1_'t(j$jddd2_)t*| j dd3j+d4_,t*| j dd5j+d4_-j .dt%|d6j/d1_0t1|d7d8} t*|j dj2d9d:_3t*|j dj2d;d:_4t(|jddd<_5t(|jddd<_6t%|d=j7d1_8t1|dd>_9|j:t;d?d?td?d?t?dAj$j:t>d?d?t?dA| j:t>d?ddB|j:t>d?d?ttttBd?d?dIj3j:t>tBd?dJj4j:t>tBd?ddIj5j:t>t?d?d?dHj6j:t>t?tBd?d?dKj8j:t>t?d?d?dHj9j:t>t?d?dLdS)MN)normalZ00)contextZ01)keywordZ02) definitionZ03)builtinZ04)commentZ05)stringZ06)hiliteZ07)hitZ08)cursorZ09)breakr)consoler)errorr)stdoutr)stderrr) linenumberr)zNormal Code or Textz Code ContextzPython KeywordszPython DefinitionszPython BuiltinszPython CommentszPython Stringsz Selected Textz Found TextCursorzEditor Breakpointz Shell Promptz Error TextzShell User OutputzShell User Exceptionz Line Numberrqz Custom Highlighting rz Highlighting Theme r)rrv)Zcourier r<Zhand2r)rr5rErDrshighlightthicknessrzcSsdSNr6rTerTrTrUZz0HighPage.create_page_highlight..z cSsdSr?rTr@rTrTrUrB[rC)")z# Click selects item.r1 r,)zcode context sectionr-rD)z| cursorr5rD)defr.) r,)funcr/)z (param): r,)z"Return None."r2)z var0 = r,)z'string'r2)z var1 = r,)z 'selected'r3)z var2 = r,)z'found'r4)z var3 = r,)listr0)(r,)Noner.)z) r,)z breakpoint("line")r6)z r,z>>>r7)z 3.14**2 r,)z9.8596r9rDrL)z pri r,)nr8)zt( r,) SyntaxErrorr:rDrz.0drGr;csj|dSr{)highlight_targetr)relemr}rTrUtemvsz+HighPage.create_page_highlight..temzdisabledstateframe_color_set.TFrameZsolid)rvr)r(zChoose Color for :r[rr)r>Z Foreground)rrr[rrZ BackgroundzSave as New Custom Themez Select : rZza Built-in Themerrrrr[za Custom ThemerzDelete Custom Themervrtr_rurr`rarr_rurrr")r_r`rarurrprr_rarurr_rrurr)r_rarrur)r_rar)Dtheme_elementsrOrlrvar_changed_builtin_name builtin_namevar_changed_custom_name custom_namer fg_bg_togglevar_changed_colorcolorvar_changed_theme_source theme_sourcevar_changed_highlight_targetrPr!rr:rr[rrr rrr rlenr splitlinesrangerZtag_bindr(r frame_color_setr" get_colorZbutton_set_colorr0 targetlistr(set_color_sample_bindingfg_onbg_onrsave_as_new_themeZbutton_save_customr%set_theme_typeZbuiltin_theme_oncustom_theme_on builtinlist customlist delete_custombutton_delete_custom theme_messagermrr rr rrr rr )rQ frame_customZ frame_themeZ sample_framer[Z string_tagsr2tagZn_lineslinenoelementrRZframe_fg_bg_toggleZtheme_type_titlerTr}rUr)sTv         zHighPage.create_page_highlightc s.jtjddddddt}jrtdd}|j ||tdd}||sj d j d qވj ||d nHtdd}|j ||tdd}|j ||d tj}|jfd d dj ||d dS)NrThemerrrrr highlightuserrS- no custom themes -rcsj|dS)Nr)r])rRr}rTrUrBrCz)HighPage.load_theme_cfg..)r)rfrr-r$Z CurrentThemerGetSectionListsortrtrrsrTrarurrrIr]rrmpaint_theme_sampleset_highlight_target)rQcurrent_option item_listZ theme_namesrTr}rUr*s<       zHighPage.load_theme_cfgcGsd}|j}||krXtddd|kr.rrzUse a Built-in Key SetrWzUse a Custom Key SetrzDelete Custom Key SetrVzSave as New Custom Key SetrXrtrYrr[r)rrZ columnspanrXr)rrrXrurT)r_rar`rur_rar`)r_rar`r)8rOrlrr^r_r`rarvar_changed_keyset_source keyset_sourcevar_changed_keybinding keybindingr!rr r%r)rrr bindingslistron_bindingslist_selectrZxviewrr" get_new_keysbutton_new_keysrjr( set_keys_typeZbuiltin_keyset_oncustom_keyset_onr0rtrudelete_custom_keysbutton_delete_custom_keyssave_as_new_key_setZbutton_save_custom_keys keys_messagermr r rrrrrrdrrrrr )rQryZ frame_targetZ target_titleZscroll_target_yZscroll_target_xZframesrTrrUrKsR       zKeysPage.create_page_keysc Cs|jtjddddddt}|jrtdd}||j ||tdd}||s|j d |j d q|j ||d nHtdd}||j ||tdd}||j |t|t}||dS) NrKeysrrrr~rrr- no custom keys -r)rrr-r$Z CurrentKeysrrrrtrrrTraru default_keysrload_keys_list)rQrr keyset_namerTrTrUrs6       zKeysPage.load_key_cfgcGsd}|j}||krXtddd|kr                  zKeysPage.get_new_keyscCs,tddtdd}t|d||j}|S)NrrrzNew Custom Key Setr)rQrrrrTrTrUrrs  zKeysPage.get_new_keys_namecCs|d}|r||dS)NzNew Key Set Name:)rr)rQZ new_keys_namerTrTrUrzs zKeysPage.save_as_new_key_setcCs|jddS)Nr)rrTrQrrTrTrUrszKeysPage.on_bindingslist_selectc Cs|jr|j}n |j}t|}i}|D]&}|dd}d||}|||<q2|tdkrtd|}|D]}||||<qv|||t dd} | |j | ||j d|dS)NrqrGrrr)rrr_rar-Z GetCoreKeysjoinrsave_new_key_setrrrurrr) rQZnew_key_set_nameZprev_key_set_nameZ prev_keysrrZ event_namerrZcustom_key_listrTrTrUrs&           zKeysPage.create_new_key_setcCsd}|jrd}|jt}t|}t|}||j dt |D]`}d ||}|dd}|t dkr|t d|krt d||}|j t |d|qN|r|j||j||j|dS) NFTrrGrqrrr)rrrrr-Z GetKeySetrIrrrrrrr rrr)rQrZreselectrkeysetZ bind_namesrrrTrTrUrs&        zKeysPage.load_keys_listcCs:tjd||D] }||}tjd|||qdS)Nrr)rrrrrTrTrUrs zKeysPage.save_new_key_setcOs tj||Sr{rrrTrTrUrszKeysPage.askyesnocCs|j}d}|jd|||ds&dS|jtd|tdd}| |sp|j d|j |dn|j ||d|jtjd d d |jtjd d d ptt|j|j|dS) Nz0Are you sure you wish to delete the key set %r ?zDelete Key Setrrrrrrrrrr)rarrr'r~rrr-rrrrTrurrrrrr_rrrrr)rQrrrrTrTrUrs6       zKeysPage.delete_custom_keys)rrrrFrrr^r`rrrrrrrrr staticmethodrrrrrTrTrrUriCs& !   , ricsdeZdZfddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ Z S)rjcs(t||||dSr{)rrFinit_validatorscreate_page_generalload_general_cfgr+rrTrUrFs zGenPage.__init__cs*tdfdd}||df|_dS)Nz[0-9]*cs|dk Sr{) fullmatchr Zdigits_or_empty_rerTrUis_digits_or_emptysz3GenPage.init_validators..is_digits_or_emptyr)recompiler digits_only)rQrrTrrUrs  zGenPage.init_validatorsc Cstt|d|_tt|d|_tt|d|_tt|d|_tt|d|_ tt|d|_ tt|d|_ tt|d|_ tt|d |_ tt|d |_tt|d |_tt|d |_tt|d |_t|dtdd}t|dtdd}t|dtdd}t|dtdd}t|dd}t|dd}t||jddd|_t||jddd|_t|dd}t|dd}t|dd} t||jd|jdd |_t|d!d} t||jd|jdd |_t|dd} t| d"d} t| |jdd#|_t|dd} t| d$d}t| d%|j |jdd&|_t|dd}t|d'd}t ||j d(d)d*d(|_!t|dd}t|d+d}t||j d%d,|_"t|d-|j d.|_#t|dd}t|d/d}t||jdd0d|_$t||jdd1d|_%t|dd}t|d2d}t||jd3|jdd |_&t|dd}t|d4d}t||jdd#|_'t|dd}t|d5d}t||jd|jdd |_(t|dd}t|d6d}t|d3|j |jdd&|_)t|}t|}t*|d7d8t+d9|_,t-|}|j,j.|d:<|j/|j,d;<|j,0d<|j1t2|d=d>d?|j3d@|_4t2|dAd?|j5dB|_6t2|dCd>d?|j7d@|_8|j9t:d7d7t;tt?d7d7dF|jj9t@t?d7d7dF|jj9t@t?d7d7dF|j9t:d7dt=dE|j9t>t?d7d7dF|jj9t@tAdGd7dF| j9t@tAd7dH|jj9t@tAdGd7dF| j9t@tAd7dH| j9t:d7dt=dE| j9t>t?d7d7dF|jj9t>d7d7dI| j9t:d7dt=dE|j9t>t?d7d7dF|jj9t:dGd7dI|j9t:d7dt=dE|j9t>t?d7d7dF|j!j9t:dGd7dI|j9t:d7dt=dE|j9t>t?d7dJ|j#j9t@tAdKd7dF|j"j9t:t?dKd7dF|j9t:d7dt=dE|j9t>t?d7d7dF|j%j9t@t?d7d7dF|j$j9t@t?d7d7dF|j9t:d7dt=dE|j9t>t?d7d7dF|j&j9t:dGd7dI|j9t:d7dt=dE|j9t>t?d7d7dF|j'j9t>d7d7dI|j9t:d7dt=dE|j9t>t?d7d7dF|j(j9t:d7d7dI|j9t:d7dt=dE|j9t>t?d7d7dF|j)j9t:d7d7dI|j9t@d7d7tBdE|j9t:d7d7t;ttAt;t.default_callbackrT)rrrrTrrUrszVarTrace.make_callbackcCs6|jr2|j\}}|d||j||fqdS)Nwrite)r popZ trace_addr rrrTrTrUrPs zVarTrace.attachcCsB|jr>|j\}}|d|dd|j||fqdS)Nrrr)r rZ trace_removeZ trace_infor rrrTrTrUdetachszVarTrace.detachN) rrrrFrrlrrrPrrTrTrTrUr s  r a7When you click either the Apply or Ok buttons, settings in this dialog that are different from IDLE's default are saved in a .idlerc directory in your home directory. Except as noted, these changes apply to all versions of IDLE installed on this machine. [Cancel] only cancels changes made since the last save. u Font sample: This shows what a selection of Basic Multilingual Plane unicode characters look like for the current font selection. If the selected font does not define a character, Tk attempts to find another font that does. Substitute glyphs depend on what is available on a particular system and will not necessarily have the same size as the font selected. Line contains 20 characters up to Devanagari, 14 for Tamil, and 10 for East Asia. Hebrew and Arabic letters should display right to left, starting with alef, א and ا. Arabic digits display left to right. The Devanagari and Tamil lines start with digits. The East Asian lines are Chinese digits, Chinese Hanzi, Korean Hangul, and Japanese Hiragana and Katakana. You can edit the font sample. Changes remain until IDLE is closed. z Highlighting: The IDLE Dark color theme is new in October 2015. It can only be used with older IDLE releases if it is saved as a custom theme, with a different name. z Keys: The IDLE Modern Unix key set is new in June 2016. It can only be used with older IDLE releases if it is saved as a custom key set, with a different name. a_ General: AutoComplete: Popupwait is milliseconds to wait after key char, without cursor movement, before popping up completion box. Key char is '.' after identifier or a '/' (or '\' on Windows) within a string. FormatParagraph: Max-width is max chars in lines after re-formatting. Use with paragraphs in both strings and comment blocks. ParenMatch: Style indicates what is highlighted when closer is entered: 'opener' - opener '({[' corresponding to closer; 'parens' - both chars; 'expression' (default) - also everything in between. Flash-delay is how long to highlight if cursor is not moved (0 means forever). CodeContext: Maxlines is the maximum number of code context lines to display when Code Context is turned on for an editor window. Shell Preferences: Auto-Squeeze Min. Lines is the minimum number of lines of output to automatically "squeeze". a ZzDummy: This extension is provided as an example for how to create and use an extension. Enable indicates whether the extension is active or not; likewise enable_editor and enable_shell indicate which windows it will be active on. For this extension, z-text is the text that will be inserted at or removed from the beginning of the lines of selected text, or the current line if no selection. )rYr\rrr]cCs2|sdSzt|WdStk r,YdSXdS)NTF)rrrrTrTrUr src@seZdZddZdS)rcstj||f||t|td}|jtttdt|dd|j ddjt t t d|j jdddt|_jddtdfd d }d |fd d }d |dS)Nr)rar_r`r)rvr>rrErr)Zwindowrcs$f}jd|ddS)Nz 0 0 %s %s)Z scrollregion)winfo_reqwidthZwinfo_reqheightr)rr)canvasrrTrU_configure_interiorB sz;VerticalScrolledFrame.__init__.._configure_interiorz cs&kr"jddS)N)rE)rZ winfo_widthZ itemconfigure)rrrZ interior_idrTrU_configure_canvasH sz9VerticalScrolledFrame.__init__.._configure_canvas)r rFr)rrmrr r rrrrr rrZ xview_movetoZ yview_movetorZ create_windowrr)rQrGrkwZ vscrollbarrrrTrrUrF- s$     zVerticalScrolledFrame.__init__N)rrrrFrTrTrTrUr& sr__main__)rz#idlelib.idle_test.test_configdialogrqF) verbosityexit)run)]rtkinterrrrrrrrr r r r r rrrrrrrrrrrrrrrrrrZ tkinter.ttkr r!r"r#r$r%r&r'r(r)r*r+Z tkinter.fontrrr,Zidlelib.configr-r.Zidlelib.config_keyr/Zidlelib.dynoptionr0Zidlelibr1Z idlelib.queryr2r3Zidlelib.textviewr4Zidlelib.autocompleter5Zidlelib.codecontextr6Zidlelib.parenmatchr7Zidlelib.formatr8Zidlelib.squeezerr9r:rrr;rrhrfrirjr rOrrrrrZunittestrZidlelib.idle_test.htestr rTrTrTrU sv4             S3'=> +