<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>

Yf%                 @   sV  d  Z  d d l Td d l j Z d d l j Z d d l j	 Z
 d d l m Z d d l m Z d d l m Z d d l m Z d d l m Z d d	 l m Z d d
 l m Z d d l m Z Gd d   d e  Z d Z d d i Z d d   Z Gd d   d e   Z! e" d k rRd d l# Z# e# j$ d d d d d d d l% m& Z& e& e  d S)a  IDLE Configuration Dialog: support user customization of IDLE by GUI

Customize font faces, sizes, and colorization attributes.  Set indentation
defaults.  Customize keybindings.  Colorization and keybindings can be
saved as user defined sets.  Select startup options including shell/editor
and default window size.  Define additional help sources.

Note that tab width in IDLE is currently fixed at eight due to Tk issues.
Refer to comments in EditorWindow autoindent code for details.

    )*N)idleConf)DynOptionMenu)GetKeysDialog)GetCfgSectionNameDialog)GetHelpSourceDialog)TabbedPageSet)	view_text)macosxSupportc               @   s  e  Z d  Z d d d 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 d- d.   Z d/ d0   Z d1 d2   Z d3 d4   Z d5 d6   Z d7 d8   Z d9 d:   Z d; d<   Z d= d>   Z  d? d@   Z! dA dB   Z" dC dD   Z# dE dF   Z$ dG dH   Z% dI dJ   Z& dK dL   Z' dM dN   Z( dO dP   Z) dQ dR   Z* dS dT   Z+ dU dV   Z, dW dX   Z- dY dZ   Z. d[ d\ d]  Z/ d^ d_   Z0 d` da   Z1 db dc   Z2 dd de   Z3 df dg   Z4 dh di   Z5 dj dk   Z6 dl dm   Z7 dn do   Z8 dp dq   Z9 dr ds   Z: dt du   Z; dv dw   Z< dx dy   Z= dz d{   Z> d| d}   Z? d~ d   Z@ d d   ZA d d   ZB d d   ZC d d   ZD d d   ZE d d   ZF d d   ZG d d   ZH d d   ZI d d   ZJ d d   ZK d d   ZL d d   ZM d d   ZN d d   ZO d[ S)ConfigDialog Fc             C   s|  t  j |  |  | |  _ | r( i  | _ |  j   |  j d d  |  j | pQ d  |  j d | j   d | j	   | s d n d f  d d6 d d7 d d8 d d9 d d: d d; d d< d d= d  d> d# d? d& d@ d) dA d, dB d/ dC i |  _
 |  j   |  j   |  j d2 t d3 t  |  j |  |  j   |  j d4 |  j  |  j j   |  j   |  j   | sx|  j   |  j   d5 S)Dz
        _htest - bool, change box location when running htest
        _utest - bool, don't wait_window when running unittest
        borderwidth   zIDLE Preferencesz+%d+%d         zNormal Textnormal00zPython Keywordskeyword01zPython Definitions
definition02zPython Builtinsbuiltin03zPython Commentscomment04zPython Stringsstring05zSelected Texthilite06z
Found Texthit07Cursorcursor08zEditor Breakpointbreak09zShell Normal Textconsole10zShell Error Texterror11zShell Stdout Textstdout12zShell Stderr Textstderr13heightwidthZWM_DELETE_WINDOWN)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.   )Toplevel__init__parentinstance_dictZwm_withdraw	configuretitleZgeometryZwinfo_rootxZwinfo_rootythemeElementsResetChangedItemsCreateWidgetsZ	resizableFALSEZ	transientZgrab_setZprotocolCanceltabPagesZ	focus_setLoadConfigsAttachVarCallbacksZwm_deiconifyZwait_window)selfr3   r6   Z_htestZ_utest r@   9/opt/alt/python35/lib64/python3.5/idlelib/configDialog.pyr2      sH    		
!





zConfigDialog.__init__c             C   s   t  |  d d d d d d g |  _ |  j j d t d t d	 t  |  j   |  j   |  j   |  j	   |  j
   |  j   j d t  d  S)
NZ
page_namesz
Fonts/TabsHighlightingKeysGeneral
Extensionssideexpandfill)r   r<   packTOPTRUEBOTHCreatePageFontTabCreatePageHighlightCreatePageKeysCreatePageGeneralCreatePageExtensionscreate_action_buttonsBOTTOM)r?   r@   r@   rA   r9   Q   s    	




