o
     JAf                     @   s  	 d dl Z d dlmZmZmZmZmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ d dl m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z- d dlm.Z. d dl/m0Z1 d dlm2Z2 d dl3m4Z4m5Z5 d dl6m7Z7 d dl8m9Z9 d d	l:m;Z; d d
l<m=Z=m>Z> d dl?m@Z@ d dlAmBZB d dlCmDZD d dlEmFZF d dlGmHZH d dlImJZJ d dl?mKZK e5 ZLeBeDeFeHeJfZMG dd deZNdaOG dd de!ZPG dd de!ZQG dd de!ZRG dd de!ZSG dd de!ZTG dd  d e!ZUG d!d" d"e"ZVG d#d$ d$ZWeW ZXd%ZYd&d'd(d)d*d+ZZd,d- Z[G d.d/ d/e!Z\e]d0krKd d1l^m_Z_ e_d2d3d4d5 d d6l`maZa eaeN dS dS )7    N)ToplevelListboxCanvas	StringVar
BooleanVarIntVarTRUEFALSETOPBOTTOMRIGHTLEFTSOLIDGROOVENONEBOTHXYWEEWNSNSEWNW
HORIZONTALVERTICALANCHORACTIVEENDTclError)Frame
LabelFrameButtonCheckbuttonEntryLabel
OptionMenuNotebookRadiobutton	ScrollbarStyleSpinboxCombobox)colorchooser)
messagebox)idleConfConfigChanges)GetKeysWindow)DynOptionMenu)macosx)SectionName
HelpSource)	view_text)AutoComplete)CodeContext)
ParenMatch)FormatParagraph)Squeezer)ScrollableTextFramec                       sp   e Zd Z	 ddddddZdd Zdd	 Zd
d Zdd Zdd Z fddZ	dd Z
dd Zdd Z  ZS )ConfigDialog F)_htest_utestc                C   s   	 t | | || _|ri |_|s|   | |pd | d }| |s)dnd }| d| d|  | 	  | j
ttd | | | d| j | jj  t  |sh|   |   |   d S d S )NzIDLE Preferences         +heightwidthZWM_DELETE_WINDOW)r   __init__parentinstance_dictZwithdrawtitleZwinfo_rootxZwinfo_rootyZgeometrycreate_widgetsZ	resizabler	   Z	transientprotocolcancelfontpagefontlistZ	focus_settracersattachZgrab_setZwm_deiconifyZwait_window)selfrI   rK   r?   r@   xy rV   +/usr/lib/python3.10/idlelib/configdialog.pyrH   1   s,   
zConfigDialog.__init__c                 C   s  	 t | dd | _}| jjdd t| | _}t|| _t|| j| _t	|| j| _
t|| j| _t|| _t|| _|j| j
dd |j| jdd |j| jdd |j| jd	d |j| jd
d |j| jdd |  |jtttd |  jtd d S )NZ5pxpaddingZnwes)stickyz Fonts text
Highlightsz Keys z	 Windows z
 Shell/Ed 
Extensionssideexpandfillr`   )r    framegridr'   noteExtPageextpageHighPagehighpageFontPagerO   KeysPageZkeyspageWinPageZwinpageShedPageZshedpageaddZenable_traversalpackr
   r   r   create_action_buttonsr   )rS   rd   rf   rV   rV   rW   rL   `   s&   


