B
    2*™\Å“ ã               @   sJ  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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+ 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 e5ƒ ZKeBeDeFeHeJfZLG dd„ deƒZMdaNG dd„ de!ƒZOG dd„ de!ƒZPG dd„ de!ƒZQG dd„ de!ƒZRG dd„ dƒZSeSƒ ZTdZUddd d!d"œZVd#d$„ ZWG d%d&„ d&e!ƒZXeYd'krFd d(lZm[Z[ e[d)d*d+d, d d-l\m]Z] e]eMƒ dS ).é    )ÚToplevelÚListboxÚTextÚScaleÚ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)ÚFrameÚ
LabelFrameÚButtonÚCheckbuttonÚEntryÚLabelÚ
OptionMenuÚNotebookÚRadiobuttonÚ	ScrollbarÚStyleN)Ú
messagebox)ÚidleConfÚConfigChanges)ÚGetKeysDialog)ÚDynOptionMenu)Úmacosx)ÚSectionNameÚ
HelpSource)Ú	view_text)ÚAutoComplete)ÚCodeContext)Ú
ParenMatch)ÚFormatParagraph)ÚSqueezerc                   sž   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dd„ Zdd„ Zdd„ Zdd„ Zd d!„ Zd"d#„ Z‡  ZS )%ÚConfigDialogÚ F)Ú_htestÚ_utestc            C   sÚ   t  | |¡ || _|ri |_|s(|  ¡  | jdd |  |p>d¡ | ¡ d }| ¡ |s\dnd }|  	d|› d|› ¡ |  
¡  | jttd |  |¡ |  d	| j¡ | jj ¡  t ¡  |sÖ|  ¡  |  ¡  |  ¡  d S )
Né   )ÚborderwidthzIDLE Preferencesé   é   é–   ú+)ÚheightÚwidthZWM_DELETE_WINDOW)r   Ú__init__ÚparentÚinstance_dictZwithdrawÚ	configureÚtitleZwinfo_rootxZwinfo_rootyZgeometryÚcreate_widgetsZ	resizabler   Z	transientZprotocolÚcancelÚfontpageÚfontlistZ	focus_setÚtracersÚattachZgrab_setZwm_deiconifyZwait_window)ÚselfrG   rJ   r<   r=   ÚxÚy© rT   ú?C:\ALexclude\prg\programme\Python37\Lib\idlelib\configdialog.pyrF   -   s*    
zConfigDialog.__init__c             C   sÀ   t | ƒ | _}t|ƒ| _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tttd |  ¡ jtd d S )	Nz
Fonts/Tabs)ÚtextÚ
Highlightsz Keys z	 General Z
Extensions)ÚsideÚexpandÚfill)rX   )r(   ÚnoteÚHighPageÚhighpageÚFontPagerM   ÚKeysPageZkeyspageÚGenPageZgenpageÚcreate_page_extensionsZextpageÚaddZenable_traversalÚpackr   r
   r   Úcreate_action_buttonsr   )rQ   r[   rT   rT   rU   rK   ]   s    



zConfigDialog.create_widgetsc             C   s¨   t  ¡ ri }nddi}t| dd}t|dd}xRd| jfd| jfd| jfd| jffD ]*\}}t|f||td	œ|—Žj	t
d
d qTW t|dddj	td |j	td |S )NÚpadding)é   é   é   )re   ZOkZApplyZCancelZHelp)rV   ÚcommandÚ	takefocusr>   )rX   Úpadxr   )rD   r?   )rX   )r1   ZisAquaTkr!   ÚokÚapplyrL   Úhelpr#   r   rc   r   r   r   )rQ   Zpadding_argsZouterZbuttonsZtxtÚcmdrT   rT   rU   rd   |   s    z"ConfigDialog.create_action_buttonsc             C   s   |   ¡  |  ¡  d S )N)rm   Údestroy)rQ   rT   rT   rU   rl   ¢   s    zConfigDialog.okc             C   s$   |   ¡  t ¡  |  ¡  |  ¡  d S )N)Údeactivate_current_configÚchangesÚsave_allÚsave_all_changed_extensionsÚactivate_config_changes)rQ   rT   rT   rU   rm   ¬   s    zConfigDialog.applyc             C   s   |   ¡  d S )N)rp   )rQ   rT   rT   rU   rL   ¹   s    zConfigDialog.cancelc                s&   | j j dd¡a|  ¡  tƒ  ¡  d S )Nz1.0Úend)rM   Úfont_sampleÚgetÚfont_sample_textZgrab_releaseÚsuperrp   )rQ   )Ú	__class__rT   rU   rp   Á   s    zConfigDialog.destroyc             C   s8   | j j| j  ¡ dd ¡ }t| dtt |d¡ d d S )NrV   )ÚoptionzHelp for IDLE preferencesr;   )rJ   rV   )r[   ZtabZselectÚstripr4   Úhelp_commonÚ
help_pagesrx   )rQ   ZpagerT   rT   rU   rn   Ç   s    	zConfigDialog.helpc             C   s&   | j j ¡ }x|D ]}| ¡  qW d S )N)rG   rH   ÚkeysZRemoveKeybindings)rQ   Úwin_instancesÚinstancerT   rT   rU   rq   Ô   s    
z&ConfigDialog.deactivate_current_configc             C   s\   | j j ¡ }x4|D ],}| ¡  | ¡  | ¡  | ¡  | ¡  qW xtD ]}| 	¡  qHW d S )N)
rG   rH   r€   ZResetColorizerZ	ResetFontZset_notabs_indentwidthZApplyKeybindingsZreset_help_menu_entriesÚreloadablesÚreload)rQ   r   r‚   ÚklassrT   rT   rU   ru   ß   s    

z$ConfigDialog.activate_config_changesc             C   sh  | j }t| jƒ}tjd | _tjd | _|  t	¡| _	|  
¡  t| ƒ| _|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}x.t| j ƒD ] }|  !|¡ |d | d }qW | j |¡ | j "d¡ |  d ¡ |S )NÚ
extensionsr   é   )Úweightrh   Zbrowse)ZlistvariableZ
selectmodez<<ListboxSelect>>)ri   éú   )rE   rD   Znws)ÚcolumnÚrowÚstickyÚnsÚnsewé
   )rŠ   r‹   rŒ   rk   )re   r;   ú{z} )#rG   r!   r[   r-   Ú
defaultCfgÚext_defaultCfgÚuserCfgÚext_userCfgÚregisterÚis_intÚload_extensionsr   Zextension_namesÚrowconfigureÚcolumnconfigurer   Úextension_listÚbindÚextension_selectedr*   ÚyviewÚsetÚyscrollcommandr"   Údetails_frameÚgridrI   Úconfig_frameÚcurrent_extensionZ
outerframeZtabbed_page_setÚsortedr†   Úcreate_extension_frameZselection_set)rQ   rG   ÚframeZscrollZ	ext_namesÚext_namerT   rT   rU   ra   ï   s>    