zConfigDialog.CreateWidgetsc          
   C   s   t  j   r i  } n d d d d i } t |  d d } t | d d } xu d |  j f d |  j f d |  j f d	 |  j f f D]= \ } } t | d
 | d | d t | j	 d t
 d d  q Wt | d d d d j	 d t  | j	 d t  | S)Npadx   pady      OkApplyr;   Helptextcommand	takefocusrF   r   r/   r   r   )r
   ZisAquaTkFramerY   rZ   r;   r[   Buttonr:   rI   LEFTrJ   rS   )r?   ZpaddingArgsZouterZbuttonsZtxtcmdr@   r@   rA   rR   ]   s    	"z"ConfigDialog.create_action_buttonsc             C   s  |  j  } t |  |  _ t |  |  _ t |  |  _ t |  |  _ t j	 | d+  |  _
 |  j j d j } t | d d d t d d	 } t | d d d t d d
 } t |  } t |  } t | d t d d } t | d d d t d t |  _ |  j j d |  j  t |  } | j d |  j j  |  j j d | j  t | d d }	 t | |  j d  d |  j |  _ t | d |  j d d d d d d d |  j }
 t | d t  d d } t | d t d |  j
 d d |  _! t |  } t | d t d d } t" | d |  j d d d  d d! d d" d# |  _# | j$ d$ t d% d d& d d' t% d( t&  | j$ d$ t d% d d& d d( t'  | j$ d$ t( d% d d& d d( t)  | j$ d$ t( d% d d& d d( t)  | j$ d$ t( d) t*  |  j j$ d$ t d' t% d( t)  | j$ d$ t d( t'  |	 j$ d$ t d) t*  |  j j$ d$ t d) t*  |
 j$ d$ t d) t* d% d*  | j$ d$ t( d% d d& d d' t% d( t&  |  j! j$ d' t% d( t&  | j$ d$ t( d( t)  | j$ d$ t( d) t* d% d  |  j# j$ d$ t( d% d d( t)  | S),Ncourier
   r   z
Fonts/Tabsr   rX   reliefr\   z Base Editor Font z Indentation Width ZjustifyzFont Face :r/   r   r^   exportselectionz<ButtonRelease-1>r]   yscrollcommandzSize :variableonvalue   offvaluer   ZBoldfontz,AaBbCcDdEe
FfGgHhIiJjK
1234567890
#:+=(){}[]zPython Standard: 4 Spaces!orientZ
horizontalZtickintervalZfrom_Zto   rF   rT   rV   rG   rH   anchorr   )rc   rd   r   )+r3   	StringVarfontSize
BooleanVarfontBoldfontNameIntVarspaceNumtkFontZFontZeditFontr<   pagesframe
LabelFrameGROOVEr_   Labelra   Listboxr:   listFontNamebindOnListFontButtonRelease	Scrollbarconfigyviewsetr   SetFontSampleoptMenuFontSizeCheckbuttonSOLIDlabelFontSampleZScaleZscaleSpaceNumrI   rK   rL   YrJ   XW)r?   r3   ry   Z	frameFontZframeIndentZframeFontNameZframeFontParamZlabelFontNameTitleZ
scrollFontZlabelFontSizeTitleZcheckFontBoldZframeFontSampleZframeIndentSizeZlabelSpaceNumTitler@   r@   rA   rM   r   sn    			("""(zConfigDialog.CreatePageFontTabc          !   C   s  |  j  } t |  |  _ t |  |  _ t |  |  _ t |  |  _ t |  |  _ t |  |  _ t |  |  _	 |  j
 j d j } t | d d d t d d } t | d d d t d d } t | d t d d d	 d\ d d d d d d d t d d d t 	|  _ |  j } | j d d d    | j d d d    d} } x) | D]! } | j t | d | d  qHWx> |  j D]3 } | dB dC  }	 | j |  j | d dD |	  qwW| j dE t  t | d t d d |  _ t |  }
 t |  j d dF dG |  j d d } t |  j |  j	 d  d d |  _  t! |
 dH |  j dI d d dJ dG |  j" |  _# t! |
 dH |  j dI d d dK dG |  j" |  _$ |  j j% d  t | d dL dG |  j& } t' | d dM } t! | dH |  j dI d dG |  j( d dN |  _) t! | dH |  j dI d dG |  j( d dO |  _* t | |  j d  dG d  |  _+ t | |  j d  dG d  |  _, t | d dP dG |  j- |  _. t' | dQ d |  _/ | j0 dR t1 dS dT dU dT dV t2 dW t3  | j0 dR t1 dS dT dU dT dW t4  |  j j0 dR t5 dS dT dU dT dV t2 dW t6  |
 j0 dR t5 dS dT dU d  |  j j0 dR t5 dS dT dU dT dV t2 dW t3  | j0 dR t5 dV t2 dW t6 dS dX dU dY  |  j  j0 dR t5 dV t2 dW t6 dS dX dU dZ  |  j# j0 dR t1 d[ t7  |  j$ j0 dR t8 d[ t9  | j0 dR t: dW t6 dS dT dU dT  | j0 dR t5 d[ t9 dS dT dU dT  |  j) j0 dR t5 d[ t9 dS dT  |  j* j0 dR t5 d[ t9 dS dT dU d  |  j+ j0 dR t5 dW t6 dS dT dU dT  |  j, j0 dR t5 dW t6 d[ t9 dS dT dU dT  |  j. j0 dR t5 dW t6 dS dT dU dT  |  j/ j0 dR t5 dW t6 dU dT  | S)~NrB   r   rX   re   r\   z Custom Highlighting z Highlighting Theme rj   rl   rc      r   r#   Zhand2r0      r/      r^   highlightthicknessr   Zwrapz<Double-Button-1>c             S   s   d S)Nr%   r@   )er@   r@   rA   <lambda>   s    z2ConfigDialog.CreatePageHighlight.<locals>.<lambda>z<B1-Motion>c             S   s   d S)Nr%   r@   )r   r@   r@   rA   r      s    #you can click herer   
r   #to choose itemsdefr    funcr   (param):
  """string"""r   

  var0 = 'string'

  var1 = 
'selected'r   

  var2 = 'found'r    

  var3 = listr   (None)
  breakpoint("line")r%   

 error r)   cursor |
 shellr'   r+   r-   c             S   s   |  j  j   j j |  d  S)N)ZwidgetZwinfo_toplevelhighlightTargetr   )eventelemr@   r@   rA   tem   s    z-ConfigDialog.CreatePageHighlight.<locals>.temz<ButtonPress-1>statezChoose Colour for :r]   rh   valueZ
ForegroundZ
BackgroundzSave as New Custom Themez	Select : za Built-in Themeza Custom ThemezDelete Custom ThemebdrF   rT   r   rV   rG   rH         rW   ro   )rc   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   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+   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   r   r   r   r   r   r   r   r   );r3   rp   builtinThemecustomThemerr   fgHilitecolourrt   themeIsBuiltinr   r<   rx   ry   rz   r{   ZTextr   r:   ZNONEtextHighlightSampler   insertENDr7   Ztag_bindr   DISABLEDr_   frameColourSetr`   	GetColourr   optMenuHighlightTargetRadiobuttonSetColourSampleBindingradioFgradioBgr   SaveAsNewThemer|   SetThemeTypeZradioThemeBuiltinradioThemeCustomoptMenuThemeBuiltinoptMenuThemeCustomDeleteCustomThemebuttonDeleteCustomThemenew_custom_themerI   ra   rK   rL   r   rJ   r   ERIGHTr   rS   )r?   r3   ry   frameCustomZ
frameThemer\   ZtextAndTagsZtxTaelementr   Z	frameFgBgZbuttonSetColourZbuttonSaveCustomThemeZlabelTypeTitler@   r@   rA   rN      s    				               ("+(""%%+%z ConfigDialog.CreatePageHighlightc       
         s  |  j  } t |  |  _ t |  |  _ t |  |  _ t |  |  _ t |  |  _ |  j j	 d j
 } t | d d d t d d } t | d d d t d d   t |  } t | d d } t |  } t | d	 t } t | d
 t d t |  _ |  j j d |  j  | j d |  j j  | j d |  j j  |  j j d | j  |  j j d | j  t | d d d |  j d t |  _   f d d   t d  D } t | d d |  j d d d |  j  d d |  _! t | d d |  j d d d |  j  d d |  _" t# | d |  j d  d d  |  _$ t# | d |  j d  d d  |  _% t | d d d d |  j& |  _' t | d d d d |  j( }	 | j) d t* d d d d d  t+ d! t,    j) d t* d d d d d! t,  |  j j) d t* d! t- d d d d  | j) d t. d d d d d  t+ d! t,  | j/ d d" d | j0 d d" d | j1 d# d d$ d d% d d& t2  |  j j1 d# d d$ d d& t3  | j1 d# d d$ d d& t4  | j1 d# d d$ d d& t5  |  j! j1 d# d d$ d d& t2 t4  |  j" j1 d# d d$ d d& t2 t4  |  j$ j1 d# d d$ d d& t3  |  j% j1 d# d d$ d d& t3  |  j' j) d t. d! t- d  d' d d  |	 j) d t. d! t- d  d' d d  | d j) d t6 d! t, d  d'  | d j) d t6 d! t- d  d' d d  | S)(NrC   r   rX   re   r\   z Custom Key Bindings z	 Key Set zAction - Key(s)rm   r^   rf   z<ButtonRelease-1>r]   rg   ZxscrollcommandzGet New Keys for Selectionr   c          
      s.   g  |  ]$ } t    d  d d d d d  q S)rT   rX   rV   r   r   )r_   ).0i)frameKeySetsr@   rA   
<listcomp>F  s   	z/ConfigDialog.CreatePageKeys.<locals>.<listcomp>r   rh   r   rj   zUse a Built-in Key SetzUse a Custom Key SetzDelete Custom Key SetzSave as New Custom Key SetrF   rT   r   rV   rG   rH   weightrowcolumnZ
columnspanstickyT)7r3   rp   ZbindingTargetbuiltinKeys
customKeysrr   keysAreBuiltin
keyBindingr<   rx   ry   rz   r{   r_   r|   r   Z
HORIZONTALr}   r:   listBindingsr   KeyBindingSelectedr   r   Zxviewr   r`   
GetNewKeysr   buttonNewKeysranger   SetKeysTypeZradioKeysBuiltinradioKeysCustomr   optMenuKeysBuiltinoptMenuKeysCustomDeleteCustomKeysbuttonDeleteCustomKeysSaveAsNewKeySetrI   rS   rK   rL   r   ra   columnconfigurerowconfiguregridr   NSEWZNSZEWrJ   )
r?   r3   ry   r   ZframeTargetZlabelTargetTitleZscrollTargetYZscrollTargetXZframesZbuttonSaveCustomKeysr@   )r   rA   rO   %  s~    		("%("##%" &zConfigDialog.CreatePageKeysc             C   s  |  j  } t |  |  _ t |  |  _ t |  |  _ t |  |  _ t |  |  _ t |  |  _	 t |  |  _
 |  j j d j } t | d d d t d d } t | d d d t d d } t | d d d t } t | d d d t d d } t | d d	 } t | d
 |  j d d d |  j d d } t | d
 |  j d d d |  j d d }	 t | d d }
 t | d
 |  j d d d |  j d d } t | d
 |  j d d d |  j d d } t | d d } t | d d } t | d |  j d d } t | d d } t | d |  j d d } t |  } t |  } t |  } t | d d d t d t |  _ | j d |  j j  |  j j d | j  |  j j d |  j  t | d d  d! t d d" d |  j  |  _! t | d d# d d" d |  j" |  _# t | d d$ d! t d d" d |  j$ |  _% | j& d% t' d& d d' d d( t(  | j& d% t' d& d d' d d( t(  | j& d% t' d& d d' d d( t(  | j& d% t' d& d d' d d) t) d( t*  | j& d% t+ d* t, d& d d' d  |	 j& d% t- d* t, d& d d' d  | j& d% t- d* t, d& d d' d  |
 j& d% t+ d* t, d& d d' d  | j& d% t- d* t, d& d d' d  | j& d% t- d* t, d& d d' d  | j& d% t+ d* t, d& d d' d  | j& d% t- d* t. d& d+ d' d  | j& d% t- d* t. d' d  | j& d% t- d* t. d& d+ d' d  | j& d% t- d* t. d' d  | j& d% t- d& d d' d d( t/  | j& d% t' d& d d' d d) t) d( t*  | j& d% t- d* t, d( t/  |  j j& d% t+ d* t. d) t) d( t*  |  j! j& d% t' d* t, d' d  |  j# j& d% t' d* t,  |  j% j& d% t' d* t, d' d  | S),NrD   r   rX   re   r\   z Startup Preferences z Autosave Preferences z Additional Help Sources z
At Startuprh   r   rj   r]   zOpen Edit Windowr   zOpen Shell WindowzAt Start of Run (F5)  zPrompt to Savez	No Promptz$Initial Window Size  (in characters)ZWidthtextvariabler0   rW   ZHeightr/   r   r^   rf   rg   z<ButtonRelease-1>ZEditr   r   ZAddZRemoverF   rT   rV   rH   rG   ro   rd   )0r3   rp   winWidth	winHeightru   startupEditautoSaveencodingrr   ZuserHelpBrowserZhelpBrowserr<   rx   ry   rz   r{   r_   r|   r   r  Entryr   r}   r:   listHelpr   r   r   r   HelpSourceSelectedr`   r   HelpListItemEditbuttonHelpListEditHelpListItemAddZbuttonHelpListAddHelpListItemRemovebuttonHelpListRemoverI   rJ   r   rK   rL   ra   r   r   r   r   )r?   r3   ry   ZframeRunZ	frameSaveZframeWinSizeZ	frameHelpZlabelRunChoiceTitleZradioStartupEditZradioStartupShellZlabelRunSaveTitleZradioSaveAskZradioSaveAutoZlabelWinSizeTitleZlabelWinWidthTitleZentryWinWidthZlabelWinHeightTitleZentryWinHeightZframeHelpListZframeHelpListButtonsZscrollHelpListr@   r@   rA   rP   r  s    				"""(""""""""""(%zConfigDialog.CreatePageGeneralc             C   s  |  j  j d |  j  |  j j d |  j  |  j j d |  j  |  j j d |  j  |  j j d |  j  |  j	 j d |  j
  |  j j d |  j  |  j j d |  j  |  j j d |  j  |  j j d |  j  |  j j d |  j  |  j j d |  j  |  j j d |  j  |  j j d |  j  |  j j d |  j  |  j j d |  j  |  j j d |  j   |  j! j d |  j"  d  S)Nw)#rq   Ztrace_variableVarChanged_fontrt   rs   rv   VarChanged_spaceNumr   VarChanged_colourr   VarChanged_builtinThemer   VarChanged_customThemer   VarChanged_themeIsBuiltinr   VarChanged_highlightTargetr   VarChanged_keyBindingr   VarChanged_builtinKeysr   VarChanged_customKeysr   VarChanged_keysAreBuiltinr  VarChanged_winWidthr  VarChanged_winHeightr  VarChanged_startupEditr  VarChanged_autoSaver  VarChanged_encoding)r?   r@   r@   rA   r>     s$    zConfigDialog.AttachVarCallbacksc             C   s   x |  j  |  j |  j |  j |  j |  j |  j |  j |  j |  j	 |  j
 |  j |  j |  j |  j |  j |  j |  j f D]$ } | j d | j   d d  qs Wd S)z)Remove callbacks to prevent memory leaks.r  r   rj   N)rq   rt   rs   rv   r   r   r   r   r   r   r   r   r   r  r  r  r  r  Ztrace_vdeleteZtrace_vinfo)r?   varr@   r@   rA   remove_var_callbacks  s    z!ConfigDialog.remove_var_callbacksc             G   ss   |  j  j   } |  j d d d |  |  j j   } |  j d d d |  |  j j   } |  j d d d |  d S)zWhen one font attribute changes, save them all, as they are
        not independent from each other. In particular, when we are
        overriding the default font, we need to write out everything.
        mainEditorWindowrl   z	font-sizez	font-boldN)rt   getAddChangedItemrq   rs   )r?   paramsr   r@   r@   rA   r    s    zConfigDialog.VarChanged_fontc             G   s)   |  j  j   } |  j d d d |  d  S)Nr.  Indentz
num-spaces)rv   r0  r1  )r?   r2  r   r@   r@   rA   r    s    z ConfigDialog.VarChanged_spaceNumc             G   s   |  j    d  S)N)OnNewColourSet)r?   r2  r@   r@   rA   r    s    zConfigDialog.VarChanged_colourc             G   s   |  j  j   } | d k r~ t j d d d  d k rL |  j d d d d  |  j d d d |  |  j j d d	 d
 d  nE |  j d d d |  |  j d d d d  |  j j d d d
 d  |  j   d  S)Nz	IDLE Darkr.  ThemenamezIDLE NewzIDLE ClassicZname2r\   zNew theme, see HelpZfgz#500000r   Zblack)r   r0  r   	GetOptionr1  r   r   PaintThemeSample)r?   r2  r   r@   r@   rA   r    s    
z$ConfigDialog.VarChanged_builtinThemec             G   s?   |  j  j   } | d k r; |  j d d d |  |  j   d  S)Nz- no custom themes -r.  r5  r6  )r   r0  r1  r8  )r?   r2  r   r@   r@   rA   r     s    z#ConfigDialog.VarChanged_customThemec             G   sF   |  j  j   } |  j d d d |  | r8 |  j   n
 |  j   d  S)Nr.  r5  default)r   r0  r1  r  r   )r?   r2  r   r@   r@   rA   r!    s
    z&ConfigDialog.VarChanged_themeIsBuiltinc             G   s   |  j    d  S)N)SetHighlightTarget)r?   r2  r@   r@   rA   r"     s    z'ConfigDialog.VarChanged_highlightTargetc             G   s   |  j  j   } |  j j   } |  j j t  j   d } t j |  rb |  j d | | |  n/ t j	 |  } | d } |  j d | | |  d  S)Nr   keysZ_cfgBindings
extensions)
r   r0  r   r   ANCHORsplitr   ZIsCoreBindingr1  ZGetExtnNameForEvent)r?   r2  r   keySetr   ZextNameZextKeybindSectionr@   r@   rA   r#  #  s    
z"ConfigDialog.VarChanged_keyBindingc             G   s6   |  j  j   } |  j d d d |  |  j |  d  S)Nr.  rC   r6  )r   r0  r1  LoadKeysList)r?   r2  r   r@   r@   rA   r$  /  s    z#ConfigDialog.VarChanged_builtinKeysc             G   sB   |  j  j   } | d k r> |  j d d d |  |  j |  d  S)Nz- no custom keys -r.  rC   r6  )r   r0  r1  r@  )r?   r2  r   r@   r@   rA   r%  4  s    z"ConfigDialog.VarChanged_customKeysc             G   sF   |  j  j   } |  j d d d |  | r8 |  j   n
 |  j   d  S)Nr.  rC   r9  )r   r0  r1  r$  r%  )r?   r2  r   r@   r@   rA   r&  :  s
    z&ConfigDialog.VarChanged_keysAreBuiltinc             G   s)   |  j  j   } |  j d d d |  d  S)Nr.  r/  r0   )r  r0  r1  )r?   r2  r   r@   r@   rA   r'  B  s    z ConfigDialog.VarChanged_winWidthc             G   s)   |  j  j   } |  j d d d |  d  S)Nr.  r/  r/   )r  r0  r1  )r?   r2  r   r@   r@   rA   r(  F  s    z!ConfigDialog.VarChanged_winHeightc             G   s)   |  j  j   } |  j d d d |  d  S)Nr.  rD   zeditor-on-startup)r  r0  r1  )r?   r2  r   r@   r@   rA   r)  J  s    z#ConfigDialog.VarChanged_startupEditc             G   s)   |  j  j   } |  j d d d |  d  S)Nr.  rD   autosave)r  r0  r1  )r?   r2  r   r@   r@   rA   r*  N  s    z ConfigDialog.VarChanged_autoSavec             G   s)   |  j  j   } |  j d d d |  d  S)Nr.  r/  r  )r  r0  r1  )r?   r2  r   r@   r@   rA   r+  R  s    z ConfigDialog.VarChanged_encodingc             C   s%   d i  d i  d i  d i  i |  _  d  S)Nr.  	highlightr;  r<  )changedItems)r?   r@   r@   rA   r8   V  s    zConfigDialog.ResetChangedItemsc             C   sI   t  |  } | |  j | k r0 i  |  j | | <| |  j | | | <d  S)N)strrC  )r?   typsectionitemr   r@   r@   rA   r1  _  s    zConfigDialog.AddChangedItemc             C   s   d i  d i  d i  d i  i } x | D] } t  j d |  } xh | D]` } i  | | | <t  j | j |  } x3 | D]+ } t  j | j | |  | | | | <qu WqD Wq% W| S)Nr.  rB  r;  r<  r9  )r   GetSectionList
defaultCfgGetOptionListGet)r?   ZdItems
configTypeZsectionsrF  optionsZoptionr@   r@   rA   GetDefaultItemse  s    1zConfigDialog.GetDefaultItemsc             C   s   |  j  j   rK |  j j d t  |  j j d t  |  j j d t  nL |  j j d t  |  j j d t  |  j j d t  |  j j d t  d  S)Nr   )	r   r0  r   r   NORMALr   r   r   r   )r?   r@   r@   rA   r   q  s    zConfigDialog.SetThemeTypec             C   s   |  j  j   rK |  j j d t  |  j j d t  |  j j d t  nL |  j j d t  |  j j d t  |  j j d t  |  j j d t  d  S)Nr   )	r   r0  r  r   rO  r  r   r  r  )r?   r@   r@   rA   r  |  s    zConfigDialog.SetKeysTypec             C   s  |  j  j t  } |  j  j |  } | j   d } |  j j   rU |  j j   } n |  j j   } t j	   } | |  j
 d k r |  j
 d | } x" | D] } | | j   | | <q Wt | j    } t |  d | |  j }	 |	 r|  j j   rDd }
 |  j |
  } | s7|  j  j |  |  j  j |  d  S|  j |  |  j  j |  |  j  j | | d |	  |  j  j |  |  j  j |  |  j j |	  n  |  j  j |  |  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 - )r   indexr=  r0  r>  r   r   r   r   ZGetCurrentKeySetrC  r   valuesr   resultGetNewKeysName
select_setselect_anchorCreateNewKeySetdeleter   r   r   )r?   	listIndexbindingbindNameZcurrentKeySetNameZcurrentBindingskeySetChangesr   ZcurrentKeySequencesnewKeysmessage	newKeySetr@   r@   rA   r     s<    zConfigDialog.GetNewKeysc             C   s>   t  j d d  t  j d d  } t |  d | |  j } | S)Nuserr;  r9  zNew Custom Key Set)r   rH  r   rR  )r?   r]  	usedNamesr^  r@   r@   rA   rS    s
    zConfigDialog.GetNewKeysNamec             C   s&   |  j  d  } | r" |  j |  d  S)NzNew Key Set Name:)rS  rV  )r?   ZnewKeysNamer@   r@   rA   r    s    zConfigDialog.SaveAsNewKeySetc             C   s   |  j  j d t  d  S)Nr   )r   r   rO  )r?   r   r@   r@   rA   r     s    zConfigDialog.KeyBindingSelectedc       
      C   s#  |  j  j   r! |  j j   } n |  j j   } t j |  } i  } x; | D]3 } | d d  } d j | |  } | | | <qL W| |  j d k r |  j d | } x | D] } | | | | <q W|  j | |  t j	 d d  }	 |	 j
   |  j j |	 |  |  j  j d  |  j   d  S)NrX   r   r;  r_  r   )r   r0  r   r   r   ZGetCoreKeysjoinrC  SaveNewKeySetrH  sortr  SetMenur   r  )
r?   ZnewKeySetNameZprevKeySetNameZprevKeysr\  r   Z	eventNamerY  r[  ZcustomKeyListr@   r@   rA   rV    s&    
zConfigDialog.CreateNewKeySetc       	      C   s9  d } d } |  j  j   r3 d } |  j  j t  } t j |  } t | j    } | j   |  j  j	 d t
  x | D] } d j | |  } | d d  } | |  j d k r | |  j d | k r |  j d | | } |  j  j t
 | d |  qx W| r5|  j  j |  |  j  j |  |  j  j |  d  S)Nr   rj   r   rX   r;  z - ra  )r   curselectionrP  r=  r   Z	GetKeySetr   r;  rd  rW  r   rb  rC  r   seerT  rU  )	r?   
keySetNameZreselectr^  rX  r?  Z	bindNamesrZ  keyr@   r@   rA   r@    s(    
zConfigDialog.LoadKeysListc             C   sO  |  j  j   } d } t j d | | d |  s5 d  S|  j   t j d j |  | |  j d k rt |  j d | =t j d j	   t j
 d d  } | j   | s |  j j d t  |  j j | d  n |  j j | | d  |  j j t j d	 j d
 d   |  j j t j d	 j d
 d   |  j   |  j   |  j   d  S)Nz0Are you sure you wish to delete the key set %r ?zDelete Key Setr3   r;  r_  r   z- no custom keys -r   r.  rC   r9  r6  )r   r0  tkMessageBoxaskyesnoDeactivateCurrentConfigr   userCfgremove_sectionrC  SaverH  rd  r  r   r   r  re  r   r   rI  rK  r   SaveAllChangedConfigsActivateConfigChangesr  )r?   rh  delmsgitemListr@   r@   rA   r    s*    

##

zConfigDialog.DeleteCustomKeysc             C   sO  |  j  j   } d } t j d | | d |  s5 d  S|  j   t j d j |  | |  j d k rt |  j d | =t j d j	   t j
 d d  } | j   | s |  j j d t  |  j j | d  n |  j j | | d  |  j j t j d	 j d
 d   |  j j t j d	 j d
 d   |  j   |  j   |  j   d  S)Nz.Are you sure you wish to delete the theme %r ?zDelete Themer3   rB  r_  r   z- no custom themes -r   r.  r5  r9  r6  )r   r0  rj  rk  rl  r   rm  rn  rC  ro  rH  rd  r   r   r   r   re  r   r   rI  rK  r   rp  rq  r   )r?   	themeNamerr  rs  r@   r@   rA   r   	  s*    

##

zConfigDialog.DeleteCustomThemec             C   s   |  j  j   } |  j j d  } t j d |  d d | d |  \ } } | r | | k r |  j j   r d } |  j |  } | s d  S|  j |  |  j	 j
 |  n |  j	 j
 |  d  S)Nbgr3   r6   zPick new colour for : Zinitialcolorz_Your changes will be saved as a new Custom Theme. Enter a name for your new Custom Theme below.)r   r0  r   ZcgettkColorChooserZaskcolorr   GetNewThemeNameCreateNewThemer   r   )r?   targetZ
prevColourZ	rgbTupletZcolourStringr]  newThemer@   r@   rA   r   &  s    	zConfigDialog.GetColourc             C   s   |  j  j   } |  j j d |  |  j j   r7 d n d } |  j |  j j   d } |  j j | | | i  |  j	 j   } | d | } |  j
 d | | |  d  S)Nru  
foreground
backgroundr   -rB  )r   r0  r   r   r   r7   r   r   
tag_configr   r1  )r?   Z	newColourplaneZsampleElementthemeZthemeElementr@   r@   rA   r4  :  s    zConfigDialog.OnNewColourSetc             C   s>   t  j d d  t  j d d  } t |  d | |  j } | S)Nr_  rB  r9  zNew Custom Theme)r   rH  r   rR  )r?   r]  r`  rz  r@   r@   rA   rw  D  s
    zConfigDialog.GetNewThemeNamec             C   s&   |  j  d  } | r" |  j |  d  S)NzNew Theme Name:)rw  rx  )r?   newThemeNamer@   r@   rA   r   K  s    zConfigDialog.SaveAsNewThemec             C   s   |  j  j   r' d } |  j j   } n d } |  j j   } t j | |  } | |  j d k r |  j d | } x | D] } | | | | <qy W|  j | |  t j d d  } | j	   |  j
 j | |  |  j  j d  |  j   d  S)Nr9  r_  rB  r   )r   r0  r   r   r   ZGetThemeDictrC  SaveNewThemerH  rd  r   re  r   r   )r?   r  Z	themeTypert  rz  ZthemeChangesr   ZcustomThemeListr@   r@   rA   rx  P  s     
zConfigDialog.CreateNewThemec             C   s6   |  j  j t  } |  j j | j    |  j   d  S)N)r~   r0  r=  rt   r   lowerr   )r?   r   rl   r@   r@   rA   r   h  s    z$ConfigDialog.OnListFontButtonReleaseNc             C   sr   |  j  j   } |  j j   r' t j n t j } | |  j j   | f } |  j j d |  |  j	 j
 d |  d  S)Nrl   )rt   r0  rs   rw   ZBOLDrO  rq   r   r   r   r5   )r?   r   rt   Z
fontWeightZnewFontr@   r@   rA   r   m  s
    !zConfigDialog.SetFontSamplec             C   s   |  j  j   d k rN |  j j d t  |  j j d t  |  j j d  n6 |  j j d t  |  j j d t  |  j j d  |  j	   d  S)Nr"   r   rj   )
r   r0  r   r   r   r   r   r   rO  SetColourSample)r?   r@   r@   rA   r:  t  s    zConfigDialog.SetHighlightTargetc             G   s   |  j    d  S)N)r  )r?   argsr@   r@   rA   r     s    z#ConfigDialog.SetColourSampleBindingc             C   sa   |  j  |  j j   d } |  j j   r/ d n d } |  j j | |  } |  j j d |  d  S)Nr   r{  r|  ru  )r7   r   r0  r   r   Ztag_cgetr   r   )r?   tagr  r   r@   r@   rA   r    s    zConfigDialog.SetColourSamplec             C   s  |  j  j   r! |  j j   } n |  j j   } x |  j D] } |  j | d } t j | |  } | d k r t j | d d d | d <| |  j d k r |  j d | } | d | k r | | d | d	 <| d
 | k r | | d
 | d <|  j j	 | |  q: W|  j
   d  S)Nr   r#   r   ZfgBgru  r|  rB  z-foregroundr{  z-background)r   r0  r   r   r7   r   ZGetHighlightrC  r   r~  r  )r?   r  ZelementTitler   ZcoloursZ	themeDictr@   r@   rA   r8    s"    zConfigDialog.PaintThemeSamplec             C   s   |  j    d  S)N)SetHelpListButtonStates)r?   r   r@   r@   rA   r    s    zConfigDialog.HelpSourceSelectedc             C   s   |  j  j   d k  r> |  j j d t  |  j j d t  n^ |  j  j   rv |  j j d t  |  j j d t  n& |  j j d t  |  j j d t  d  S)Nrj   r   )r  sizer  r   r   r  rf  rO  )r?   r@   r@   rA   r    s    z$ConfigDialog.SetHelpListButtonStatesc             C   se   t  |  d  j } | rW |  j j | d | d f  |  j j t | d  |  j   |  j   d  S)NzNew Help Sourcer   rj   )	r   rR  userHelpListappendr  r   r   UpdateUserHelpChangedItemsr  )r?   
helpSourcer@   r@   rA   r    s    
zConfigDialog.HelpListItemAddc             C   s   |  j  j t  } |  j | } t |  d d | d d | d j } | sX | | k r\ d  S| |  j | <|  j  j |  |  j  j | | d  |  j   |  j	   d  S)NzEdit Help SourceZmenuItemr   ZfilePathrj   )
r  rP  r=  r  r   rR  rW  r   r  r  )r?   	itemIndexr  ZnewHelpSourcer@   r@   rA   r    s    
zConfigDialog.HelpListItemEditc             C   sD   |  j  j t  } |  j | =|  j  j |  |  j   |  j   d  S)N)r  rP  r=  r  rW  r  r  )r?   r  r@   r@   rA   r    s
    

zConfigDialog.HelpListItemRemovec          	   C   sv   i  |  j  d d <x^ t d t |  j  d  D]@ } |  j d d t |  d j |  j | d d d    q. Wd S)z<Clear and rebuild the HelpFiles section in self.changedItemsr.  	HelpFilesrj   ;NrX   )rC  r  lenr  r1  rD  rb  )r?   Znumr@   r@   rA   r    s
    #z'ConfigDialog.UpdateUserHelpChangedItemsc       	      C   s.  t  t j |    } | j   x! | D] } |  j j t |  q& Wt j |  d d  } | d j	   } | d } | d d k } |  j
 j |  d d   | D } yC | j |  } |  j j |  |  j j |  |  j j |  Wn t k
 r Yn X|  j j d |  |  j j |  |  j   d  S)Nr.  r/  r   rj   rX   Zboldc             S   s   g  |  ] } | j     q Sr@   )r  )r   sr@   r@   rA   r     s   	 z,ConfigDialog.LoadFontCfg.<locals>.<listcomp>789r(   r*   r,   r.   1416182022)r  r  r  r(   r*   r,   r.   r  r  r  r  r  )r   rw   Zfamiliesrd  r~   r   r   r   ZGetFontr  rt   r   rP  rg  rT  rU  
ValueErrorr   re  rs   r   )	r?   Zfontsrl   ZconfiguredFontrt   rq   rs   Zlc_fontsZcurrentFontIndexr@   r@   rA   LoadFontCfg  s*    

	
zConfigDialog.LoadFontCfgc             C   s5   t  j d d d d d d d } |  j j |  d  S)Nr.  r3  z
num-spacesr9  r   typeint)r   r7  rv   r   )r?   rv   r@   r@   rA   
LoadTabCfg  s    zConfigDialog.LoadTabCfgc          	      s    j  j t j d d d d d d d  t j   }   j  j   r t j d d  } | j     j j	 | |  t j d d  } | j   | s   j
 j d	 t    j j d
  q9  j j	 | | d  nb t j d d  } | j     j j	 | |  t j d d  } | j     j j	 | | d    j   t   j j    } | j d   f d d      j j	 | | d    j     j   d  S)Nr.  r5  r9  r  boolrj   rB  r_  r   z- no custom themes -r   ri  c                s     j  |  d S)Nrj   )r7   )x)r?   r@   rA   r     s    z+ConfigDialog.LoadThemeCfg.<locals>.<lambda>)r   r   r   r7  ZCurrentThemer0  rH  rd  r   re  r   r   r   r   r   r   r   r7   r;  r   r8  r:  )r?   currentOptionrs  Z
themeNamesr@   )r?   rA   LoadThemeCfg  s2    





zConfigDialog.LoadThemeCfgc          	   C   s`  |  j  j t j d d d d d d d  t j   } |  j  j   r t j d d  } | j   |  j j	 | |  t j d d  } | j   | s |  j
 j d	 t  |  j j d
  q9|  j j	 | | d  nb t j d d  } | j   |  j j	 | |  t j d d  } | j   |  j j	 | | d  |  j   t j   } |  j |  d  S)Nr.  rC   r9  r  r  rj   r;  r_  r   z- no custom keys -r   )r   r   r   r7  ZCurrentKeysr0  rH  rd  r  re  r  r   r   r   r  r  r@  )r?   r  rs  rh  r@   r@   rA   
LoadKeyCfg  s,    




zConfigDialog.LoadKeyCfgc          	   C   s  |  j  j t j d d d d d d d  |  j j t j d d d d d	 d d  |  j j t j d d
 d d d  |  j j t j d d
 d d d  |  j j t j d d
 d d d  t j   |  _	 x( |  j	 D] } |  j
 j t | d	  q W|  j   d  S)Nr.  rD   zeditor-on-startupr9  rj   r  r  rA  r   r/  r0   r  r/   r  Znone)r  r   r   r7  r  r  r  r  ZGetAllExtraHelpSourcesListr  r  r   r   r  )r?   ZhelpItemr@   r@   rA   LoadGeneralCfg2  s    zConfigDialog.LoadGeneralCfgc             C   s6   |  j    |  j   |  j   |  j   |  j   d S)z
        load configuration from default and user config files and populate
        the widgets on the config dialog pages.
        N)r  r  r  r  r  )r?   r@   r@   rA   r=   G  s
    



zConfigDialog.LoadConfigsc             C   sc   t  j d j |  s* t  j d j |  x2 | D]* } | | } t  j d j | | |  q1 Wd S)z
        save a newly created core key set.
        keySetName - string, the name of the new key set
        keySet - dictionary containing the new key set
        r;  N)r   rm  has_sectionadd_section	SetOption)r?   rh  r?  r   r   r@   r@   rA   rc  W  s
    
zConfigDialog.SaveNewKeySetc             C   sc   t  j d j |  s* t  j d j |  x2 | D]* } | | } t  j d j | | |  q1 Wd S)z
        save a newly created theme.
        themeName - string, the name of the new theme
        theme - dictionary containing the new theme
        rB  N)r   rm  r  r  r  )r?   rt  r  r   r   r@   r@   rA   r  c  s
    
zConfigDialog.SaveNewThemec             C   si   t  j | j | |  rO t  j | j | |  | k rO t  j | j | |  St  j | j | | |  S)N)r   rI  Z
has_optionrK  rm  RemoveOptionr  )r?   rL  rF  rG  r   r@   r@   rA   SetUserValueo  s    zConfigDialog.SetUserValuec             C   s  t  j d j   x |  j D] } d } x |  j | D]{ } | d k ra t  j d j d  d } xL |  j | | D]9 } |  j | | | } |  j | | | |  rs d } qs Wq5 W| r t  j | j   q Wx% d d g D] } t  j | j   q W|  j   |  j   d S)z3Save configuration changes to the user config file.r.  Fr  Tr;  rB  N)r   rm  ro  rC  rn  r  r8   save_all_changed_extensions)r?   rL  ZcfgTypeHasChangesrF  rG  r   r@   r@   rA   rp  w  s"    
z"ConfigDialog.SaveAllChangedConfigsc             C   s1   |  j  j j   } x | D] } | j   q Wd  S)N)r3   r4   r;  ZRemoveKeybindings)r?   winInstancesinstancer@   r@   rA   rl    s    z$ConfigDialog.DeactivateCurrentConfigc             C   sY   |  j  j j   } x@ | D]8 } | j   | j   | j   | j   | j   q Wd S)z'Dynamically apply configuration changesN)r3   r4   r;  ZResetColorizerZ	ResetFontZset_notabs_indentwidthZApplyKeybindingsZreset_help_menu_entries)r?   r  r  r@   r@   rA   rq    s    



z"ConfigDialog.ActivateConfigChangesc             C   s   |  j    d  S)N)destroy)r?   r@   r@   rA   r;     s    zConfigDialog.Cancelc             C   s   |  j    |  j   d  S)N)rZ   r  )r?   r@   r@   rA   rY     s    
zConfigDialog.Okc             C   s"   |  j    |  j   |  j   d  S)N)rl  rp  rq  )r?   r@   r@   rA   rZ     s    

zConfigDialog.Applyc          	   C   s6   |  j  j } t |  d d d t t j | d  d  S)Nr6   zHelp for IDLE preferencesr\   r   )r<   Z_current_pager	   help_common
help_pagesr0  )r?   Zpager@   r@   rA   r[     s    zConfigDialog.Helpc          
   C   s  |  j  } |  j j d j } t j d |  _ t j d |  _ |  j	 t
  |  _
 |  j   t |   |  _ | j d d d | j d d d t | d |  j d d	 |  _ |  j j d
 |  j  t | d |  j j } | j |  j _ t | d d d d |  _ |  j j d d d d d d  | j d d d d d d  |  j j d d d d d d d d d g  | j d d d d  i  |  _ d |  _ |  |  _ |  j |  _ d } x6 t  |  j!  D]% } |  j" |  | d | d } qW|  j j |  |  j j# d  |  j d  d S)a  Part of the config dialog used for configuring IDLE extensions.

        This code is generic - it works for any and all IDLE extensions.

        IDLE extensions save their configuration options using idleConf.
        This code reads the current configuration using idleConf, supplies a
        GUI interface to change the configuration values, and saves the
        changes using idleConf.

        Not all changes take effect immediately - some may require restarting IDLE.
        This depends on each extension's implementation.

        All values are treated as text, and it is up to the user to supply
        reasonable values. The only exception to this are the 'enable*' options,
        which are boolean, and can be toggled with a True/False button.
        rE   r<  r   r   rj   rX   ZlistvariableZ
selectmodeZbrowsez<<ListboxSelect>>r]   r0      r/   r   r   r   ZnwsnsnsewrT   rd   rV   Nr   {z} )$r3   r<   rx   ry   r   rI  ext_defaultCfgrm  ext_userCfgregisteris_intload_extensionsrp   Zextension_namesr
  r	  r}   extension_listr   extension_selectedr   r   r   rg   rz   details_framer  r5   config_framecurrent_extensionZ
outerframeZtabbed_page_setsortedr<  create_extension_frameZselection_set)r?   r3   ry   ZscrollZ	ext_namesext_namer@   r@   rA   rQ     s<    	
+			z!ConfigDialog.CreatePageExtensionsc       
   #   C   s  i  |  _  x' t j d d  D] } g  |  j  | <q Wx|  j  D]} t |  j j |   } d d   | D } x | D] } | j |  qu W| | } x,| D]$} |  j j | | d d } y  d d d d i | } d	 } WnI t k
 r)y t	 |  } d
 } Wn t
 k
 r$| } d } Yn XYn Xy+ |  j j | | d | d d d | } Wn t
 k
 ro| } Yn Xt |   }	 |	 j t |   |  j  | j d | d | d | d | d |	 i  q Wq= Wd S)zAFill self.extensions with data from the default and user configs.Zactive_onlyFc             S   s%   g  |  ] } | j  d   r |  q S)enable)
startswith)r   opt_namer@   r@   rA   r     s   	 z0ConfigDialog.load_extensions.<locals>.<listcomp>rawTTrueFalser  r  Nr  r9  r6  r   r,  )r<  r   ZGetExtensionsr  r  rJ  removerK  KeyErrorr  r  r  rp   r   rD  r  )
r?   r  Zopt_listZenablesr  Zdef_strZdef_objZopt_typer   r,  r@   r@   rA   r    sF    	
	

	zConfigDialog.load_extensionsc             C   s   |  j  j   } | r' |  j  j |  } | d  k sB | |  j k r{ |  j r{ |  j j d d  |  j |  j j   d  |  _ | r |  j j d |  |  j | j d d d d d d  | |  _ d  S)Nr\   r   r   r   r   r   r  )	r  rf  r0  r  r  r   r  Zgrid_forgetr  )r?   r   Znewselr@   r@   rA   r    s    		#zConfigDialog.extension_selectedc             C   s~  t  |  j d d d d } | |  j | <| j } xFt |  j |  D]1\ } } t | d | d } | j d | d d d	 t  | d
 } | d d k r t	 | d | d | d d d d d t
 d d d d j d | d d d	 t d d  qE | d d k rHt | d | d d d |  j d f j d | d d d	 t d d  qE t | d | j d | d d d	 t d d  qE Wd S) z=Create a frame holding the widgets to configure one extensionr/   r  r0   r\   r6  r   r   r   r   r,  r  r  r  rh   ri   r  rk   r  ZindicatoronZselectcolorr   r   rj   rT      r  Zvalidateri  Zvalidatecommandz%PN)VerticalScrolledFramer  r  interior	enumerater<  r|   r  NWr   r:   r   r  r  r  )r?   r  fZ
entry_arear   optZlabelr,  r@   r@   rA   r    s&    	 
z#ConfigDialog.create_extension_framec             C   sv   | d } | d } | d j    j   p- | } | d j |  | | k r` |  j j | |  S|  j j | | |  S)Nr6  r9  r,  )r0  stripr   r  r  r  )r?   rF  r  r6  r9  r   r@   r@   rA   set_extension_value9  s    

z ConfigDialog.set_extension_valuec             C   sg   d } xG |  j  D]< } |  j  | } x& | D] } |  j | |  r* d } q* Wq W| rc |  j j   d S)z3Save configuration changes to the user config file.FTN)r<  r  r  ro  )r?   Zhas_changesr  rM  r  r@   r@   rA   r  E  s    z(ConfigDialog.save_all_changed_extensions)P__name__
__module____qualname__r2   r9   rR   rM   rN   rO   rP   r>   r-  r  r  r  r  r   r!  r"  r#  r$  r%  r&  r'  r(  r)  r*  r+  r8   r1  rN  r   r  r   rS  r  r   rV  r@  r  r   r   r4  rw  r   rx  r   r   r:  r   r  r8  r  r  r  r  r  r  r  r  r  r  r  r=   rc  r  r  rp  rl  rq  r;   rY   rZ   r[   rQ   r  r  r  r  r  r@   r@   r@   rA   r      s   5DoM`	$
!
5-r   ah  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. Some do not take affect until IDLE is restarted.
[Cancel] only cancels changes made since the last save.
rB   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.
c             C   s9   |  s
 d Sy t  |   d SWn t k
 r4 d SYn Xd S)z(Return 's is blank or represents an int'TFN)r  r  )r  r@   r@   rA   r  c  s    
r  c               @   s"   e  Z d  Z d Z d d   Z d S)r  zA pure Tkinter vertically scrollable frame.

    * Use the 'interior' attribute to place widgets inside the scrollable frame
    * Construct and pack/place/grid normally
    * This frame only allows vertical scrolling
    c          
      s6  t  j |  | | |  t |  d t } | j d t d t d t  t |  d d d d d | j	 d	 d
     j d t
 d t d t  | j d   j    j d    j d  t     |  _    j d d d  d t     f d d   }  j d |      f d d   }   j d |  d  S)Nrm   rH   rF   rG   r   r   r   rg   r0      r]   Zwindowro   c                s0    j     j   f }   j d d |  d  S)NZscrollregionz	0 0 %s %s)winfo_reqwidthZwinfo_reqheightr   )r   r  )canvasr  r@   rA   _configure_interior  s    z;VerticalScrolledFrame.__init__.<locals>._configure_interiorz<Configure>c                s5    j      j   k r1   j  d   j   d  S)Nr0   )r  Zwinfo_widthZitemconfigure)r   )r  r  interior_idr@   rA   _configure_canvas  s    z9VerticalScrolledFrame.__init__.<locals>._configure_canvas)r_   r2   r   ZVERTICALrI   r   r   r:   ZCanvasr   ra   rL   rK   r   r   Zxview_movetoZyview_movetor  Zcreate_windowr  r   )r?   r3   r  kwZ
vscrollbarr  r  r@   )r  r  r  rA   r2   u  s     zVerticalScrolledFrame.__init__N)r  r  r  __doc__r2   r@   r@   r@   rA   r  n  s   r  __main__z#idlelib.idle_test.test_configdialog	verbosityrX   exitF)run)'r  ZtkinterZtkinter.messageboxZ
messageboxrj  Ztkinter.colorchooserZcolorchooserrv  Ztkinter.fontrl   rw   Zidlelib.configHandlerr   Zidlelib.dynOptionMenuWidgetr   Zidlelib.keybindingDialogr   Zidlelib.configSectionNameDialogr   Zidlelib.configHelpSourceEditr   Zidlelib.tabbedpagesr   Zidlelib.textViewr	   Zidlelibr
   r1   r   r  r  r  r_   r  r  Zunittestr.  Zidlelib.idle_test.htestr  r@   r@   r@   rA   <module>   s:   
     C	+