zConfigDialog.create_widgetsc                 C   s   	 t  ri }nddi}t| jdd}t|dd}i | _d| jfd| jfd| jfd| jffD ]\}}t	|f||t
d	|| j|< | j| jtd
d q.t|dddjtd |jtd |S )NrY   )         rX   ZOkZApplyZCancelZHelp)r\   command	takefocus   )r`   padxr   )rF   borderwidthrc   )r3   ZisAquaTkr    rd   ZbuttonsokapplyrN   helpr"   r	   rp   r   r
   r   )rS   Zpadding_argsZouterZbuttons_frameZtxtcmdrV   rV   rW   rq      s*   
z"ConfigDialog.create_action_buttonsc                 C   s   	 |    |   d S N)r{   destroyrS   rV   rV   rW   rz      s   zConfigDialog.okc                 C   s(   	 |    t  | j  |   d S r~   )deactivate_current_configchangessave_allrh   save_all_changed_extensionsactivate_config_changesr   rV   rV   rW   r{      s
   
zConfigDialog.applyc                 C   s   	 t   |   d S r~   )r   clearr   r   rV   rV   rW   rN      s   zConfigDialog.cancelc                    s&   | j jdda|   t   d S )N1.0end)rO   font_samplegetfont_sample_textZgrab_releasesuperr   r   	__class__rV   rW   r      s   zConfigDialog.destroyc                 C   s:   	 | j j| j  dd }t| dtt|d d d S )Nr\   )optionzHelp for IDLE preferencesr>   )rK   contents)rf   Ztabselectstripr6   help_common
help_pagesr   )rS   ZpagerV   rV   rW   r|      s
   
zConfigDialog.helpc                 C   s$   	 | j j }|D ]}|  q	d S r~   )rI   rJ   keysZRemoveKeybindings)rS   win_instancesinstancerV   rV   rW   r      s
   
z&ConfigDialog.deactivate_current_configc                 C   s^   	 | j j }|D ]}|  |  |  |  |  |  q	t	D ]}|
  q&d S r~   )rI   rJ   r   ZResetColorizerZ	ResetFontZset_notabs_indentwidthZApplyKeybindingsZreset_help_menu_entriesZupdate_cursor_blinkreloadablesreload)rS   r   r   klassrV   rV   rW   r      s   

z$ConfigDialog.activate_config_changes)r>   )__name__
__module____qualname__rH   rL   rq   rz   r{   rN   r   r|   r   r   __classcell__rV   rV   r   rW   r=   -   s    /&(	r=   u^  <ASCII/Latin1>
AaBbCcDdEeFfGgHhIiJj
1234567890#:+=(){}[]
¢£¥§©«®¶½ĞÀÁÂÃÄÅÇÐØß

<IPA,Greek,Cyrillic>
ɐɕɘɞɟɤɫɮɰɷɻʁʃʆʎʞʢʫʭʯ
ΑαΒβΓγΔδΕεΖζΗηΘθΙιΚκ
БбДдЖжПпФфЧчЪъЭэѠѤѬӜ

<Hebrew, Arabic>
אבגדהוזחטיךכלםמןנסעף
ابجدهوزحطي٠١٢٣٤٥٦٧٨٩

<Devanagari, Tamil>
०१२३४५६७८९अआइईउऊएऐओऔ
௦௧௨௩௪௫௬௭௮௯அஇஉஎ

<East Asian>
〇一二三四五六七八九
汉字漢字人木火土金水
가냐더려모뵤수유즈치
あいうえおアイウエオ
c                       sF   e Zd Z fddZdd Zdd Zdd Zd	d
 ZdddZ  Z	S )rk   c                    s(   t  | |j| _|   |   d S r~   )r   rH   highlight_samplecreate_page_fontload_font_cfg)rS   masterrj   r   rV   rW   rH   "  s   zFontPage.__init__c           	      C   s   	 t t| | j| _t t| | j| _t t| | j| _t| dt	dd}t| dt	dd}t
|}t
|}t|tdd}t|ddtd	| _| jd
| j | jd| j | jd| j t|}|j| jjd | jj|jd t|dd}t|| jd | _t|| jdddd| _t|}|j| _| jjtddd | jtt  | j!ddd | j"ddd |j#ddddd |j#ddddddd |j$t%ddt&d |j$t%ddt&d |j$t%t'd | jj$tt(t&d |j$tt)d |j$tt'd | jj$tt'd | jj$tt'd d! |j$t(t*d" d S )#Nrt   z Shell/Editor Font ry   reliefr\   z Font Sample (Editable) zFont Face :)Zjustifyr\      TrF   rv   exportselection<ButtonRelease-1>z<KeyRelease-Up>z<KeyRelease-Down>ru   )yscrollcommandzSize :r[      r   ZBold)variableonvalueoffvaluer\   )wraprG   rF   Zweightrw   )rowcolumnrx   padyrs   nsew)r   r   Zrowspanrx   r   rZ   r`   rx   r   rb   r`   anchorr_   )r`   rb   rA   r`   r   rx   )ra   rb   )+rQ   ro   r   var_changed_font	font_name	font_sizer   	font_boldr!   r   r    r%   r   r   r	   rP   bindon_fontlist_selectr)   configyviewsetr2   sizelistr#   Zbold_toggler<   r\   r   r   insertr   r   columnconfigurerowconfigurere   rp   r
   r   r   r   r   r   )	rS   Z
frame_fontZframe_sampleZframe_font_nameZframe_font_paramZfont_name_titleZscroll_fontZfont_size_titleZfont_sample_framerV   rV   rW   r   (  sb   %zFontPage.create_page_fontc           	      C   s   	 t | dd}|d  }|d }|d dk}ttt| }|D ]	}| jt	| q#| j
| dd |D }z||}| j| | j| | j| | j| W n	 tyb   Y nw | jd	| | j| |   d S )
NmainEditorWindowr   r   rt   Zboldc                 S   s   g | ]}|  qS rV   )lower).0srV   rV   rW   
<listcomp>  s    z*FontPage.load_font_cfg.<locals>.<listcomp>)789101112131416Z18Z20Z22Z25Z29Z34Z40)r/   ZGetFontr   sortedr   tkfontfamiliesrP   r   r   r   indexsee
select_setselect_anchorZactivate
ValueErrorr   SetMenur   set_samples)	rS   Zconfigured_fontr   r   r   ZfontsfontZlc_fontsZcurrent_font_indexrV   rV   rW   r     s0   
zFontPage.load_font_cfgc                 G   s\   	 | j  }tddd| | j }tddd| | j }tddd| |   d S )Nr   r   r   z	font-sizez	font-bold)r   r   r   
add_optionr   r   r   rS   paramsvaluerV   rV   rW   r     s   


zFontPage.var_changed_fontc                 C   s2   	 | j |jjdkrtnt}| j|  d S )NZ
KeyRelease)	rP   r   typenamer   r   r   r   r   )rS   eventr   rV   rV   rW   r     s
   zFontPage.on_fontlist_selectNc                 C   sJ   	 | j  }| j rtjntj}|| j |f}|| jd< || jd< d S )Nr   )	r   r   r   r   ZBOLDZNORMALr   r   r   )rS   r   r   Zfont_weightZnew_fontrV   rV   rW   r     s   

zFontPage.set_samplesr~   )
r   r   r   rH   r   r   r   r   r   r   rV   rV   r   rW   rk      s    Y"
rk   c                       s   e Zd Z fddZdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Z  ZS )+ri   c                    s:   t  | || _| | _t|| _|   |   d S r~   )	r   rH   rh   winfo_toplevelcdr*   stylecreate_page_highlightload_theme_cfgrS   r   rh   r   rV   rW   rH     s   

zHighPage.__init__c              	      s`  	 i ddddddddd	d
dddddddddddddddddddddd  _ tt  j _tt  j _t  _	tt  j
 _tt  j _tt  j _t d!td"d#}t d!td$d#}t|td%d&}|j } _|jd'd(d%d%td)td* |d+d,d-  |d.d/d-  d0}|D ]\}}|t|| qt|d1t }td%|D ]}	||	 d2|	tt | d3d4d5 qÈ j D ]}
|
f fd6d7	}|! j |
 d) d8| qd9|d:<  j"jd;d%d<d= t#|d;d> _$t#|}t% j$d? j&d@ _'t( j$ jd d)dA _)t*| j	d%dB j+dC _,t*| j	d)dD j+dC _- j	.d% t%|dE j/d@ _0t1|dFdG}t*| jd% j2dHdI _3t*| jd) j2dJdI _4t(| jd d dK _5t(| jd d dK _6t%|dL j7d@ _8t1|d!dM _9|j:t;dNdNt<t=dO |j:t>dNdNt?dP  j$j:t>dNdNt?dP |j:t>dNd)dQ |j:t>dNdNt<t=dO  j'j:t>t<t?dRdSdT  j)j:t>t<t?dRdUdT  j,j:t;t@dV  j-j:tAtBdV  j0j:tCt?dNdNdW |j:t>tBdNdNdX  j3j:t>tBdNdY  j4j:t>tBdNd!dX  j5j:t>t?dNdNdW  j6j:t>t?tBdNdNdZ  j8j:t>t?dNdNdW  j9j:t>t?dNd[ d S )\NzNormal Code or Text)normalZ00zCode Context)contextZ01zPython Keywords)keywordZ02zPython Definitions)