z#ConfigDialog.create_page_extensionsc       
      C   s^  i | _ xtjddD ]}g | j |< qW x0| j D ]$}t| j |¡ƒ}dd„ |D ƒ}x|D ]}| |¡ qZW || }xà|D ]Ø}| jj||dd}ydddœ| }d}W nB tk
rè   yt	|ƒ}d	}W n t
k
râ   |}d }Y nX Y nX y| jj|||d|d
}W n t
k
r   |}Y nX t| ƒ}	|	 t|ƒ¡ | j |  |||||	dœ¡ qzW q0W d S )NF)Zactive_onlyc             S   s   g | ]}|  d ¡r|‘qS )Zenable)Ú
startswith)Ú.0Úopt_namerT   rT   rU   ú
<listcomp>8  s    z0ConfigDialog.load_extensions.<locals>.<listcomp>T)Úraw)ÚTrueÚFalseÚboolÚint)Útyper¬   Údefault)Únamer±   r²   ÚvalueÚvar)r†   r-   ZGetExtensionsr¤   r’   ZGetOptionListÚremoveÚGetÚKeyErrorr°   Ú
ValueErrorr”   r   rž   ÚstrÚappend)
rQ   r§   Zopt_listZenablesrª   Zdef_strZdef_objZopt_typer´   rµ   rT   rT   rU   r—   -  sF    


zConfigDialog.load_extensionsc             C   sˆ   | j  ¡ }|r| j  |¡}|d ks,|| jkrV| jrV| jjdd | j| j  ¡  d | _|r„| jj|d | j| jdddd || _d S )Nr;   )rV   r   rŽ   )rŠ   r‹   rŒ   )	rš   Úcurselectionrx   r£   r    Úconfigr¢   Zgrid_forgetr¡   )rQ   ÚeventZnewselrT   rT   rU   rœ   [  s    
zConfigDialog.extension_selectedc             C   sæ   t | jddd}|| j|< |j}xÀt| j| ƒD ]®\}}t||d d}|j|dtd |d }|d d	krŽt	||d
dddj|dt
dd q0|d dkrÂt||d| jdfddj|dtdd q0t||ddj|dtdd q0W d S )Nr‰   )rD   rE   r³   )rV   r   )r‹   rŠ   rŒ   rµ   r±   r¯   r­   r®   é   )ÚvariableÚonvalueÚoffvaluerE   r‡   é   )r‹   rŠ   rŒ   rk   r°   Úkeyz%Pr   )ÚtextvariableZvalidateZvalidatecommandrE   é   )rÅ   rE   )ÚVerticalScrolledFramer    r¢   ÚinteriorÚ	enumerater†   r&   r¡   r   r$   r   r%   r–   r   )rQ   r§   ÚfZ
entry_arear‹   ÚoptZlabelrµ   rT   rT   rU   r¥   j  s$    
z#ConfigDialog.create_extension_framec             C   sX   |d }|d }|d   ¡  ¡ p"|}|d  |¡ ||krH| j ||¡S | j |||¡S )Nr³   r²   rµ   )rx   r}   rž   r”   ZRemoveOptionÚ	SetOption)rQ   ÚsectionrË   r³   r²   r´   rT   rT   rU   Úset_extension_value„  s    z ConfigDialog.set_extension_valuec             C   sN   d}x6| j D ],}| j | }x|D ]}|  ||¡r d}q W qW |rJ| j ¡  d S )NFT)r†   rÎ   r”   ZSave)rQ   Zhas_changesr§   ÚoptionsrË   rT   rT   rU   rt   •  s    	

z(ConfigDialog.save_all_changed_extensions)r;   )Ú__name__Ú
__module__Ú__qualname__rF   rK   rd   rl   rm   rL   rp   rn   rq   ru   ra   r—   rœ   r¥   rÎ   rt   Ú__classcell__rT   rT   )r{   rU   r:   )   s    0&
>.r:   u^  <ASCII/Latin1>
AaBbCcDdEeFfGgHhIiJj
1234567890#:+=(){}[]
Â¢Â£Â¥Â§Â©Â«Â®Â¶Â½ÄžÃ€ÃÃ‚ÃƒÃ„Ã…Ã‡ÃÃ˜ÃŸ

<IPA,Greek,Cyrillic>
ÉÉ•É˜ÉžÉŸÉ¤É«É®É°É·É»ÊÊƒÊ†ÊŽÊžÊ¢Ê«Ê­Ê¯
Î‘Î±Î’Î²Î“Î³Î”Î´Î•ÎµÎ–Î¶Î—Î·Î˜Î¸Î™Î¹ÎšÎº
Ð‘Ð±Ð”Ð´Ð–Ð¶ÐŸÐ¿Ð¤Ñ„Ð§Ñ‡ÐªÑŠÐ­ÑÑ Ñ¤Ñ¬Óœ

<Hebrew, Arabic>
××‘×’×“×”×•×–×—×˜×™×š×›×œ××ž×Ÿ× ×¡×¢×£
Ø§Ø¨Ø¬Ø¯Ù‡ÙˆØ²Ø­Ø·ÙŠÙ Ù¡Ù¢Ù£Ù¤Ù¥Ù¦Ù§Ù¨Ù©

<Devanagari, Tamil>
à¥¦à¥§à¥¨à¥©à¥ªà¥«à¥¬à¥­à¥®à¥¯à¤…à¤†à¤‡à¤ˆà¤‰à¤Šà¤à¤à¤“à¤”
à¯¦à¯§à¯¨à¯©à¯ªà¯«à¯¬à¯­à¯®à¯¯à®…à®‡à®‰à®Ž