definitionZ03zPython Builtins)builtinZ04zPython Comments)commentZ05zPython Strings)stringZ06zSelected Text)hiliteZ07z
Found Text)hitZ08Cursor)cursorZ09zEditor Breakpoint)breakr   zShell Prompt)consoler   z
Error Text)errorr   zShell User Output)stdoutr   zShell User Exception)stderrr   zLine Number)
linenumberr   rt   z Custom Highlighting r   z Highlighting Theme r   )r   ry   )Zcourier   r>   Zhand2r   )r   r   rG   rF   rv   highlightthicknessr   z<Double-Button-1>c                 S      dS Nr   rV   erV   rV   rW   <lambda>u      z0HighPage.create_page_highlight.<locals>.<lambda>z<B1-Motion>c                 S   r   r  rV   r  rV   rV   rW   r  v  r  )")z# Click selects item.r   
r   )zcode context sectionr   r  )z| cursorr   r  )defr   ) r   )funcr   )z(param):
  r   )z"Return None."r   )z

  var0 = r   )z'string'r   )z

  var1 = r   )z
'selected'r   )z

  var2 = r   )z'found'r   )z

  var3 = r   )listr   )(r   )Noner   )z)
r   )z  breakpoint("line")r   )z

r   z>>>r   )z	 3.14**2
r   )z9.8596r   r  r  )z pri r   )nr   )zt(
r   )SyntaxErrorr   r  r   z.0dr	  r   c                    s    j | d S r~   )highlight_targetr   )r   elemr   rV   rW   tem     z+HighPage.create_page_highlight.<locals>.temz<ButtonPress-1>disabledstateframe_color_set.TFrameZsolid)ry   r   )r   zChoose Color for :r\   ru   )r   Z
Foreground)r   r   r\   ru   Z
BackgroundzSave as New Custom Themez	Select : r[   za Built-in Themer   r   ru   r\   za Custom Themer   zDelete Custom Themery   rw   r`   rx   r   ra   rb   r   r`   rx   r         )r`   ra   rb   rx   r   rs   r   r`   rb   rx   r   r`   r   rx   r   r   )r`   rb   r   rx   r   )r`   rb   r   )Dtheme_elementsrQ   ro   r   var_changed_builtin_namebuiltin_namevar_changed_custom_namecustom_namer   fg_bg_togglevar_changed_colorcolorvar_changed_theme_sourcetheme_sourcevar_changed_highlight_targetr  r!   r   r<   r   r\   r   	configurer	   r   r   r   r   lenr   
splitlinesrangestrZtag_bindr   r    frame_color_setr"   	get_colorZbutton_set_colorr2   
targetlistr(   set_color_sample_bindingfg_onbg_onr   save_as_new_themeZbutton_save_customr%   set_theme_typeZbuiltin_theme_oncustom_theme_onbuiltinlist
customlistdelete_custombutton_delete_customtheme_messagerp   r   r   r   r
   r   r   r   r   r   )rS   frame_customZframe_themeZsample_framer\   Zstring_tagsr   tagZn_lineslinenoelementr  Zframe_fg_bg_toggleZtheme_type_titlerV   r   rW   r     s$  t	












zHighPage.create_page_highlightc              	      s0  	  j tjdddddd t } j  rLtdd}|   j	|| tdd}|  |sB j
d	  jd
 n. j	||d  n$tdd}|   j	|| tdd}|   j	||d     t j }|j fddd  j	||d        d S )Nr   Themedefaultboolr   r   rE  	highlightuserr  - no custom themes -r   c                    s    j |  d S )Nr   )r"  )rT   r   rV   rW   r    s    z)HighPage.load_theme_cfg.<locals>.<lambda>)key)r+  r   r/   	GetOptionZCurrentThemer   GetSectionListsortr;  r   r:  r  r&  r<  r9  r  r"  r   r4  paint_theme_sampleset_highlight_target)rS   current_option	item_listZtheme_namesrV   r   rW   r     s6   


zHighPage.load_theme_cfgc                 G   s   	 d}| j  }||vr-tddd|vrtddd|d  tddd| d| jd< ntddd| tdddd	 d	| jd< |   d S )
N)zIDLE ClassiczIDLE Newr   rD  r   r   name2zNew theme, see Helpr\   r>   )r$  r   r/   rM  r   r   r?  rP  )rS   r   Z
old_themesr   rV   rV   rW   r#    s   

z!HighPage.var_changed_builtin_namec                 G   s4   	 | j  }|dkrtddd| |   d S d S )NrK  r   rD  r   )r&  r   r   r   rP  r   rV   rV   rW   r%    s   
z HighPage.var_changed_custom_namec                 G   8   	 | j  }tddd| |r|   d S |   d S )Nr   rD  rE  )r+  r   r   r   r#  r%  r   rV   rV   rW   r*  $  s   
z!HighPage.var_changed_theme_sourcec                 G      	 |    d S r~   )on_new_color_setrS   r   rV   rV   rW   r(  1     zHighPage.var_changed_colorc                 G   rV  r~   )rQ  rX  rV   rV   rW   r,  5  rY  z%HighPage.var_changed_highlight_targetc                 C   `   	 | j  rd| jd< d| jd< | jd d S d| jd< | jd d| jd< | jd d S Nr   r  r  rJ  z	!disabled)r+  r   r;  r<  r>  r  r:  r   rV   rV   rW   r9  9  s   




zHighPage.set_theme_typec                 C   s   	 | j  }| j| jd d}tj| d| |d\}}|rG||krI| j r?d}| |}|s2d S | 	| | j
| d S | j
| d S d S d S )Nr   
backgroundzPick new color for : )rI   rK   Zinitialcolorz_Your changes will be saved as a new Custom Theme. Enter a name for your new Custom Theme below.)r  r   r   lookupr2  r-   Zaskcolorr+  get_new_theme_name
create_newr)  r   )rS   targetZ
prev_colorZ	rgbTupletZcolor_stringmessage	new_themerV   rV   rW   r3  U  s&   




zHighPage.get_colorc                 C   s   	 | j  }| jjd|d | j rdnd}| j| j  d }| jj|fi ||i | j	 }|d | }t
d||| d S )Nr  r]  
foregroundr]  r   -rH  )r)  r   r   r-  r'  r"  r  r   
tag_configr&  r   r   )rS   Z	new_colorplaneZsample_elementthemeZtheme_elementrV   rV   rW   rW  {  s   

zHighPage.on_new_color_setc                 C   .   	 t ddt dd }t| d||j}|S )NrI  rH  rE  zNew Custom Themer/   rN  r4   result)rS   rb  
used_namesrc  rV   rV   rW   r_       

zHighPage.get_new_theme_namec                 C   "   	 |  d}|r| | d S d S )NzNew Theme Name:)r_  r`  )rS   new_theme_namerV   rV   rW   r8    s
   
zHighPage.save_as_new_themec                 C   s   	 | j  rd}| j }nd}| j }t||}|td v r2td | }|D ]}|| ||< q)| || tdd}|	  | j
|| | j d |   d S )NrE  rI  rH  r   )r+  r   r$  r&  r/   ZGetThemeDictr   save_newrN  rO  r<  r   r   r9  )rS   rp  Z
theme_type
theme_namerc  Ztheme_changesrC  Zcustom_theme_listrV   rV   rW   r`    s"   

zHighPage.create_newc                 C   sf   	 | j  dkr| jd | jd | jd n| jd | jd | jd |   d S )Nr   rJ  r   r\  )r  r   r6  r  r7  r'  r   set_color_sampler   rV   rV   rW   rQ    s   zHighPage.set_highlight_targetc                 G   rV  r~   )rs  )rS   argsrV   rV   rW   r5    s   z!HighPage.set_color_sample_bindingc                 C   sJ   	 | j | j  d }| j rdnd}| j||}| jjd|d d S )Nr   re  r]  r  rd  )r"  r  r   r'  r   Ztag_cgetr   r-  )rS   rA  rh  r)  rV   rV   rW   rs    s
   zHighPage.set_color_samplec                 C   s   	 | j  r| j }n| j }| jD ]O}| j| d }t||}|dkr1t|dd |d< |td v rYtd | }|d |v rK||d  |d< |d |v rY||d  |d< | jj	|fi | q| 
  d S )	Nr   r   r   r]  rH  z-foregroundre  z-background)r+  r   r$  r&  r"  r/   ZGetHighlightr   r   rg  rs  )rS   ri  Zelement_titlerC  ZcolorsZ
theme_dictrV   rV   rW   rP    s*   


zHighPage.paint_theme_samplec                 C   s<   	 t jd | |D ]}|| }t jd ||| qd S )NrH  r/   userCfgZ
AddSection	SetOption)rS   rr  ri  rC  r   rV   rV   rW   rq    s   zHighPage.save_newc                 O      t j|i |S r~   r.   askyesnorS   rt  kwargsrV   rV   rW   rz  *  r  zHighPage.askyesnoc                 C   s   	 | j  }d}| jd|| | dsd S | j  td| tdd}|	  |s9| j
d | j|d n	| j||d  | jtjd	 d
d | jtjd	 d
d t  | j  | j  |   d S )Nz.Are you sure you wish to delete the theme %r ?zDelete ThemerI   rH  rI  rJ  rK  r   r   rD  rE  r   )r&  r   rz  r   r   r   delete_sectionr/   rN  rO  r:  r  r<  r   r+  r   
defaultCfgGetr$  r   rh   r   r   r9  )rS   rr  delmsgrS  rV   rV   rW   r=  .  s*   




zHighPage.delete_custom)r   r   r   rH   r   r   r#  r%  r*  r(  r,  r9  r3  rW  r_  r8  r`  rQ  r5  rs  rP  rq  rz  r=  r   rV   rV   r   rW   ri     s.     4&((ri   c                       s   e Zd Z fddZdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zedd Zdd  Zd!d" Z  ZS )#rl   c                    s0   t  | || _| | _|   |   d S r~   )r   rH   rh   r   r   create_page_keysload_key_cfgr   r   rV   rW   rH   `  s
   
zKeysPage.__init__c                    s$  	 t t| | j| _t t| | j| _t t| | j| _	t t| | j
| _t| dtdd}t| dtdd t|}t|dd}t|}t|td}t|ttd| _| jd	| j | jj|d
< | jj|d
< |j| jd< |j| jd< t|d| jdd| _ fddtdD }t|d | j	d| jdd| _ t|d | j	d| jdd| _!t"|d | jd d d| _#t"|d | jd d d| _$t|d d| j%d| _&t|d d| j'd| _(t|d dd| _)|j*t+ddt,t-d  j*t+ddt-d | jj*t+t.ddd |j*t/ddt,t-d |j0ddd  |j1ddd  |j2dddt3d! | jj2ddt4d" |j2ddt5d" |j2ddt6d" | j j2ddt3t5 d" | j!j2ddt3t5 d" | j#j2ddt4d" | j$j2ddt4d" | j)j2ddt4ddd# | j&j*t/t.d$dd% | j(j*t/t.d$dd% |d j*t7t-d$d& |d j*t7t.d$dd' d S )(Nrt   z Custom Key Bindings r   z	 Key Set zAction - Key(s)r[   Zorient)rv   r   r   ru   r   ZxscrollcommandzGet New Keys for Selectionr  )r\   ru   r  c                    s   g | ]	}t  d ddqS )rt   r   )rY   ry   )r    )r   iZframe_key_setsrV   rW   r     s    z-KeysPage.create_page_keys.<locals>.<listcomp>r   r   zUse a Built-in Key Setr  zUse a Custom Key Setr   zDelete Custom Key Setr  zSave as New Custom Key Setr  rw   r  r   r   r   )r   r   Z
columnspanrZ   r   r   rZ   )r   r   rZ   rx   r   T)r`   rb   ra   rx   r`   rb   ra   )r`   rb   ra   r   )8rQ   ro   r   r#  r$  r%  r&  r   var_changed_keyset_sourcekeyset_sourcevar_changed_keybinding
keybindingr!   r   r    r%   r)   r   r   r	   bindingslistr   on_bindingslist_selectr   Zxviewr   r"   get_new_keysbutton_new_keysr0  r(   set_keys_typeZbuiltin_keyset_oncustom_keyset_onr2   r;  r<  delete_custom_keysbutton_delete_custom_keyssave_as_new_key_setZbutton_save_custom_keyskeys_messagerp   r   r   r   r   r   r   r   re   r   r   r   r   r
   )rS   r@  Zframe_targetZtarget_titleZscroll_target_yZscroll_target_xZframesrV   r  rW   r  g  s   Q




zKeysPage.create_page_keysc              	   C   s   	 | j tjdddddd t }| j  rLtdd}|  | j	|| tdd}|  |sB| j
d	 | jd
 n.| j	||d  n$tdd}|  | j	|| tdd}|  | j	|t  |   t }| | d S )Nr   KeysrE  rF  r   rG  r   rI  rJ  - no custom keys -r   )r  r   r/   rM  ZCurrentKeysr   rN  rO  r;  r   r  r  r&  r<  default_keysr  load_keys_list)rS   rR  rS  keyset_namerV   rV   rW   r    s0   


zKeysPage.load_key_cfgc                 G   s   	 d}| j  }||vr-tddd|vrtddd|d  tddd| d| jd< ntddd| tdddd	 d	| jd< | | d S )
N)zIDLE Classic WindowszIDLE Classic UnixzIDLE Classic MaczIDLE Classic OSXr   r  r   r   rT  zNew key set, see Helpr\   r>   )r$  r   r/   rM  r   r   r  r  )rS   r   Zold_keysr   rV   rV   rW   r#  &  s   

z!KeysPage.var_changed_builtin_namec                 G   s6   	 | j  }|dkrtddd| | | d S d S )Nr  r   r  r   )r&  r   r   r   r  r   rV   rV   rW   r%  :  s   
z KeysPage.var_changed_custom_namec                 G   rU  )Nr   r  rE  )r  r   r   r   r#  r%  r   rV   rV   rW   r  A  s   
z"KeysPage.var_changed_keyset_sourcec                 G   sn   	 | j  }| j }| jt d }t|r$t	d||| d S t
|}|d }t	d||| d S )Nr   r   Z_cfgBindings
extensions)r  r   r&  r  r   splitr/   ZIsCoreBindingr   r   ZGetExtnNameForEvent)rS   r   r   Zkey_setr   ext_nameZext_keybind_sectionrV   rV   rW   r  J  s   



zKeysPage.var_changed_keybindingc                 C   rZ  r[  )r  r   r;  r<  r  r  r  r   rV   rV   rW   r  V  s   




zKeysPage.set_keys_typec                 C   sH  	 | j t}| j |}| d }| j r| j }n| j }t	 }|t
d v r@t
d | }|D ]
}||  ||< q5t| }t| d||j}	|	r| j rqd}
| |
}|sl| j | | j | d S | | | j | | j ||d |	  | j | | j | | j|	 d S | j | | j | d S )Nr   r   zGet New KeyszcYour changes will be saved as a new Custom Key Set. Enter a name for your new Custom Key Set below. - )r  r   r   r   r  r  r$  r&  r/   ZGetCurrentKeySetr   r  valuesr1   rl  get_new_keys_namer   r   create_new_key_setdeleter   r  r   )rS   
list_indexbinding	bind_nameZcurrent_key_set_nameZcurrent_bindingskey_set_changesr   Zcurrent_key_sequencesnew_keysrb  
new_keysetrV   rV   rW   r  b  sD   




zKeysPage.get_new_keysc                 C   rj  )NrI  r   rE  zNew Custom Key Setrk  )rS   rb  rm  r  rV   rV   rW   r    rn  zKeysPage.get_new_keys_namec                 C   ro  )NzNew Key Set Name:)r  r  )rS   Znew_keys_namerV   rV   rW   r    s
   
zKeysPage.save_as_new_key_setc                 C   s   	 | j d d S )Nr\  )r  r  rS   r   rV   rV   rW   r    s   zKeysPage.on_bindingslist_selectc           
      C   s   	 | j  r| j }n| j }t|}i }|D ]}|dd }d|| }|||< q|td v rEtd | }|D ]}|| ||< q<| || t	dd}	|	
  | j|	| | j d |   d S )Nrt   r	  r   rI  r   )r  r   r$  r&  r/   ZGetCoreKeysjoinr   save_new_key_setrN  rO  r<  r   r   r  )
rS   Znew_key_set_nameZprev_key_set_nameZ	prev_keysr  r   Z
event_namer  r  Zcustom_key_listrV   rV   rW   r    s(   



zKeysPage.create_new_key_setc                 C   s   	 d}| j  rd}| j t}t|}t| }|  | j 	dt
 |D ]0}d|| }|dd }|td v rM|td | v rMtd | | }| j t
|d |  q(|ro| j | | j | | j | d S d S )	NFTr   r	  rt   r  r   r  )r  curselectionr   r   r/   Z	GetKeySetr  r   rO  r  r   r  r   r   r   r   r   )rS   r  Zreselectr  keysetZ
bind_namesr  rL  rV   rV   rW   r    s*   

zKeysPage.load_keys_listc                 C   s<   	 t jd |  |D ]}|| }t jd | || qd S )Nr   ru  )r  r  r   r   rV   rV   rW   r    s   	zKeysPage.save_new_key_setc                 O   rx  r~   ry  r{  rV   rV   rW   rz    r  zKeysPage.askyesnoc                 C   s   	 | j  }d}| jd|| | dsd S | j  td| tdd}|	  |s9| j
d | j|d n	| j||d  | jtjd	 d
d | jtjd	 d
dp^t  t  | j  | j  |   d S )Nz0Are you sure you wish to delete the key set %r ?zDelete Key Setr}  r   rI  rJ  r  r   r   r  rE  r   )r&  r   rz  r   r   r   r~  r/   rN  rO  r  r  r<  r   r  r   r  r  r$  r  r   rh   r   r   r  )rS   r  r  rS  rV   rV   rW   r    s2   




zKeysPage.delete_custom_keys)r   r   r   rH   r  r  r#  r%  r  r  r  r  r  r  r  r  r  staticmethodr  rz  r  r   rV   rV   r   rW   rl   ^  s(     !	,
rl   c                       4   e Zd Z fddZdd Zdd Zdd Z  ZS )	rm   c                    (   t  | |   |   |   d S r~   )r   rH   init_validatorscreate_page_windowsload_windows_cfgrS   r   r   rV   rW   rH        zWinPage.__init__c                    *   t d  fdd}| |df| _d S )N[0-9]*c                       	   | d uS r~   	fullmatchr   Zdigits_or_empty_rerV   rW   is_digits_or_empty     z3WinPage.init_validators.<locals>.is_digits_or_empty%Precompileregisterdigits_onlyrS   r  rV   r  rW   r       
zWinPage.init_validatorsc                 C   s  	 t t| d| _t t| d| _t t| d| _t t| d| _t t| d| _	t t| d| _
t t| d| _t t| d| _t t| d	| _t t| d
| _t| dtdd}t|dd}t|dd}t|| jddd| _t|| jddd| _t|dd}t|dd}t|dd}t|| jd| jdd| _t|dd}t|| jd| jdd| _t|dd}t|dd}	zt|| jddd| jdd| _W n ty   t|| jdttdd dd!| _Y nw t|d"d}
t |d#| j	d$| _!t|dd}t|d%d}t|| j
d&| jdd| _"t|dd}t|d'd}t#|| jd(d)d*d(| _$t|dd}t|d+d}t|| jd&| jdd| _%t |d,| jd$| _&t|dd}t|d-d}t|| jd.| jdd| _'|j(t)d/d/t*t+d0 |j(t)d/dt,d1 |j(t-t.d/d/d2 | jj(t/t.d/d/d2 | jj(t/t.d/d/d2 |j(t)d/dt,d1 |j(t-t.d/d/d2 | jj(t/t0dd/d2 |j(t/t0d/d3 | jj(t/t0dd/d2 |j(t/t0d/d3 |j(t)d/dt,d1 |	j(t-t.d/d4 | jj(t-t.dd4 | j!j(t/t0d5d/d2 |j(t)d/dt,d1 |j(t-t.d/d/d2 | j"j(t)dd/d6 |j(t)d/dt,d1 |j(t-t.d/d/d2 | j$j(t)dd/d6 |j(t)d/dt,d1 |j(t-t.d/d4 | j&j(t/t0d5d/d2 | j%j(t)t.d5d/d2 |j(t)d/dt,d1 |j(t-t.d/d/d2 | j'j(t)dd/d6 d S )7N)r   Generaleditor-on-startup)r   r   rG   )r   r   rF   )r   Indent
num-spaces)r   r   cursor-blink)r  r7   	popupwait)r  r9   r   )r  r9   flash-delay)r  r9   bell)r  r:   	max-widthrt   z Window Preferencesr   r   r  z
At Startupr[   r   zOpen Edit Windowr   r   r\   zOpen Shell Windowz$Initial Window Size  (in characters)ZWidthrs   rL  textvariablerG   validatecommandvalidateZHeightzIndent spaces (4 is standard)
   )r  Zfrom_torG   r  r  readonly   )r  r  r  rG   zCursor BlinkzCursor blink)r\   r   z%Completions Popup Wait (milliseconds)rr   zParen Match StyleZ
expressionopenerZparensz;Time Match Displayed (milliseconds)
(0 is until next input)zBell on MismatchzFormat Paragraph Max Widthr  rw   r  r   r!  r`   r   r   r   r   r  )1rQ   ro   r   startup_editr   	win_width
win_heightindent_spacesr   cursor_blinkautocomplete_waitparen_styleflash_delay
paren_bellformat_widthr!   r   r    r%   r(   Zstartup_editor_onZstartup_shell_onr$   r  Zwin_width_intZwin_height_intr+   Zindent_chooserr   r,   r  r0  r#   Zcursor_blink_boolZauto_wait_intr&   Zparen_style_typeZparen_flash_timeZbell_onZformat_width_intrp   r
   r   r   r   r   r   r   r   )rS   Zframe_windowZ	frame_runZstartup_titleZframe_win_sizeZwin_size_titleZwin_width_titleZwin_height_titleZframe_cursorZindent_titleZcursor_blink_titleZframe_autocompleteZauto_wait_titleZframe_paren1Zparen_style_titleZframe_paren2Zparen_time_titleZframe_formatZformat_width_titlerV   rV   rW   r    s  (zWinPage.create_page_windowsc                 C   s   | j tjddddd | jtjddddd | jtjddd	dd | jtjdd
ddd | jtjddddd | jtjddddd | j	tddd | j
tjddddd | jtddd | jtjddddd d S )Nr   r  r  rF  r   r   rG   intrF   r  r  r  r  r7   r  r9   r   r  r  r:   r  )r  r   r/   rM  r  r  r  r  r  r  r  r  r  r   rV   rV   rW   r    s<   