<East Asian>
ã€‡ä¸€äºŒä¸‰å››äº”å…­ä¸ƒå…«ä¹
æ±‰å­—æ¼¢å­—äººæœ¨ç«åœŸé‡‘æ°´
ê°€ëƒë”ë ¤ëª¨ëµ¤ìˆ˜ìœ ì¦ˆì¹˜
ã‚ã„ã†ãˆãŠã‚¢ã‚¤ã‚¦ã‚¨ã‚ª
c                   sV   e Zd Z‡ fdd„Zdd„ Zdd„ Zdd„ Zd	d
„ Zddd„Zdd„ Z	dd„ Z
‡  ZS )r^   c                s0   t ƒ  |¡ |j| _|  ¡  |  ¡  |  ¡  d S )N)rz   rF   Úhighlight_sampleÚcreate_page_font_tabÚload_font_cfgÚload_tab_cfg)rQ   Úmasterr]   )r{   rT   rU   rF   Ø  s
    zFontPage.__init__c       
      C   s~  t  t| ƒ| j¡| _t  t| ƒ| j¡| _t  t| ƒ| j¡| _t  t| ƒd¡| _	t
| dtdd}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|ddd| _| j tt ¡ t|tdd}	t!|| j	ddddd| _"| j#ddd |j$ddddd |j$dddddd d! |j$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j%t)t+d) |	j%t&t(dd( | j"j%t&dt'd* d S )+N)ÚmainÚIndentz
num-spacesrh   z Shell/Editor Font )r?   ÚreliefrV   z Font Sample (Editable) z Indentation Width zFont Face :)ZjustifyrV   rÆ   T)rD   rj   Úexportselectionz<ButtonRelease-1>z<KeyRelease-Up>z<KeyRelease-Down>)ri   )rŸ   zSize :)rV   r‡   r   ZBold)rÀ   rÁ   rÂ   rV   r@   )rE   rD   zPython Standard: 4 Spaces!Z
horizontalé   )rÀ   ÚorientZtickintervalZfrom_Úto)rˆ   r>   )r‹   rŠ   rk   ÚpadyrŽ   )r‹   rŠ   Zrowspanrk   rà   rŒ   Zew)r‹   rŠ   rk   rà   rŒ   )rX   rk   rà   rZ   )rX   Úanchor)rX   rY   rZ   )rX   rZ   )rX   rá   rk   )rY   rZ   )rX   rk   rZ   ),rO   rb   r   Úvar_changed_fontÚ	font_nameÚ	font_sizer   Ú	font_boldr	   Ú	space_numr"   r   r!   r&   r   r   r   rN   r›   Úon_fontlist_selectr*   r½   r   rž   r0   Úsizelistr$   Zbold_toggler   rw   Úinsertr    ry   r   Zindent_scaler™   r¡   rc   r   r   r   r
   r   r   )
rQ   Z
frame_fontZframe_sampleZframe_indentZframe_font_nameZframe_font_paramZfont_name_titleZscroll_fontZfont_size_titleZindent_titlerT   rT   rU   rÕ   ß  sh    .zFontPage.create_page_font_tabc       	      C   sô   t  | dd¡}|d  ¡ }|d }|d dk}tt | ¡ƒ}| ¡  x|D ]}| j t	|¡ qJW | j
 |¡ dd„ |D ƒ}y>| |¡}| j |¡ | j |¡ | j |¡ | j |¡ W n tk
rÌ   Y nX | j d	|¡ | j |¡ |  ¡  d S )
NrÙ   ÚEditorWindowr   r‡   rh   Zboldc             S   s   g | ]}|  ¡ ‘qS rT   )Úlower)r©   ÚsrT   rT   rU   r«   ^  s    z*FontPage.load_font_cfg.<locals>.<listcomp>)Ú7Ú8Ú9Ú10Ú11Ú12Ú13Ú14Z16Z18Z20Z22Z25Z29Z34Z40)r-   ZGetFontrë   ÚlistÚtkFontZfamiliesÚsortrN   ré   r    rã   rž   ÚindexÚseeÚ
select_setÚselect_anchorZactivater¹   rè   ÚSetMenurå   Úset_samples)	rQ   Zconfigured_fontrã   rä   rå   ZfontsÚfontZlc_fontsZcurrent_font_indexrT   rT   rU   rÖ   L  s,    

zFontPage.load_font_cfgc             G   sZ   | 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ã   rx   rr   Ú
add_optionrä   rå   rý   )rQ   Úparamsr´   rT   rT   rU   râ   o  s    


zFontPage.var_changed_fontc             C   s0   | j  |jjdkrtnt¡}| j | ¡ ¡ d S )NZ
KeyRelease)	rN   rx   r±   r³   r   r   rã   rž   rë   )rQ   r¾   rþ   rT   rT   rU   rç   ~  s    zFontPage.on_fontlist_selectNc             C   sH   | j  ¡ }| j ¡ rtjntj}|| j ¡ |f}|| jd< || jd< d S )Nrþ   )	rã   rx   rå   rö   ZBOLDZNORMALrä   rw   rÔ   )rQ   r¾   rã   Zfont_weightZnew_fontrT   rT   rU   rý   ˆ  s
    

zFontPage.set_samplesc             C   s$   t jdddddd}| j |¡ d S )NrÙ   rÚ   z
num-spacesé   r°   )r²   r±   )r-   Ú	GetOptionræ   rž   )rQ   ræ   rT   rT   rU   r×   •  s    zFontPage.load_tab_cfgc             G   s   | j  ¡ }t ddd|¡ d S )NrÙ   rÚ   z
num-spaces)ræ   rx   rr   rÿ   )rQ   r   r´   rT   rT   rU   Úvar_changed_space_num   s    
zFontPage.var_changed_space_num)N)rÐ   rÑ   rÒ   rF   rÕ   rÖ   râ   rç   rý   r×   r  rÓ   rT   rT   )r{   rU   r^   Ö  s   m#

r^   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 )+r\   c                s2   t ƒ  |¡ |j| _t|ƒ| _|  ¡  |  ¡  d S )N)rz   rF   rØ   Úcdr+   ÚstyleÚcreate_page_highlightÚload_theme_cfg)rQ   rØ   )r{   rT   rU   rF   ¨  s
    
zHighPage.__init__c       
         sÔ  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dddtdtd
 }ˆ _| ddd„ ¡ | dd d„ ¡ d!}x$|D ]}| t|d |d ¡ q W x8ˆ j D ].}|f‡ fd"d#„	}| ˆ j | d d$|¡ q(W d%|d&< ˆ jjd'dd(d) t|d'd*ˆ _t|ƒ}tˆ jd+ˆ j d,ˆ _!t"ˆ jˆ jd dd-ˆ _#t$|ˆ j	dd.ˆ j%d/ˆ _&t$|ˆ j	dd0ˆ j%d/ˆ _'ˆ j	 (d¡ t|d1ˆ j)d,ˆ _*t+|d2d3}	t$|ˆ jdˆ j,d4d5ˆ _-t$|ˆ jdˆ j,d6d5ˆ _.t"|ˆ jd d d7ˆ _/t"|ˆ jd d d7ˆ _0t|d8ˆ j1d,ˆ _2t+|dd9ˆ _3|j4t5d:d:t6t7d; |j4t8d:d:t9d< ˆ jj4t8d:d:t6t9d; |j4t8d:dd= ˆ jj4t8d:d:t6t7d; ˆ j!j4t8t6t9d>d?d@ ˆ j#j4t8t6t9d>dAd@ ˆ j&j4t5t:dB ˆ j'j4t;t<dB ˆ j*j4t=t9d:d:dC |	j4t8t<d:d:dD ˆ j-j4t8t<d:dE ˆ j.j4t8t<d:ddD ˆ j/j4t8t9d:d:dC ˆ j0j4t8t9t<d:d:dF ˆ j2j4t8t9d:d:dC ˆ j3j4t8t9d:dG d S )HN)ÚnormalZ00)ÚcontextZ01)ÚkeywordZ02)Ú
definitionZ03)ÚbuiltinZ04)ÚcommentZ05)ÚstringZ06)ÚhiliteZ07)ÚhitZ08)ÚcursorZ09)Úbreakrð   )Úconsolerñ   )Úerrorrò   )Ústdoutró   )Ústderrrô   )zNormal TextzCode ContextzPython KeywordszPython DefinitionszPython BuiltinszPython CommentszPython StringszSelected Textz
Found TextÚCursorzEditor BreakpointzShell Normal TextzShell Error TextzShell Stdout TextzShell Stderr Textrh   z Custom Highlighting )r?   rÛ   rV   z Highlighting Theme r‡   )Zcourieré   r;   Zhand2é   é   r   )	rÛ   r?   rþ   r  rE   rD   rj   ÚhighlightthicknessÚwrapz<Double-Button-1>c             S   s   dS )Nr  rT   )ÚerT   rT   rU   Ú<lambda>L  ó    z0HighPage.create_page_highlight.<locals>.<lambda>z<B1-Motion>c             S   s   dS )Nr  rT   )r  rT   rT   rU   r  M  r  )#)Ú
r  )z#you can click herer  )r   r  )z#to choose itemsr  )r   r  )zcode context sectionr	  )z

r  )Údefr
  )ú r  )Úfuncr  )z(param):
  r  )z"""string"""r  )z

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

  var1 = r  )z
'selected'r  )z

  var2 = r  )z'found'r  )z

  var3 = r  )rõ   r  )ú(r  )ÚNoner
  )z)
r  )z  breakpoint("line")r  )z

r  )z error r  )r"  r  )zcursor |r  )z
 r  )Úshellr  )r"  r  )r  r  )r"  r  )r  r  )z

r  c                s   ˆ j  |¡ d S )N)Úhighlight_targetrž   )r¾   Úelem)rQ   rT   rU   Útemd  s    z+HighPage.create_page_highlight.<locals>.temz<ButtonPress-1>ÚdisabledÚstatezframe_color_set.TFrameZsolid)r?   rÛ   )r  zChoose Color for :)rV   ri   )r  Z
Foreground)rÀ   r´   rV   ri   Z
BackgroundzSave as New Custom Themez	Select : )rV   za Built-in Theme)rÀ   r´   ri   rV   za Custom Theme)ri   zDelete Custom Theme)r?   r>   )rX   rk   rà   rY   rZ   )rX   rk   rà   rZ   )rX   rk   rà   r¿   r  )rX   rY   rZ   rk   rà   rg   )rX   rá   )rX   rZ   rk   rà   )rX   rá   rk   rà   )rX   rá   rk   )rX   rZ   rá   rk   rà   )rX   rZ   rà   )>Útheme_elementsrO   rb   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   rÔ   r›   ré   r    Ztag_bindr  rI   r!   Úframe_color_setr#   Ú	get_colorZbutton_set_colorr0   Ú
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_messagerc   r   r
   r   r   r   r   r   r   r   )
rQ   Úframe_customZframe_themerV   Ztext_and_tagsZtexttagÚelementr)  Zframe_fg_bg_toggleZtheme_type_titlerT   )rQ   rU   r  ¯  sÂ    v





zHighPage.create_page_highlightc          	      s.  ˆ j  tjdddddd¡ t ¡ }ˆ j  ¡ r–t dd¡}| ¡  ˆ j 	||¡ t dd¡}| ¡  |s‚ˆ j
 d	¡ ˆ j d
¡ qÞˆ j 	||d ¡ nHt dd¡}| ¡  ˆ j 	||¡ t dd¡}| ¡  ˆ j 	||d ¡ ˆ  ¡  tˆ j ¡ ƒ}|j‡ fdd„d ˆ j 	||d ¡ ˆ  ¡  ˆ  ¡  d S )NrÙ   ÚThemer²   r¯   r‡   )r±   r²   Ú	highlightÚuser)r*  z- no custom themes -r   c                s   ˆ j |  d S )Nr‡   )r,  )rR   )rQ   rT   rU   r  Ô  r  z)HighPage.load_theme_cfg.<locals>.<lambda>)rÄ   )r5  rž   r-   r  ZCurrentThemerx   ÚGetSectionListr÷   r@  rü   r?  r+  r0  rA  r>  rõ   r,  r€   r9  Úpaint_theme_sampleÚset_highlight_target)rQ   Úcurrent_optionÚ	item_listZtheme_namesrT   )rQ   rU   r  ¥  s2    

zHighPage.load_theme_cfgc             G   sŽ   d}| j  ¡ }||krXt ddd¡|k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Ù   rG  r³   r   Úname2zNew theme, see HelprV   r;   )r.  rx   r-   r  rr   rÿ   rD  rK  )rQ   r   Z
old_themesr´   rT   rT   rU   r-  Ù  s    

z!HighPage.var_changed_builtin_namec             G   s.   | j  ¡ }|dkr*t ddd|¡ |  ¡  d S )Nz- no custom themes -rÙ   rG  r³   )r0  rx   rr   rÿ   rK  )rQ   r   r´   rT   rT   rU   r/  ì  s    
z HighPage.var_changed_custom_namec             G   s4   | j  ¡ }t ddd|¡ |r(|  ¡  n|  ¡  d S )NrÙ   rG  r²   )r5  rx   rr   rÿ   r-  r/  )rQ   r   r´   rT   rT   rU   r4  ÷  s
    

z!HighPage.var_changed_theme_sourcec             G   s   |   ¡  d S )N)Úon_new_color_set)rQ   r   rT   rT   rU   r2    s    zHighPage.var_changed_colorc             G   s   |   ¡  d S )N)rL  )rQ   r   rT   rT   rU   r6    s    z%HighPage.var_changed_highlight_targetc             C   s\   | j  ¡ r,d| jd< d| jd< | j d¡ n,d| jd< | j d¡ d| jd< | j d¡ d S )Nr  r+  r*  )r*  )z	!disabled)r5  rx   r@  rA  rC  r+  r?  )rQ   rT   rT   rU   r>    s    




zHighPage.set_theme_typec             C   sŠ   | j  ¡ }| j | jd d¡}tj| d| |d\}}|r†||kr†| j ¡ rzd}|  |¡}|sbd S |  	|¡ | j
 |¡ n| j
 |¡ d S )Nr  Ú