zWinPage.load_windows_cfg)r   r   r   rH   r  r  r  r   rV   rV   r   rW   rm     s     +rm   c                       r  )	rn   c                    r  r~   )r   rH   r  create_page_shedload_shelled_cfgr  r   rV   rW   rH     r  zShedPage.__init__c                    r  )Nr  c                    r  r~   r  r  r  rV   rW   r    r  z4ShedPage.init_validators.<locals>.is_digits_or_emptyr  r  r  rV   r  rW   r    r  zShedPage.init_validatorsc                 C   sV  	 t t| d| _t t| d| _t t| d| _t t| d| _t	| dt
dd}t	| dt
dd}t|d	d
}t|dd}t|d| j| jdd| _t|d	d
}t|dd}t|| jd	dd| _t|| jddd| _t|d	d
}t|dd}t|| jdd| _t|d	d
}	t|	dd}
t|	| jd| jdd| _|jtddtd t|   |jtddtd |jtdd	td |jttddd | jjtddd |jtdd	td |jttddd | jjttddd | jjttddd |jtdd	td |jttddd | jjtddd |	jtdd	td |
jttddd | jjtddd d S )N)r   PyShellauto-squeeze-min-lines)r   r  autosave)r   r   line-numbers-default)r  r8   maxlinesrt   z Shell Preferencesr   z Editor Preferencesr   r  zAuto-Squeeze Min. Lines:r[   r  rL  )rG   r  r  r  zAt Start of Run (F5)  zPrompt to Saver  r   z	No Promptz Show line numbers in new windows)r   rG   zMax Context Lines :rs   r  rw   r   r!  r  )rQ   ro   r   auto_squeeze_min_linesr   r  r   line_numbers_defaultcontext_linesr!   r   r    r%   r$   r  Zauto_squeeze_min_lines_intr(   Zsave_ask_onZsave_auto_onr#   Zline_numbers_default_boolZcontext_intrp   r
   r   r   r   r   r   )rS   Zframe_shellZframe_editorZframe_auto_squeeze_min_linesZauto_squeeze_min_lines_titleZ