backgroundzPick new color for : )rG   rJ   Zinitialcolorz_Your changes will be saved as a new Custom Theme. Enter a name for your new Custom Theme below.)r'  rx   r  Úlookupr7  ÚtkColorChooserZaskcolorr5  Úget_new_theme_nameÚ
create_newr3  rž   )rQ   ÚtargetZ
prev_colorZ	rgbTupletZcolor_stringÚmessageÚ	new_themerT   rT   rU   r8  (  s    



zHighPage.get_colorc             C   s~   | j  ¡ }| jjd|d | j ¡ r(dnd}| j| j ¡  d }| jj|f||iŽ | j	 ¡ }|d | }t
 d|||¡ d S )Nzframe_color_set.TFrame)rQ  Ú
foregroundrQ  r   ú-rH  )r3  rx   r  rI   r1  r,  r'  rÔ   Ú
tag_configr0  rr   rÿ   )rQ   Z	new_colorÚplaneZsample_elementÚthemeZtheme_elementrT   rT   rU   rP  N  s    

zHighPage.on_new_color_setc             C   s,   t  dd¡t  dd¡ }t| d||ƒj}|S )NrI  rH  r²   zNew Custom Theme)r-   rJ  r2   Úresult)rQ   rW  Ú
used_namesrX  rT   rT   rU   rT  Y  s
    
zHighPage.get_new_theme_namec             C   s   |   d¡}|r|  |¡ d S )NzNew Theme Name:)rT  rU  )rQ   Únew_theme_namerT   rT   rU   r=  a  s    
zHighPage.save_as_new_themec             C   s¬   | j  ¡ rd}| j ¡ }nd}| j ¡ }t ||¡}|td krftd | }x|D ]}|| ||< qRW |  ||¡ t dd¡}| 	¡  | j
 ||¡ | j  d¡ |  ¡  d S )Nr²   rI  rH  r   )r5  rx   r.  r0  r-   ZGetThemeDictrr   Úsave_newrJ  r÷   rA  rü   rž   r>  )rQ   r`  Z
theme_typeÚ
theme_namerX  Ztheme_changesrF  Zcustom_theme_listrT   rT   rU   rU  l  s     


zHighPage.create_newc             C   sd   | j  ¡ dkr4| j d¡ | j d¡ | j d¡ n$| j d¡ | j d¡ | j d¡ |  ¡  d S )Nr  )r*  r‡   )z	!disabled)r'  rx   r;  r+  r<  r1  rž   Úset_color_sample)rQ   rT   rT   rU   rL  ”  s    zHighPage.set_highlight_targetc             G   s   |   ¡  d S )N)rc  )rQ   ÚargsrT   rT   rU   r:  °  s    z!HighPage.set_color_sample_bindingc             C   sH   | j | j ¡  d }| j ¡ r"dnd}| j ||¡}| jjd|d d S )Nr   rY  rQ  zframe_color_set.TFrame)rQ  )r,  r'  rx   r1  rÔ   Ztag_cgetr  rI   )rQ   Útagr\  r3  rT   rT   rU   rc  ¸  s    zHighPage.set_color_samplec             C   sÒ   | j  ¡ r| j ¡ }n
| j ¡ }x¤| jD ]š}| j| d }t ||¡}|dkrbtj|ddd|d< |td kr²td | }|d |kr–||d  |d	< |d
 |kr²||d
  |d< | jj	|f|Ž q(W |  
¡  d S )Nr   r  r  Úbg)ZfgBgrQ  rH  z-foregroundrY  z-background)r5  rx   r.  r0  r,  r-   ZGetHighlightrr   rÔ   r[  rc  )rQ   r]  Zelement_titlerF  ZcolorsZ
theme_dictrT   rT   rU   rK  Ê  s"    

zHighPage.paint_theme_samplec             C   sN   t jd  |¡s t jd  |¡ x(|D ] }|| }t jd  |||¡ q&W d S )NrH  )r-   r“   Úhas_sectionÚadd_sectionrÌ   )rQ   rb  r]  rF  r´   rT   rT   rU   ra  ò  s
    
zHighPage.save_newc             O   s   t j||ŽS )N)r,   Úaskyesno)rQ   rd  ÚkwargsrT   rT   rU   ri  þ  s    zHighPage.askyesnoc             C   sÞ   | j  ¡ }d}| jd|| | ds&d S | j ¡  t d|¡ t dd¡}| 	¡  |sp| 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)rG   rH  rI  )r*  z- no custom themes -r   rÙ   rG  r²   r³   )r0  rx   ri  r  rq   rr   Údelete_sectionr-   rJ  r÷   r?  r+  rA  rü   r5  rž   r‘   r·   r.  rs   rt   ru   r>  )rQ   rb  ÚdelmsgrN  rT   rT   rU   rB    s&    



zHighPage.delete_custom)rÐ   rÑ   rÒ   rF   r  r  r-  r/  r4  r2  r6  r>  r8  rP  rT  r=  rU  rL  r:  rc  rK  ra  ri  rB  rÓ   rT   rT   )r{   rU   r\   ¦  s,    w4&((r\   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 )#r_   c                s(   t ƒ  |¡ |j| _|  ¡  |  ¡  d S )N)rz   rF   rØ   r  Úcreate_page_keysÚload_key_cfg)rQ   rØ   )r{   rT   rU   rF   4  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 )(Nrh   z Custom Key Bindings )r?   rÛ   rV   z	 Key Set zAction - Key(s))rV   )rÞ   )rj   rÜ   z<ButtonRelease-1>ri   rŸ   ZxscrollcommandzGet New Keys for Selectionr*  )rV   ri   r+  c                s   g | ]}t ˆ d dd‘qS )rh   r   )re   r?   )r!   )r©   Úi)Úframe_key_setsrT   rU   r«   ­  s   z-KeysPage.create_page_keys.<locals>.<listcomp>r   r‡   zUse a Built-in Key Set)rÀ   r´   ri   rV   zUse a Custom Key Set)ri   zDelete Custom Key Set)rV   ri   zSave as New Custom Key Set)r?   r>   )rX   rk   rà   rY   rZ   )rX   rk   rà   rZ   )rX   rZ   rk   rà   )rˆ   )r‹   rŠ   Z
columnspanrŒ   )r‹   rŠ   rŒ   )r‹   rŠ   rŒ   rk   rà   T)rX   rZ   rY   rk   )rX   rZ   rY   )rX   rZ   rY   rà   )8rO   rb   r   r-  r.  r/  r0  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_keysÚranger)   Úset_keys_typeZbuiltin_keyset_onÚcustom_keyset_onr0   r@  rA  Údelete_custom_keysÚbutton_delete_custom_keysÚsave_as_new_key_setZbutton_save_custom_keysÚkeys_messagerc   r   r
   r   r   r   r™   r˜   r¡   r   r   r   r   r   )rQ   rE  Zframe_targetZtarget_titleZscroll_target_yZscroll_target_xZframesrT   )rp  rU   rm  :  s„    R
zKeysPage.create_page_keysc          	   C   sü   | j  tjdddddd¡ t ¡ }| j  ¡ r–t dd¡}| ¡  | j 	||¡ t dd¡}| ¡  |s‚| j
 d	¡ | j d
¡ qÞ| j 	||d ¡ nHt dd¡}| ¡  | j 	||¡ t dd¡}| ¡  | j 	|t ¡ ¡ |  ¡  t ¡ }|  |¡ d S )NrÙ   ÚKeysr²   r¯   r‡   )r±   r²   r€   rI  )r*  z- no custom keys -r   )rr  rž   r-   r  ZCurrentKeysrx   rJ  r÷   r@  rü   r{  r+  r0  rA  Údefault_keysrz  Úload_keys_list)rQ   rM  rN  Úkeyset_namerT   rT   rU   rn  Ú  s,    

zKeysPage.load_key_cfgc             G   s   d}| j  ¡ }||krXt ddd¡|k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   rO  zNew key set, see HelprV   r;   )r.  rx   r-   r  rr   rÿ   r  r‚  )rQ   r   Zold_keysr´   rT   rT   rU   r-  ù  s    

z!KeysPage.var_changed_builtin_namec             G   s0   | j  ¡ }|dkr,t ddd|¡ |  |¡ d S )Nz- no custom keys -rÙ   r€  r³   )r0  rx   rr   rÿ   r‚  )rQ   r   r´   rT   rT   rU   r/    s    
z KeysPage.var_changed_custom_namec             G   s4   | j  ¡ }t ddd|¡ |r(|  ¡  n|  ¡  d S )NrÙ   r€  r²   )rr  rx   rr   rÿ   r-  r/  )rQ   r   r´   rT   rT   rU   rq    s
    

z"KeysPage.var_changed_keyset_sourcec             G   sj   | j  ¡ }| j ¡ }| j t¡ ¡ d }t |¡rDt 	d|||¡ n"t 
|¡}|d }t 	d|||¡ d S )Nr   r€   Z_cfgBindingsr†   )rt  rx   r0  ru  r   Úsplitr-   ZIsCoreBindingrr   rÿ   ZGetExtnNameForEvent)rQ   r   r´   Zkey_setr¾   r§   Zext_keybind_sectionrT   rT   rU   rs    s    



zKeysPage.var_changed_keybindingc             C   s\   | j  ¡ r,d| jd< d| jd< | j d¡ n,d| jd< | j d¡ d| jd< | j d¡ d S )Nr  r+  r*  )r*  )z	!disabled)rr  rx   r@  rA  r}  r+  r{  )rQ   rT   rT   rU   rz  )  s    




zKeysPage.set_keys_typec             C   sJ  | j  t¡}| j  |¡}| ¡ d }| j ¡ r:| j ¡ }n
| j ¡ }t 	¡ }|t
d kr‚t
d | }x|D ]}||  ¡ ||< qjW t| ¡ ƒ}t| d||ƒj}	|	r.| j ¡ ræd}
|  |
¡}|sÜ| j  |¡ | j  |¡ d S |  |¡ | j  |¡ | j  ||d |	 ¡ | j  |¡ | j  |¡ | j |	¡ n| 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.z - )ru  rø   r   rx   r„  rr  r.  r0  r-   ZGetCurrentKeySetrr   rõ   Úvaluesr/   r^  Úget_new_keys_namerú   rû   Úcreate_new_key_setÚdeleteré   rt  rž   )rQ   Ú
list_indexÚbindingÚ	bind_nameZcurrent_key_set_nameZcurrent_bindingsÚkey_set_changesr¾   Zcurrent_key_sequencesÚnew_keysrW  Ú
new_keysetrT   rT   rU   rw  5  s<    	





zKeysPage.get_new_keysc             C   s,   t  dd¡t  dd¡ }t| d||ƒj}|S )NrI  r€   r²   zNew Custom Key Set)r-   rJ  r2   r^  )rQ   rW  r_  rŽ  rT   rT   rU   r†  a  s
    
zKeysPage.get_new_keys_namec             C   s   |   d¡}|r|  |¡ d S )NzNew Key Set Name:)r†  r‡  )rQ   Znew_keys_namerT   rT   rU   r~  i  s    
zKeysPage.save_as_new_key_setc             C   s   | j  d¡ d S )N)z	!disabled)rx  r+  )rQ   r¾   rT   rT   rU   rv  o  s    zKeysPage.on_bindingslist_selectc       
      C   sÖ   | j  ¡ r| j ¡ }n
| j ¡ }t |¡}i }x.|D ]&}|dd… }d || ¡}|||< q4W |td krtd | }x|D ]}|| ||< q|W |  ||¡ t 	dd¡}	|	 
¡  | j |	|¡ | j  d¡ |  ¡  d S )Nrh   éþÿÿÿr"  r€   rI  r   )rr  rx   r.  r0  r-   ZGetCoreKeysÚjoinrr   Úsave_new_key_setrJ  r÷   rA  rü   rž   rz  )
rQ   Znew_key_set_nameZprev_key_set_nameZ	prev_keysr  r¾   Z
event_namerŠ  rŒ  Zcustom_key_listrT   rT   rU   r‡  s  s&    




zKeysPage.create_new_key_setc             C   sà   d}| j  ¡ rd}| j  t¡}t |¡}t| ¡ ƒ}| ¡  | j  	dt
¡ xh|D ]`}d || ¡}|dd… }|td krš|td | krštd | | }| j  t
|d | ¡ qPW |rÜ| j  |¡ | j  |¡ | j  |¡ d S )	NFTr   r"  rh   r  r€   z - )ru  r¼   rø   r   r-   Z	GetKeySetrõ   r€   r÷   rˆ  r    r  rr   ré   rù   rú   rû   )rQ   rƒ  Zreselectr‰  ÚkeysetZ
bind_namesr‹  rÄ   rT   rT   rU   r‚  ‘  s&    


zKeysPage.load_keys_listc             C   sN   t jd  | ¡s t jd  | ¡ x(|D ] }|| }t jd  | ||¡ q&W d S )Nr€   )r-   r“   rg  rh  rÌ   )rƒ  r’  r¾   r´   rT   rT   rU   r‘  «  s
    