frame_saveZrun_save_titleZframe_line_numbers_defaultZline_numbers_default_titleZframe_contextZcontext_titlerV   rV   rW   r    s   zShedPage.create_page_shedc              	   C   sn   | j tjddddd | jtjddddd	d
 | jtjdddd	d | jtjddddd d S )Nr   r  r  r  r  r  r  r   rF  )rE  r   r   r  r  r8   r  )r  r   r/   rM  r  r  r  r   rV   rV   rW   r  Y  s   




zShedPage.load_shelled_cfg)r   r   r   rH   r  r  r  r   rV   rV   r   rW   rn     s
    hrn   c                       sL   e Zd Z fddZdd Zdd Zdd Zd	d
 Zdd Zdd Z	  Z
S )rg   c                    sD   t  | tjd | _tjd | _| t| _| 	  | 
  d S )Nr  )r   rH   r/   r  ext_defaultCfgrv  ext_userCfgr  is_intload_extensionscreate_page_extensionsr  r   rV   rW   rH   g  s   zExtPage.__init__c                 C   s~  	 t | | _t| dtdd}t| dtdd| _|jddd |jddd t|| jdd	| _	| j	
d
| j t|| j	jd}|j| j	_t|ddd| _| j	jdddd |jdddd | jjdddddgd |jdd i | _d | _| | _| j	| _d}t| jD ]}| | |d | d }q| j| | j	d | d  |jdddd t| jddd | jjdddd d S )Nrt   z Feature Extensions r   z Help Menu Extensions r   r   r   Zbrowse)ZlistvariableZ
selectmodez<<ListboxSelect>>r      )rG   rF   Znwsr   r   rZ   nsr   r  )r   r   rZ   rx   rX   r>   {z} r  )r   r   Zsew)r   Zextension_namesr!   r   	HelpFrameZ
frame_helpr   r   r   extension_listr   extension_selectedr)   r   r   r   details_framere   r-  config_framecurrent_extensionZ
outerframeZtabbed_page_setr   r  create_extension_frameZselection_setr%   )rS   Z	frame_extZscrollZ	ext_namesr  rV   rV   rW   r  o  sF   