zKeysPage.save_new_key_setc             O   s   t j||ŽS )N)r,   ri  )rQ   rd  rj  rT   rT   rU   ri  ¼  s    zKeysPage.askyesnoc             C   sæ   | j  ¡ }d}| jd|| | ds&d S | j ¡  t d|¡ t dd¡}| 	¡  |sp| 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 Set)rG   r€   rI  )r*  z- no custom keys -r   rÙ   r€  r²   r³   )r0  rx   ri  r  rq   rr   rk  r-   rJ  r÷   r{  r+  rA  rü   rr  rž   r‘   r·   r.  r  rs   rt   ru   rz  )rQ   rƒ  rl  rN  rT   rT   rU   r|  À  s*    





zKeysPage.delete_custom_keys)rÐ   rÑ   rÒ   rF   rm  rn  r-  r/  rq  rs  rz  rw  r†  r~  rv  r‡  r‚  Ústaticmethodr‘  ri  r|  rÓ   rT   rT   )r{   rU   r_   2  s$    !	,r_   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 ƒ  |¡ |  ¡  |  ¡  d S )N)rz   rF   Úcreate_page_generalÚload_general_cfg)rQ   rØ   )r{   rT   rU   rF   å  s    zGenPage.__init__c             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  t| ƒd¡| _t| dtdd}t| dtdd}t| dtd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d| _t|dd}
t|| jdd| _t|dd}t|dd}t|d | jd!| _t|dd}t|d"d}t|| jd#d$d%d#ƒ| _t|dd}t|d&d}t|| j	d d| _t|d'| j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d| _#t|dd}t|d/d}t|d-| jd!| _$t|ƒ}t|ƒ}t%|d0d1t&d2| _'t(|ƒ}| j'j)|d3< |j*| j'd4< | j' +d5| j,¡ t-|d6d7d8| j.d9| _/t-|d:d8| j0d;| _1t-|d<d7d8| j2d9| _3|j4t5d0d0t6t7d= |j4t5d0d0t6t7d= |j4t5d0d0t6t7d= |j4t5d0d0t6t7d= |j4t5d0dt8d> |j4t9t:d0d0d? | jj4t;t:d0d0d? | jj4t;t:d0d0d? |j4t5d0dt8d> |j4t9t:d0d0d? | jj4t;t<d@d0d? |
j4t;t<d0dA | jj4t;t<d@d0d? |	j4t;t<d0dA |j4t5d0dt8d> |j4t9t:d0d0d? | jj4t5d@d0dB |j4t5d0dt8d> |j4t9t:d0d0d? | jj4t5d@d0dB |j4t5d0dt8d> |j4t9t:d0dC | jj4t;t<dDd0d? | jj4t5t:dDd0d? |j4t5d0dt8d> |j4t9t:d0d0d? | j!j4t;t:d0d0d? | j j4t;t:d0d0d? |j4t5d0dt8d> |j4t9t:d0d0d? | j"j4t5d@d0dB |j4t5d0dt8d> |j4t9t:d0d0d? | j#j4t5d0d0dB |j4t5d0dt8d> |j4t9t:d0d0d? | j$j4t5d0d0dB |j4t;d0d0t=d> |j4t5d0d0t6t7d= |j4t;t:t=dE | j'j4t9t<t6t7dF | j/j4t5t:d0dA | j1j4t5t:dG | j3j4t5t:d0dA d S )HN)rÙ   ÚGeneralzeditor-on-startup)rÙ   rê   rE   )rÙ   rê   rD   )r†   r5   Ú	popupwait)r†   r7   r  )r†   r7   zflash-delay)r†   r7   Úbell)rÙ   ÚPyShellzauto-squeeze-min-lines)rÙ   r–  Úautosave)r†   r8   z	max-width)r†   r6   Úmaxlinesrh   z Window Preferences)r?   rÛ   rV   z Editor Preferencesz Shell Preferencesz Additional Help Sources r   )r?   z
At Startup)rV   r‡   zOpen Edit Window)rÀ   r´   rV   zOpen Shell Windowz$Initial Window Size  (in characters)ZWidthrg   )rÅ   rE   ZHeightz%Completions Popup Wait (milliseconds)rf   )rE   rÅ   zParen Match StyleZ
expressionÚopenerZparensz;Time Match Displayed (milliseconds)
(0 is until next input)zBell on Mismatch)rV   rÀ   zAt Start of Run (F5)  zPrompt to Savez	No PromptzFormat Paragraph Max Widthr  zMax Context Lines :zAuto-Squeeze Min. Lines:r>   T)rD   rj   rÜ   ri   rŸ   z<ButtonRelease-1>ZEditr*  r¿   )rV   r+  rE   ri   ZAdd)rV   rE   ri   ZRemove)rX   rk   rà   rY   rZ   )rX   rk   rà   rZ   )rX   rá   rk   rà   r   )rX   rá   rà   )rX   rk   rà   )rX   rá   rk   rÆ   )rX   rá   rZ   )rX   rá   rY   rZ   )rX   rá   )>rO   rb   r	   Ústartup_editr   Ú	win_widthÚ
win_heightÚautocomplete_waitÚparen_styleÚflash_delayr   Ú
paren_bellÚauto_squeeze_min_linesrš  Úformat_widthÚcontext_linesr"   r   r!   r&   r)   Zstartup_editor_onZstartup_shell_onr%   Zwin_width_intZwin_height_intZauto_wait_intr'   Zparen_style_typeZparen_flash_timer$   Zbell_onZsave_ask_onZsave_auto_onZformat_width_intZcontext_intZauto_squeeze_min_lines_intr   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_removerc   r   r
   r   r   r   r   r   r   r   )rQ   Zframe_windowZframe_editorZframe_shellZ
frame_helpZ	frame_runZstartup_titleZframe_win_sizeZwin_size_titleZwin_width_titleZwin_height_titleZframe_autocompleteZauto_wait_titleZframe_paren1Zparen_style_titleZframe_paren2Zparen_time_titleZ
frame_saveZrun_save_titleZframe_formatZformat_width_titleZframe_contextZcontext_titleZframe_auto_squeeze_min_linesZauto_squeeze_min_lines_titleZframe_helplistZframe_helplist_buttonsZscroll_helplistrT   rT   rU   r”  ê  s*   B






zGenPage.create_page_generalc          	   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 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¡ | j tjd
dddd¡ | j tjd
dddd¡ | j tjddddd¡ t ¡ | _| j dd¡ x"| jD ]}| j t|d ¡ q8W |  ¡  d S )NrÙ   r–  zeditor-on-startupr¯   )r±   rê   rE   r°   rD   r†   r5   r—  r7   r  zflash-delayr˜  rš  r   )r²   r±   r8   z	max-widthr6   r›  r™  zauto-squeeze-min-linesrv   )r  rž   r-   r  rž  rŸ  r   r¡  r¢  r£  rš  r¥  r¦  r¤  ZGetAllExtraHelpSourcesListÚuser_helplistr§  rˆ  ré   r    Úset_add_delete_state)rQ   Z	help_itemrT   rT   rU   r•  ã  s6    