zExtPage.create_page_extensionsc           
      C   sD  	 i | _ tjddD ]}g | j |< q
| j D ]}t| j|}dd |D }|D ]}|| q(|| }|D ]h}| jj||dd}zddd| }d}W n tyk   zt	|}d	}W n t
yh   |}d }Y nw Y nw z| jj|||d|d
}W n t
y   |}Y nw t| }	|	t| | j | |||||	d q6qd S )NF)Zactive_onlyc                 S   s   g | ]	}| d r|qS )enable)
startswith)r   opt_namerV   rV   rW   r     s    
z+ExtPage.load_extensions.<locals>.<listcomp>T)raw)TrueFalserF  r  )r   r  rE  )r   r   rE  r   var)r  r/   ZGetExtensionsr   r  ZGetOptionListremover  KeyErrorr  r   r  r   r   r1  append)
rS   r  Zopt_listZenablesr  Zdef_strZdef_objZopt_typer   r	  rV   rV   rW   r    sZ   


zExtPage.load_extensionsc                 C   s   	 | j  }|r| j |}|d u s|| jkr,| jr,| jjdd | j| j   d | _|rE| jj|d | j| jdddd || _d S d S )Nr>   r[   r   r   r  )	r  r  r   r  r  r   r   Zgrid_forgetre   )rS   r   ZnewselrV   rV   rW   r    s   

zExtPage.extension_selectedc                 C   s   	 t | jddd}|| j|< |j}t| j| D ]W\}}t||d d}|j|dtd |d }|d d	krGt	||d
dddj|dt
dd q|d dkrat||d| jdfddj|dtdd qt||ddj|dtdd qd S )Nr  rE   r   r[   r   r  r	  r   rF  r  r  r  )r   r   r   rG   r      )r   r   rZ   rx   r  rL  r  r  )r  r  r  rG   r   )r  rG   )VerticalScrolledFramer  r   interior	enumerater  r%   re   r   r#   r   r$   r  r   )rS   r  fZ
entry_arear   optZlabelr	  rV   rV   rW   r    s0   




zExtPage.create_extension_framec                 C   sZ   	 |d }|d }|d    p|}|d | ||kr%| j||S | j|||S )Nr   rE  r	  )r   r   r   r  ZRemoveOptionrw  )rS   sectionr  r   rE  r   rV   rV   rW   set_extension_value  s   zExtPage.set_extension_valuec                 C   sL   	 d}| j D ]}| j | }|D ]
}| ||rd}qq|r$| j  d S d S )NFT)r  r  r  ZSave)rS   Zhas_changesr  optionsr  rV   rV   rW   r     s   

z#ExtPage.save_all_changed_extensions)r   r   r   rH   r  r  r  r  r  r   r   rV   rV   r   rW   rg   f  s    ?.rg   c                       s\   e Zd Z fddZdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Z  ZS )r  c                    s(   t  j|fi | |   |   d S r~   )r   rH   create_frame_helpload_helplist)rS   r   Zcfgr   rV   rW   rH   +  s   zHelpFrame.__init__c                 C   s  	 t | }t|ddtd| _t|}| jj|d< |j| jd< | jd| j t | }t	|ddd	| j
d
| _t	|dd	| jd| _t	|ddd	| jd
| _|jtddttd | jjttttd |jtttd |jtddtd | jjttdd | jjttd | jjttdd d S )Nrw   Tr   ru   r   r   ZEditr  r  )r\   r  rG   ru   ZAdd)r\   rG   ru   ZRemover  )r`   r   ra   rb   )r`   r   rb   r   r  r   )r    r   r	   helplistr)   r   r   r   help_source_selectedr"   helplist_item_editbutton_helplist_edithelplist_item_addZbutton_helplist_addhelplist_item_removebutton_helplist_removerp   r   r   r   r   r   r   r   r
   )rS   Zframe_helplistZscroll_helplistZframe_buttonsrV   rV   rW   r  0  s<   zHelpFrame.create_frame_helpc                 C   rV  r~   )set_add_delete_stater  rV   rV   rW   r  b  rY  zHelpFrame.help_source_selectedc                 C   sn   	 | j  dk r| jd | jd d S | j  r)| jd | jd d S | jd | jd d S )Nr   rJ  r\  )r  sizer  r  r  r  r   rV   rV   rW   r  f  s   