zGenPage.load_general_cfgc             C   s   |   ¡  d S )N)r¯  )rQ   r¾   rT   rT   rU   r¨    s    zGenPage.help_source_selectedc             C   sh   | j  ¡ dk r(| j d¡ | j d¡ n<| j  ¡ rL| j d¡ | j d¡ n| j d¡ | j d¡ d S )Nr‡   )r*  )z	!disabled)r§  Úsizerª  r+  r­  r¼   )rQ   rT   rT   rU   r¯    s    
zGenPage.set_add_delete_statec             C   s:   t | dƒj}|r6| j |¡ | j t|d ¡ |  ¡  d S )NzNew Help Sourcer   )r3   r^  r®  r»   r§  ré   r    Úupdate_help_changes)rQ   Úhelp_sourcerT   rT   rU   r«    s
    zGenPage.helplist_item_addc             C   sx   | j  t¡}| j| }t| d|d |d dj}|rt||krt|| j|< | j  |¡ | j  ||d ¡ |  ¡  |  	¡  d S )NzEdit Help Sourcer   r‡   )ZmenuitemÚfilepath)
r§  rø   r   r®  r3   r^  rˆ  ré   r±  r¯  )rQ   Ú
item_indexr²  Znew_help_sourcerT   rT   rU   r©  %  s    

zGenPage.helplist_item_editc             C   s4   | j  t¡}| j|= | j  |¡ |  ¡  |  ¡  d S )N)r§  rø   r   r®  rˆ  r±  r¯  )rQ   r´  rT   rT   rU   r¬  9  s
    zGenPage.helplist_item_removec             C   sZ   i t d d< xHtdt| jƒd ƒD ]0}t  ddt|ƒd | j|d  d d… ¡¡ q"W d S )NrÙ   Z	HelpFilesr‡   ú;rh   )rr   ry  Úlenr®  rÿ   rº   r  )rQ   ZnumrT   rT   rU   r±  D  s
    
zGenPage.update_help_changes)rÐ   rÑ   rÒ   rF   r”  r•  r¨  r¯  r«  r©  r¬  r±  rÓ   rT   rT   )r{   rU   r`   ã  s    z%r`   c               @   s@   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 )N)ÚuntracedÚtraced)rQ   rT   rT   rU   rF   P  s    	zVarTrace.__init__c             C   s   | j  ¡  | j ¡  d S )N)r¸  Úclearr¹  )rQ   rT   rT   rU   rº  \  s    
zVarTrace.clearc             C   s*   t |tƒr|  ||¡}| j ||f¡ |S )N)Ú
isinstanceÚtupleÚmake_callbackr¸  r»   )rQ   rµ   ÚcallbackrT   rT   rU   rb   b  s    
zVarTrace.addc                s   ‡ ‡fdd„}|S )Nc                 s   t jˆ ˆ ¡ fžŽ  d S )N)rr   rÿ   rx   )r   )r½   rµ   rT   rU   Údefault_callbackv  s    z0VarTrace.make_callback.<locals>.default_callbackrT   )rµ   r½   r¿  rT   )r½   rµ   rU   r½  s  s    zVarTrace.make_callbackc             C   s:   x4| j r4| j  ¡ \}}| d|¡ | j ||f¡ qW d S )NÚwrite)r¸  ÚpopZ	trace_addr¹  r»   )rQ   rµ   r¾  rT   rT   rU   rP   {  s    zVarTrace.attachc             C   sF   x@| j r@| j  ¡ \}}| d| ¡ d d ¡ | j ||f¡ qW d S )NrÀ  r   r‡   )r¹  rÁ  Ztrace_removeZ
trace_infor¸  r»   )rQ   rµ   r¾  rT   rT   rU   Údetach‚  s    zVarTrace.detachN)
rÐ   rÑ   rÒ   rF   rº  rb   r“  r½  rP   rÂ  rT   rT   rT   rU   r·  M  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 milleseconds 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".
)z
Fonts/TabsrW   r€  r–  c             C   s.   | sdS yt | ƒ dS  tk
r(   dS X d S )NTF)r°   r¹   )rì   rT   rT   rU   r–   É  s    r–   c               @   s   e Zd Zdd„ ZdS )rÇ   c                sÐ   t j| |f|ž|Ž 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 )N)rÞ   )rZ   rX   rY   r   éð   )r?   r  rŸ   rE   )rX   rZ   rY   )ri   )Zwindowrá   c                s$   ˆ  ¡ ˆ ¡ f}ˆ jd| d d S )Nz	0 0 %s %s)Zscrollregion)Úwinfo_reqwidthZwinfo_reqheightr½   )r¾   r°  )ÚcanvasrÈ   rT   rU   Ú_configure_interiorð  s    z;VerticalScrolledFrame.__init__.<locals>._configure_interiorz<Configure>c                s&   ˆ  ¡ ˆ  ¡ kr"ˆ jˆˆ  ¡ d d S )N)rE   )rÄ  Zwinfo_widthZitemconfigure)r¾   )rÅ  rÈ   Úinterior_idrT   rU   Ú_configure_canvasö  s    z9VerticalScrolledFrame.__init__.<locals>._configure_canvas)r!   rF   r*   r   rc   r   r   r   r   rž   r   r   r
   r½   r   Zxview_movetoZyview_movetorÈ   Zcreate_windowr   r›   )rQ   rG   rd  ÚkwZ
vscrollbarrÆ  rÈ  rT   )rÅ  rÈ   rÇ  rU   rF   Û  s     

zVerticalScrolledFrame.__init__N)rÐ   rÑ   rÒ   rF   rT   rT   rT   rU   rÇ   Ô  s   rÇ   Ú__main__)rÙ   z#idlelib.idle_test.test_configdialogrh   F)Ú	verbosityÚexit)Úrun)^Z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   r    Ztkinter.ttkr!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   Ztkinter.colorchooserZcolorchooserrS  Ztkinter.fontrþ   rö   r,   Zidlelib.configr-   r.   Zidlelib.config_keyr/   Zidlelib.dynoptionr0   Zidlelibr1   Zidlelib.queryr2   r3   Zidlelib.textviewr4   Zidlelib.autocompleter5   Zidlelib.codecontextr6   Zidlelib.parenmatchr7   Zidlelib.paragraphr8   Zidlelib.squeezerr9   rr   rƒ   r:   ry   r^   r\   r_   r`   r·  rO   r~   r   r–   rÇ   rÐ   ZunittestrÙ   Zidlelib.idle_test.htestrÍ  rT   rT   rT   rU   Ú<module>   sh   „4    Q        4  l=+