zHelpFrame.set_add_delete_statec                 C   s@   	 t | dj}|r| j| | jt|d  |   d S d S )NzNew Help Sourcer   )r5   rl  user_helplistr  r  r   r   update_help_changes)rS   help_sourcerV   rV   rW   r  s  s   zHelpFrame.helplist_item_addc                 C   s   	 | j t}| j| }t| d|d |d dj}|r=||kr?|| j|< | j | | j ||d  |   | 	  d S d S d S )NzEdit Help Sourcer   r   )Zmenuitemfilepath)
r  r   r   r!  r5   rl  r  r   r"  r  )rS   
item_indexr#  Znew_help_sourcerV   rV   rW   r    s"   

zHelpFrame.helplist_item_editc                 C   s6   	 | j t}| j|= | j | |   |   d S r~   )r  r   r   r!  r  r"  r  )rS   r%  rV   rV   rW   r    s   zHelpFrame.helplist_item_removec                 C   sX   	 i t d d< tdt| jd D ]}t ddt|d| j|d  d d  qd S )Nr   Z	HelpFilesr   ;rt   )r   r0  r.  r!  r   r1  r  )rS   numrV   rV   rW   r"    s   
zHelpFrame.update_help_changesc                 C   sB   t  | _| jdd | jD ]}| jt|d  q|   d S )Nr   r   )r/   ZGetAllExtraHelpSourcesListr!  r  r  r   r   r  )rS   Z	help_itemrV   rV   rW   r    s
   

zHelpFrame.load_helplist)r   r   r   rH   r  r  r  r  r  r  r"  r  r   rV   rV   r   rW   r  )  s    2r  c                   @   sB   e Zd Z	 dd Zdd Zdd Zedd Zd	d
 Zdd Z	dS )VarTracec                 C   s   	 g | _ g | _d S r~   )untracedtracedr   rV   rV   rW   rH     s   
zVarTrace.__init__c                 C   s   	 | j   | j  d S r~   )r)  r   r*  r   rV   rV   rW   r     s   
zVarTrace.clearc                 C   s,   	 t |tr| ||}| j||f |S r~   )
isinstancetuplemake_callbackr)  r  rS   r	  callbackrV   rV   rW   ro     s
   
zVarTrace.addc                    s   	  fdd}|S )Nc                     s   	 t jg   R   d S r~   )r   r   r   )r   r   r	  rV   rW   default_callback  s   z0VarTrace.make_callback.<locals>.default_callbackrV   )r	  r   r1  rV   r0  rW   r-    s   zVarTrace.make_callbackc                 C   s@   	 | j r| j  \}}|d| | j||f | j sd S d S )Nwrite)r)  popZ	trace_addr*  r  r.  rV   rV   rW   rR     s   zVarTrace.attachc                 C   sL   	 | j r$| j  \}}|d| d d  | j||f | j sd S d S )Nr2  r   r   )r*  r3  Ztrace_removeZ
trace_infor)  r  r.  rV   rV   rW   detach  s   zVarTrace.detachN)
r   r   r   rH   r   ro   r  r-  rR   r4  rV   rV   rV   rW   r(    s    
r(  a7  When 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.
)z
Fonts/Tabsr]   r  r  r^   c                 C   s.   	 | sdS zt |  W dS  ty   Y dS w )NTF)r  r   r  rV   rV   rW   r  3	  s   r  c                   @   s   e Zd Z	 dd ZdS )r  c                    s   t j| |g|R i | t| td}|jtttd t| dd|j	dd  jt
ttd |j jd  d  d t   | _ jddtd fd	d
}d|  fdd} d| d S )Nr  )rb   r`   ra   r      )ry   r   r   rG   r  r   )Zwindowr   c                    s$      f} jd| d d S )Nz	0 0 %s %s)Zscrollregion)winfo_reqwidthZwinfo_reqheightr   )r   r   )canvasr  rV   rW   _configure_interiorZ	  s   z;VerticalScrolledFrame.__init__.<locals>._configure_interiorz<Configure>c                    s*       kr j  d d S d S )N)rG   )r6  Zwinfo_widthZitemconfigure)r   r7  r  Zinterior_idrV   rW   _configure_canvas`	  s   z9VerticalScrolledFrame.__init__.<locals>._configure_canvas)r    rH   r)   r   rp   r   r   r	   r   r   r   r   r   r   r   Zxview_movetoZyview_movetor  Zcreate_windowr   r   )rS   rI   rt  kwZ
vscrollbarr8  r:  rV   r9  rW   rH   E	  s"   

zVerticalScrolledFrame.__init__N)r   r   r   rH   rV   rV   rV   rW   r  >	  s    r  __main__)r   z#idlelib.idle_test.test_configdialogrt   F)	verbosityexit)run)br  tkinterr   r   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Ztkinter.ttkr    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   Ztkinter.fontr   r   r.   Zidlelib.configr/   r0   Zidlelib.config_keyr1   Zidlelib.dynoptionr2   Zidlelibr3   Zidlelib.queryr4   r5   Zidlelib.textviewr6   Zidlelib.autocompleter7   Zidlelib.codecontextr8   Zidlelib.parenmatchr9   Zidlelib.formatr:   Zidlelib.squeezerr;   r<   r   r   r=   r   rk   ri   rl   rm   rn   rg   r  r(  rQ   r   r   r  r  r   Zunittestr   Zidlelib.idle_test.htestr?  rV   rV   rV   rW   <module>   s    < W +        4 S  D =>
+