Your IP : 52.15.176.138
�
`Ofc@sNdZddlTddlZddlZddlZddlmZddlmZddl m
Z
ddlmZddl
mZdd lmZdd
lmZddlmZdefd
��YZdZidd6Zd�Zdefd��YZedkrJddlZejdddde�ddl m!Z!e!e�ndS(s�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.
i����(t*N(tidleConf(t
DynOptionMenu(t
GetKeysDialog(tGetCfgSectionNameDialog(tGetHelpSourceDialog(t
TabbedPageSet(t view_text(t
macosxSupporttConfigDialogcBs�eZdeed�Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z
d �Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z!d �Z"d!�Z#d"�Z$d#�Z%d$�Z&d%�Z'd&�Z(d'�Z)d(�Z*d)�Z+d*�Z,d+�Z-d,�Z.dNd-�Z0d.�Z1d/�Z2d0�Z3d1�Z4d2�Z5d3�Z6d4�Z7d5�Z8d6�Z9d7�Z:d8�Z;d9�Z<d:�Z=d;�Z>d<�Z?d=�Z@d>�ZAd?�ZBd@�ZCdA�ZDdB�ZEdC�ZFdD�ZGdE�ZHdF�ZIdG�ZJdH�ZKdI�ZLdJ�ZMdK�ZNdL�ZOdM�ZPRS(OtcCs�tj||�||_|r+i|_n|j�|jdd�|j|pTd�|jd|j�d|j �|s�dndf�id6d
6d7d
6d8d6d9d6d:d6d;d6d<d6d=d6d>d"6d?d%6d@d(6dAd+6dBd.6dCd16|_
|j�|j�|j
d2td3t�|j|�|j�|jd4|j�|jj�|j�|j�|s�|j�|j�nd5S(Ds�
_htest - bool, change box location when running htest
_utest - bool, don't wait_window when running unittest
tborderwidthisIDLE Preferencess+%d+%diii�tnormalt00sNormal Texttkeywordt01sPython Keywordst
definitiont02sPython Definitionstbuiltint03sPython Builtinstcommentt04sPython Commentststringt05sPython Stringsthilitet06s
Selected Textthitt07s
Found Texttcursort08tCursortbreakt09sEditor Breakpointtconsolet10sShell Normal Textterrort11sShell Error Texttstdoutt12sShell Stdout Texttstderrt13sShell Stderr TexttheighttwidthtWM_DELETE_WINDOWN(RR
(RR(RR(RR(RR(RR(RR(RR(RR(RR (R!R"(R#R$(R%R&(R'R((tToplevelt__init__tparentt
instance_dicttwm_withdrawt configurettitletgeometrytwinfo_rootxtwinfo_rootyt
themeElementstResetChangedItemst
CreateWidgetst resizabletFALSEt transienttgrab_settprotocoltCancelttabPagest focus_settLoadConfigstAttachVarCallbackstwm_deiconifytwait_window(tselfR.R2t_htestt_utest((s,/usr/lib64/python2.7/idlelib/configDialog.pyR-sJ
!
cCs�t|ddddddg�|_|jjdtdtd t�|j�|j�|j�|j �|j
�|j�jdt�dS(
Nt
page_namess
Fonts/TabstHighlightingtKeystGeneralt
Extensionstsidetexpandtfill(
RR?tpacktTOPtTRUEtBOTHtCreatePageFontTabtCreatePageHighlighttCreatePageKeystCreatePageGeneraltCreatePageExtensionstcreate_action_buttonstBOTTOM(RE((s,/usr/lib64/python2.7/idlelib/configDialog.pyR8Os
c
Cs�tj�ri}nidd6dd6}t|dd�}t|dd�}xud|jfd|jfd|jfd |jffD]=\}}t|d
|d|dt|�j d
t
dd�q�Wt|dddd�j d
t�|j d
t�|S(NitpadxitpadyitOktApplyR>tHelpttexttcommandt takefocusRMiR)Ri(
RtisAquaTktFrameR]R^R>R_tButtonR:RPtLEFTRQRZ(REtpaddingArgstoutertbuttonsttxttcmd((s,/usr/lib64/python2.7/idlelib/configDialog.pyRY[s "cCs�|j}t|�|_t|�|_t|�|_t|�|_tj |d+�|_
|jjdj
}t|dddtdd �}t|dddtdd
�}t|�}t|�}t|dtdd�}t|d
ddtdt�|_|jjd|j�t|�}|jd|jj�|jjd|j�t|dd�} t||jdd|j�|_t |d|jddddddd|j�}
t|dt!dd�}t|dtd|j
dd�|_"t|�}t|dtdd�}
t#|d|jddd dd!dd"d#�|_$|j%d$td%dd&dd't&d(t'�|j%d$td%dd&dd(t(�|j%d$t)d%dd&dd(t*�|j%d$t)d%dd&dd(t*�|j%d$t)d)t+�|jj%d$td't&d(t*�|j%d$td(t(�| j%d$td)t+�|jj%d$td)t+�|
j%d$td)t+d%d*�|j%d$t)d%dd&dd'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%dd(t*�|S(,Ntcourieri
Rs
Fonts/TabsRitreliefR`s Base Editor Font s Indentation Width tjustifysFont Face :R)iRbtexportselections<ButtonRelease-1>RatyscrollcommandsSize :tvariabletonvalueitoffvalueitBoldtfonts,AaBbCcDdEe
FfGgHhIiJjK
1234567890
#:+=(){}[]sPython Standard: 4 Spaces!torientt
horizontalttickintervaltfrom_ttoiRMR[R\RNROtanchori(Rli
R(,R.t StringVartfontSizet
BooleanVartfontBoldtfontNametIntVartspaceNumttkFonttFontteditFontR?tpagestframet
LabelFrametGROOVERdtLabelRftListboxR:tlistFontNametbindtOnListFontButtonReleaset ScrollbartconfigtyviewtsetRtNonet
SetFontSampletoptMenuFontSizetCheckbuttontSOLIDtlabelFontSampletScalet
scaleSpaceNumRPRRRStYRQtXtW(RER.R�t frameFonttframeIndentt
frameFontNametframeFontParamtlabelFontNameTitlet
scrollFonttlabelFontSizeTitlet
checkFontBoldtframeFontSampletframeIndentSizetlabelSpaceNumTitle((s,/usr/lib64/python2.7/idlelib/configDialog.pyRTpsn
("""(c!CsB|j}t|�|_t|�|_t|�|_t|�|_t|�|_t|�|_t|�|_ |j
jdj}t
|dddtdd�}t
|dddtdd�}t|dtddd dZd
ddddddtdddt� |_|j}|jdd��|jdd��d[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzf }x)|D]!}|jt|d|d�q�Wx;|jD]0}|dA�} |j|j|ddB| �q�W|jdCt�t|dtdd�|_t|�}
t|jddDdE|jdd�}t|j|j ddd�|_!t"|
dF|jdGdddHdE|j#�|_$t"|
dF|jdGdddIdE|j#�|_%|jj&d�t|ddJdE|j'�}t(|ddK�}
t"|dF|jdGddE|j)ddL�|_*t"|dF|jdGddE|j)ddM�|_+t||jddEd�|_,t||jddEd�|_-t|ddNdE|j.�|_/t(|dOd�|_0|j1dPt2dQdRdSdRdTt3dUt4�|j1dPt2dQdRdSdRdUt5�|jj1dPt6dQdRdSdRdTt3dUt7�|
j1dPt6dQdRdSd�|jj1dPt6dQdRdSdRdTt3dUt4�|j1dPt6dTt3dUt7dQdVdSdW�|j!j1dPt6dTt3dUt7dQdVdSdX�|j$j1dPt2dYt8�|j%j1dPt9dYt:�|j1dPt;dUt7dQdRdSdR�|
j1dPt6dYt:dQdRdSdR�|j*j1dPt6dYt:dQdR�|j+j1dPt6dYt:dQdRdSd�|j,j1dPt6dUt7dQdRdSdR�|j-j1dPt6dUt7dYt:dQdRdSdR�|j/j1dPt6dUt7dQdRdSdR�|j0j1dPt6dUt7dSdR�|S({NRIRiRmR`s Custom Highlighting s Highlighting Theme iRuRliR
Rthand2R*iR)iRbthighlightthicknessitwraps<Double-Button-1>cSsdS(NR((te((s,/usr/lib64/python2.7/idlelib/configDialog.pyt<lambda>�R
s<B1-Motion>cSsdS(NR((R�((s,/usr/lib64/python2.7/idlelib/configDialog.pyR��R
s#you can click hereRs
Rs#to choose itemstdefRt tfuncRs(param):
s"""string"""Rs
var0 = s'string's
var1 = s
'selected'Rs
var2 = s'found'Rs
var3 = tlistRt(R�s)
s breakpoint("line")Rs
s error R#scursor |s
tshellR!R%R'cSs|jj�jj|�dS(N(twidgettwinfo_toplevelthighlightTargetR�(teventtelem((s,/usr/lib64/python2.7/idlelib/configDialog.pyttem�ss<ButtonPress-1>tstatesChoose Colour for :RaRqtvaluet
Foregroundt
BackgroundsSave as New Custom Themes Select : sa Built-in Themesa Custom ThemesDelete Custom ThemetbdRMR[iR\RNROiiiR{(RliR
(s#you can click hereR(s
R(s#to choose itemsR(s
R(R�R(R�R(R�R(s(param):
R(s"""string"""R(s
var0 = R(s'string'R(s
var1 = R(s
'selected'R(s
var2 = R(s'found'R(s
var3 = R(R�R(R�R(R�R(s)
R(s breakpoint("line")R(s
R(s error R#(R�R(scursor |R(s
R(R�R!(R�R(R%R%(R�R(R'R'(s
R(<R.R|tbuiltinThemetcustomThemeR~tfgHilitetcolourR�tthemeIsBuiltinR�R?R�R�R�R�tTextR�R:tNONEttextHighlightSampleR�tinserttENDR6ttag_bindR�tDISABLEDRdtframeColourSetRet GetColourRR�toptMenuHighlightTargettRadiobuttontSetColourSampleBindingtradioFgtradioBgR�tSaveAsNewThemeR�tSetThemeTypetradioThemeBuiltintradioThemeCustomtoptMenuThemeBuiltintoptMenuThemeCustomtDeleteCustomThemetbuttonDeleteCustomThemetnew_custom_themeRPRfRRRSR�RQR�tEtRIGHTR�RZ(RER.R�tframeCustomt
frameThemeR`ttextAndTagsttxTatelementR�t frameFgBgtbuttonSetColourtbuttonSaveCustomThemetlabelTypeTitle((s,/usr/lib64/python2.7/idlelib/configDialog.pyRU�s�
("+(""%%+%cCs�|j}t|�|_t|�|_t|�|_t|�|_t|�|_|jj dj
}t|dddtdd�}t|dddtdd�}t
|�}t|dd�}t|�}t|d t�}t|d
tdt�|_|jjd|j�|jd
|jj�|jd
|jj�|jjd|j�|jjd|j�t|ddd
|jdt�|_gtd�D]$} t
|dddddd�^q�}
t|
dd|jddd
|j dd�|_!t|
dd|jddd
|j dd�|_"t#|
d|jdd
d�|_%t#|
d|jdd
d�|_&t|
dddd
|j'�|_(t|
dddd
|j)�}|j*dt+dddddt,dt-�|j*dt+dddddt-�|jj*dt+dt.dddd�|j*dt/dddddt,dt-�|j0dd d�|j1dd d�|j2d!dd"dd#dd$t3�|jj2d!dd"dd$t4�|j2d!dd"dd$t5�|j2d!dd"dd$t6�|j!j2d!dd"dd$t3t5�|j"j2d!dd"dd$t3t5�|j%j2d!dd"dd$t4�|j&j2d!dd"dd$t4�|j(j*dt/dt.dt7dd�|j*dt/dt.dt7dd�|
dj*dt8dt-dt7�|
dj*dt8dt.dt7dd�|S(%NRJRiRmR`s Custom Key Bindings s Key Set sAction - Key(s)RvRbRos<ButtonRelease-1>RaRptxscrollcommandsGet New Keys for SelectionR�R[R\iRqR�isUse a Built-in Key SetsUse a Custom Key SetsDelete Custom Key SetsSave as New Custom Key SetRMiRNROtweighttrowtcolumnt
columnspantsticky(9R.R|t
bindingTargettbuiltinKeyst
customKeysR~tkeysAreBuiltint
keyBindingR?R�R�R�R�RdR�R�t
HORIZONTALR�R:tlistBindingsR�tKeyBindingSelectedR�R�txviewR�Ret
GetNewKeysR�t
buttonNewKeystrangeR�tSetKeysTypetradioKeysBuiltintradioKeysCustomRR�toptMenuKeysBuiltintoptMenuKeysCustomtDeleteCustomKeystbuttonDeleteCustomKeystSaveAsNewKeySetRPRZRRRSR�RftcolumnconfiguretrowconfiguretgridR�tNSEWtNStEWtTrueRQ(RER.R�R�tframeKeySetstframeTargettlabelTargetTitlet
scrollTargetYt
scrollTargetXtitframestbuttonSaveCustomKeys((s,/usr/lib64/python2.7/idlelib/configDialog.pyRV#s~ 4("%("##%" &cCs1|j}t|�|_t|�|_t|�|_t|�|_t|�|_t|�|_ t|�|_
|jjdj
}t|dddtdd�}t|dddtdd�}t|dddt�}t|dddt�}t|dddtdd�}t|dd �}t|d
|jddd
|jdd�} t|d
|jddd
|jdd�}
t|dd�}t|d
|jddd
|jdd�}t|d
|jddd
|jdd�}
t|dd�}t|dd�}t|d|jdd�}t|dd�}t|d|jdd�}t|dd�}t|d
|jdddd�}t|d
|jdddd�}t|d
|jdddd �}t|�}t|�}t|�}t|d!d"d#td$t�|_|jd
|jj�|jjd%|j�|jjd&|j�t|dd'd(tdd)d
|j �|_!t|dd*dd)d
|j"�|_#t|dd+d(tdd)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(�|j&d,t'd-d"d.d"d0t)d/t*�|j&d,t+d1t,d-d"d.d"�|
j&d,t-d1t,d-d"d.d"�| j&d,t-d1t,d-d"d.d"�|j&d,t+d1t,d-d"d.d"�|
j&d,t-d1t,d-d"d.d"�|j&d,t-d1t,d-d"d.d"�|j&d,t+d1t,d-d"d.d"�|j&d,t-d1t.d-d2d.d"�|j&d,t-d1t.d.d"�|j&d,t-d1t.d-d2d.d"�|j&d,t-d1t.d.d"�|j&d,t+d1t,d-d"d.d"�|j&d,t-d1t.d.d"�|j&d,t-d1t.d.d"�|j&d,t-d1t.d.d"�|j&d,t-d-d"d.d"d/t/�|j&d,t'd-d"d.d"d0t)d/t*�|j&d,t-d1t,d/t/�|jj&d,t+d1t.d0t)d/t*�|j!j&d,t'd1t,d.d"�|j#j&d,t'd1t,�|j%j&d,t'd1t,d.d"�|S(3NRKRiRmR`s Startup Preferences s Autosave Preferences s Additional Help Sources s
At StartupRqR�iRasOpen Edit WindowisOpen Shell WindowsAt Start of Run (F5) sPrompt to Saves No Prompts$Initial Window Size (in characters)tWidthttextvariableR*itHeightsDefault Source EncodingtlocalesLocale-definedsutf-8sUTF-8tnoneR�R)iRbRoRps<ButtonRelease-1>tEditR�itAddtRemoveRMR[R\RORNR{i
(0R.R|twinWidtht winHeightR�tstartupEdittautoSavetencodingR~tuserHelpBrowserthelpBrowserR?R�R�R�R�RdR�R�R�tEntryR�R�R:tlistHelpR�R�R�R�tHelpSourceSelectedReR�tHelpListItemEdittbuttonHelpListEdittHelpListItemAddtbuttonHelpListAddtHelpListItemRemovetbuttonHelpListRemoveRPRQR�RRRSRfR�R�R�R�(RER.R�tframeRunt frameSavetframeWinSizet
frameEncodingt frameHelptlabelRunChoiceTitletradioStartupEdittradioStartupShelltlabelRunSaveTitletradioSaveAskt
radioSaveAutotlabelWinSizeTitletlabelWinWidthTitlet
entryWinWidthtlabelWinHeightTitletentryWinHeighttlabelEncodingTitletradioEncLocaletradioEncUTF8tradioEncNonet
frameHelpListtframeHelpListButtonstscrollHelpList((s,/usr/lib64/python2.7/idlelib/configDialog.pyRWps� """"("""""""""""(%cCs�|jjd|j�|jjd|j�|jjd|j�|jjd|j�|jjd|j�|j jd|j
�|jjd|j�|j
jd|j�|jjd|j�|jjd|j�|jjd|j�|jjd|j�|jjd|j�|jjd|j�|jjd|j�|jjd|j�|jjd|j �|j!jd|j"�dS(Ntw(#R}ttrace_variabletVarChanged_fontR�RR�tVarChanged_spaceNumR�tVarChanged_colourR�tVarChanged_builtinThemeR�tVarChanged_customThemeR�tVarChanged_themeIsBuiltinR�tVarChanged_highlightTargetR�tVarChanged_keyBindingR�tVarChanged_builtinKeysR�tVarChanged_customKeysR�tVarChanged_keysAreBuiltinRtVarChanged_winWidthRtVarChanged_winHeightRtVarChanged_startupEditRtVarChanged_autoSaveRtVarChanged_encoding(RE((s,/usr/lib64/python2.7/idlelib/configDialog.pyRB�s$cCs�x�|j|j|j|j|j|j|j|j|j|j |j
|j|j|j
|j|j|j|jfD]$}|jd|j�dd�qsWdS(NR>ii(R}R�RR�R�R�R�R�R�R�R�R�R�RRRRRt
trace_vdeletettrace_vinfo(REtvar((s,/usr/lib64/python2.7/idlelib/configDialog.pytremove_var_callbacks�scGss|jj�}|jddd|�|jj�}|jddd|�|jj�}|jddd|�dS(s�When 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.
tmaintEditorWindowRus font-sizes font-boldN(R�tgettAddChangedItemR}R(REtparamsR�((s,/usr/lib64/python2.7/idlelib/configDialog.pyR@scGs)|jj�}|jddd|�dS(NRTtIndents
num-spaces(R�RVRW(RERXR�((s,/usr/lib64/python2.7/idlelib/configDialog.pyRA
scGs|j�dS(N(tOnNewColourSet(RERX((s,/usr/lib64/python2.7/idlelib/configDialog.pyRBscGs�|jj�}|dkr�tjddd�dkrO|jdddd�n|jddd|�|jjdd d
d�nE|jddd|�|jdddd�|jjddd
d
�|j�dS(Ns IDLE DarkRTtThemetnamesIDLE NewsIDLE Classictname2R`sNew theme, see Helptfgs#500000R
tblack(R�RVRt GetOptionRWR�R�tPaintThemeSample(RERXR�((s,/usr/lib64/python2.7/idlelib/configDialog.pyRCs
cGsB|jj�}|dkr>|jddd|�|j�ndS(Ns- no custom themes -RTR[R\(R�RVRWRa(RERXR�((s,/usr/lib64/python2.7/idlelib/configDialog.pyRD"scGsF|jj�}|jddd|�|r8|j�n
|j�dS(NRTR[tdefault(R�RVRWRCRD(RERXR�((s,/usr/lib64/python2.7/idlelib/configDialog.pyRE(s
cGs|j�dS(N(tSetHighlightTarget(RERX((s,/usr/lib64/python2.7/idlelib/configDialog.pyRF0scGs�|jj�}|jj�}|jjt�j�d}tj|�rb|jd|||�n/tj |�}|d}|jd|||�dS(Nitkeyst_cfgBindingst
extensions(
R�RVR�R�tANCHORtsplitRt
IsCoreBindingRWtGetExtnNameForEvent(RERXR�tkeySetR�textNametextKeybindSection((s,/usr/lib64/python2.7/idlelib/configDialog.pyRG3s
cGs6|jj�}|jddd|�|j|�dS(NRTRJR\(R�RVRWtLoadKeysList(RERXR�((s,/usr/lib64/python2.7/idlelib/configDialog.pyRH?scGsE|jj�}|dkrA|jddd|�|j|�ndS(Ns- no custom keys -RTRJR\(R�RVRWRn(RERXR�((s,/usr/lib64/python2.7/idlelib/configDialog.pyRIDscGsF|jj�}|jddd|�|r8|j�n
|j�dS(NRTRJRb(R�RVRWRHRI(RERXR�((s,/usr/lib64/python2.7/idlelib/configDialog.pyRJJs
cGs)|jj�}|jddd|�dS(NRTRUR*(RRVRW(RERXR�((s,/usr/lib64/python2.7/idlelib/configDialog.pyRKRscGs)|jj�}|jddd|�dS(NRTRUR)(RRVRW(RERXR�((s,/usr/lib64/python2.7/idlelib/configDialog.pyRLVscGs)|jj�}|jddd|�dS(NRTRKseditor-on-startup(RRVRW(RERXR�((s,/usr/lib64/python2.7/idlelib/configDialog.pyRMZscGs)|jj�}|jddd|�dS(NRTRKtautosave(RRVRW(RERXR�((s,/usr/lib64/python2.7/idlelib/configDialog.pyRN^scGs)|jj�}|jddd|�dS(NRTRUR(RRVRW(RERXR�((s,/usr/lib64/python2.7/idlelib/configDialog.pyRObscCs)iid6id6id6id6|_dS(NRTt highlightRdRf(tchangedItems(RE((s,/usr/lib64/python2.7/idlelib/configDialog.pyR7fscCsLt|�}||j|kr3i|j||<n||j|||<dS(N(tstrRq(REttyptsectiontitemR�((s,/usr/lib64/python2.7/idlelib/configDialog.pyRWoscCs�iid6id6id6id6}x�|D]�}tjd|�}xh|D]`}i|||<tj|j|�}x3|D]+}tj|j||�||||<qyWqHWq)W|S(NRTRpRdRfRb(RtGetSectionListt
defaultCfgt
GetOptionListtGet(REtdItemst
configTypetsectionsRttoptionstoption((s,/usr/lib64/python2.7/idlelib/configDialog.pytGetDefaultItemsus"
1cCs�|jj�rK|jjdt�|jjdt�|jjdt�nL|jjdt�|jjdt�|jjdt�|jjdt�dS(NR�( R�RVR�R�tNORMALR�R�R�R�(RE((s,/usr/lib64/python2.7/idlelib/configDialog.pyR��scCs�|jj�rK|jjdt�|jjdt�|jjdt�nL|jjdt�|jjdt�|jjdt�|jjdt�dS(NR�( R�RVR�R�R�R�R�R�R�(RE((s,/usr/lib64/python2.7/idlelib/configDialog.pyR��scCs�|jjt�}|jj|�}|j�d}|jj�rU|jj�}n|jj�}tj �}||j
dkr�|j
d|}x%|D]}||j�||<q�Wn|j�}t|d||�j
} | r�|jj�rDd}
|j|
�}|s4|jj|�|jj|�dS|j|�n|jj|�|jj||d| �|jj|�|jj|�|jj| �n |jj|�|jj|�dS(NiRdsGet New KeysscYour changes will be saved as a new Custom Key Set. Enter a name for your new Custom Key Set below.s - (R�tindexRgRVRhR�R�R�RtGetCurrentKeySetRqtvaluesRtresulttGetNewKeysNamet
select_sett
select_anchortCreateNewKeySettdeleteR�R�R�(REt listIndextbindingtbindNametcurrentKeySetNametcurrentBindingst
keySetChangesR�tcurrentKeySequencestnewKeystmessaget newKeySet((s,/usr/lib64/python2.7/idlelib/configDialog.pyR��s<
cCs>tjdd�tjdd�}t|d||�j}|S(NtuserRdRbsNew Custom Key Set(RRvRR�(RER�t usedNamesR�((s,/usr/lib64/python2.7/idlelib/configDialog.pyR��s
cCs)|jd�}|r%|j|�ndS(NsNew Key Set Name:(R�R�(REtnewKeysName((s,/usr/lib64/python2.7/idlelib/configDialog.pyR��scCs|jjdt�dS(NR�(R�R�R�(RER�((s,/usr/lib64/python2.7/idlelib/configDialog.pyR��sc
Cs#|jj�r!|jj�}n|jj�}tj|�}i}x8|D]0}|dd!}dj||�}|||<qLW||jdkr�|jd|}x|D]}||||<q�Wn|j||�tj dd�} | j
�|jj| |�|jj
d�|j�dS(Nii����R�RdR�i(R�RVR�R�RtGetCoreKeystjoinRqt
SaveNewKeySetRvtsortR�tSetMenuR�R�(
REt
newKeySetNametprevKeySetNametprevKeysR�R�t eventNameR�R�t
customKeyList((s,/usr/lib64/python2.7/idlelib/configDialog.pyR��s&
c Cs<d}d}|jj�r6d}|jjt�}ntj|�}|j�}|j�|jjdt �x�|D]�}dj
||�}|dd!}||jdkr�||jd|kr�|jd||}q�n|jjt |d|�quW|r8|jj
|�|jj|�|jj|�ndS(NiiR�ii����Rds - (R�tcurselectionR�RgRt GetKeySetRdR�R�R�R�RqR�tseeR�R�( REt
keySetNametreselectR�R�Rkt bindNamesR�tkey((s,/usr/lib64/python2.7/idlelib/configDialog.pyRn�s(
cCsR|jj�}d}tjd||d|�s5dS|j�tjdj|�||jdkrw|jd|=ntjdj �tj
dd�}|j�|s�|jj
dt�|jj|d�n|jj||d�|jjtjd jd
d��|jjtjd jd
d��|j�|j�|j�dS(
Ns0Are you sure you wish to delete the key set %r ?sDelete Key SetR.RdR�R�s- no custom keys -iRTRJRbR\(R�RVttkMessageBoxtaskyesnotDeactivateCurrentConfigRtuserCfgtremove_sectionRqtSaveRvR�R�R�R�R�R�R�R�RwRyR�tSaveAllChangedConfigstActivateConfigChangesR�(RER�tdelmsgtitemList((s,/usr/lib64/python2.7/idlelib/configDialog.pyR��s*
##
cCsR|jj�}d}tjd||d|�s5dS|j�tjdj|�||jdkrw|jd|=ntjdj �tj
dd�}|j�|s�|jj
dt�|jj|d�n|jj||d�|jjtjd jd
d��|jjtjd jd
d��|j�|j�|j�dS(
Ns.Are you sure you wish to delete the theme %r ?sDelete ThemeR.RpR�R�s- no custom themes -iRTR[RbR\(R�RVR�R�R�RR�R�RqR�RvR�R�R�R�R�R�R�R�RwRyR�R�R�R�(REt themeNameR�R�((s,/usr/lib64/python2.7/idlelib/configDialog.pyR�s*
##
cCs�|jj�}|jjd�}tjd|dd|d|�\}}|r�||kr�|jj�r�d}|j|�}|s�dS|j|�|j j
|�q�|j j
|�ndS(NtbgR.R2sPick new colour for : tinitialcolors_Your changes will be saved as a new Custom Theme. Enter a name for your new Custom Theme below.(R�RVR�tcgetttkColorChoosertaskcolorR�tGetNewThemeNametCreateNewThemeR�R�(REttargett
prevColourt rgbTuplettcolourStringR�tnewTheme((s,/usr/lib64/python2.7/idlelib/configDialog.pyR�6s
cCs�|jj�}|jjd|�|jj�r7dnd}|j|jj�d}|jj|i||6�|j j�}|d|}|j
d|||�dS(NR�t
foregroundt
backgroundit-Rp(R�RVR�R�R�R6R�R�t
tag_configR�RW(REt newColourtplanet
sampleElementtthemetthemeElement((s,/usr/lib64/python2.7/idlelib/configDialog.pyRZJscCs>tjdd�tjdd�}t|d||�j}|S(NR�RpRbsNew Custom Theme(RRvRR�(RER�R�R�((s,/usr/lib64/python2.7/idlelib/configDialog.pyR�Ts
cCs)|jd�}|r%|j|�ndS(NsNew Theme Name:(R�R�(REtnewThemeName((s,/usr/lib64/python2.7/idlelib/configDialog.pyR�[scCs�|jj�r'd}|jj�}nd}|jj�}tj||�}||jdkr�|jd|}x|D]}||||<qyWn|j||�tjdd�}|j �|j
j||�|jjd�|j
�dS(NRbR�Rpi(R�RVR�R�RtGetThemeDictRqtSaveNewThemeRvR�R�R�R�R�(RER�t themeTypeR�R�tthemeChangesR�tcustomThemeList((s,/usr/lib64/python2.7/idlelib/configDialog.pyR�`s
cCs6|jjt�}|jj|j��|j�dS(N(R�RVRgR�R�tlowerR�(RER�Ru((s,/usr/lib64/python2.7/idlelib/configDialog.pyR�xscCsr|jj�}|jj�r'tjntj}||jj�|f}|jjd|�|j j
d|�dS(NRu(R�RVRR�tBOLDR�R}R�R�R�R1(RER�R�t
fontWeighttnewFont((s,/usr/lib64/python2.7/idlelib/configDialog.pyR�}s
!cCs�|jj�dkrN|jjdt�|jjdt�|jjd�n6|jjdt�|jjdt�|jjd�|j �dS(NRR�i(
R�RVR�R�R�R�R�R�R�tSetColourSample(RE((s,/usr/lib64/python2.7/idlelib/configDialog.pyRc�scGs|j�dS(N(R�(REtargs((s,/usr/lib64/python2.7/idlelib/configDialog.pyR��scCsa|j|jj�d}|jj�r/dnd}|jj||�}|jjd|�dS(NiR�R�R�(R6R�RVR�R�ttag_cgetR�R�(REttagR�R�((s,/usr/lib64/python2.7/idlelib/configDialog.pyR��scCs$|jj�r!|jj�}n|jj�}x�|jD]�}|j|d}tj||�}|dkr�tj|ddd�|d<n||jdkr�|jd|}|d|kr�||d|d <n|d
|kr�||d
|d<q�n|jj ||�q:W|j
�dS(NiRRtfgBgR�R�Rps-foregroundR�s-background(R�RVR�R�R6RtGetHighlightRqR�R�R�(RER�telementTitleR�tcolourst themeDict((s,/usr/lib64/python2.7/idlelib/configDialog.pyRa�s"cCs|j�dS(N(tSetHelpListButtonStates(RER�((s,/usr/lib64/python2.7/idlelib/configDialog.pyR �scCs�|jj�dkr>|jjdt�|jjdt�n^|jj�rv|jjdt�|jjdt�n&|jjdt�|jjdt�dS(NiR�(RtsizeR"R�R�R&R�R�(RE((s,/usr/lib64/python2.7/idlelib/configDialog.pyR��scCsht|d�j}|rZ|jj|d|df�|jjt|d�|j�n|j�dS(NsNew Help Sourceii( RR�tuserHelpListtappendRR�R�tUpdateUserHelpChangedItemsR�(REt
helpSource((s,/usr/lib64/python2.7/idlelib/configDialog.pyR#�s
cCs�|jjt�}|j|}t|dd|dd|d�j}|sX||kr\dS||j|<|jj|�|jj||d�|j�|j �dS(NsEdit Help SourcetmenuItemitfilePathi(
RR�RgR�RR�R�R�R�R�(REt itemIndexR�t
newHelpSource((s,/usr/lib64/python2.7/idlelib/configDialog.pyR!�s
cCsD|jjt�}|j|=|jj|�|j�|j�dS(N(RR�RgR�R�R�R�(RER�((s,/usr/lib64/python2.7/idlelib/configDialog.pyR%�s
c Cspi|jdd<xXtdt|j�d�D]:}|jddt|�dj|j|dd ��q.WdS(s<Clear and rebuild the HelpFiles section in self.changedItemsRTt HelpFilesit;iN(RqR�tlenR�RWRrR�(REtnum((s,/usr/lib64/python2.7/idlelib/configDialog.pyR��s
#c
Cs9ttj|��}|j�x!|D]}|jjt|�q&Wtj|dd�}|dj �}|d}|ddk}|j
j|�g|D]}|j �^q�}yC|j|�} |jj
| �|jj| �|jj| �Wntk
rnX|jjd|�|jj|�|j�dS(NRTRUiiitboldt7t8t9R"R$R&R(t14t16t18t20t22t25t29t34t40(R�R�R�R"R$R&R(R�R�R�R�R�R�R�R�R�(R�R�tfamiliesR�R�R�R�RtGetFontR�R�R�R�R�R�R�t
ValueErrorR�R�RR�(
REtfontsRutconfiguredFontR�R}Rtstlc_fontstcurrentFontIndex((s,/usr/lib64/python2.7/idlelib/configDialog.pytLoadFontCfg�s,
cCs5tjddddddd�}|jj|�dS(NRTRYs
num-spacesRbittypetint(RR`R�R�(RER�((s,/usr/lib64/python2.7/idlelib/configDialog.pyt
LoadTabCfg�sc s��jjtjddddddd��tj�}�jj�r�tjdd�}|j��jj ||�tjdd�}|j�|s��j
jd t��j
jd
�q9�jj ||d�nbtjdd�}|j��jj ||�tjdd�}|j��jj ||d��j��jj�}|jd�fd
���jj ||d��j��j�dS(NRTR[RbR�tbooliRpR�R�s- no custom themes -iR�cs�j|dS(Ni(R6(tx(RE(s,/usr/lib64/python2.7/idlelib/configDialog.pyR� R
(R�R�RR`tCurrentThemeRVRvR�R�R�R�R�R�R�R�R�R6RdR�RaRc(REt
currentOptionR�t
themeNames((REs,/usr/lib64/python2.7/idlelib/configDialog.pytLoadThemeCfgs2
c Cs`|jjtjddddddd��tj�}|jj�r�tjdd�}|j�|jj ||�tjdd�}|j�|s�|j
jd t�|j
jd
�q9|jj ||d�nbtjdd�}|j�|jj ||�tjdd�}|j�|jj ||d�|j�tj�}|j|�dS(NRTRJRbR�RiRdR�R�s- no custom keys -i(R�R�RR`tCurrentKeysRVRvR�R�R�R�R�R�R�R�R�Rn(RERR�R�((s,/usr/lib64/python2.7/idlelib/configDialog.pyt
LoadKeyCfg%s,
c Cs
|jjtjddddddd��|jjtjddddd dd��|jjtjdd
ddd��|jjtjdd
d
dd��|jjtjdd
ddd��tj�|_ x(|j D]}|j
jt|d �q�W|j
�dS(NRTRKseditor-on-startupRbiR�RRoiRUR*RR)RR(RR�RR`RRRRtGetAllExtraHelpSourcesListR�RR�R�R�(REthelpItem((s,/usr/lib64/python2.7/idlelib/configDialog.pytLoadGeneralCfgCscCs6|j�|j�|j�|j�|j�dS(s�
load configuration from default and user config files and populate
the widgets on the config dialog pages.
N(R�RRR R(RE((s,/usr/lib64/python2.7/idlelib/configDialog.pyRAXs
cCsftjdj|�s-tjdj|�nx2|D]*}||}tjdj|||�q4WdS(s�
save a newly created core key set.
keySetName - string, the name of the new key set
keySet - dictionary containing the new key set
RdN(RR�thas_sectiontadd_sectiont SetOption(RER�RkR�R�((s,/usr/lib64/python2.7/idlelib/configDialog.pyR�hs
cCsftjdj|�s-tjdj|�nx2|D]*}||}tjdj|||�q4WdS(s�
save a newly created theme.
themeName - string, the name of the new theme
theme - dictionary containing the new theme
RpN(RR�R
RR(RER�R�R�R�((s,/usr/lib64/python2.7/idlelib/configDialog.pyR�ts
cCsltj|j||�rRtj|j||�|krRtj|j||�Sntj|j|||�S(N(RRwt
has_optionRyR�tRemoveOptionR(RER{RtRuR�((s,/usr/lib64/python2.7/idlelib/configDialog.pytSetUserValue�scCstjdj�x�|jD]�}t}x�|j|D]�}|dkrdtjdjd�t}nxO|j||D]<}|j|||}|j||||�rvt}qvqvWq5W|rtj|j�qqWx%ddgD]}tj|j�q�W|j�|j �dS(s3Save configuration changes to the user config file.RTR�RdRpN(
RR�R�RqtFalseR�RRR7tsave_all_changed_extensions(RER{tcfgTypeHasChangesRtRuR�((s,/usr/lib64/python2.7/idlelib/configDialog.pyR��s"
cCs+|jj}x|D]}|j�qWdS(N(R.R/tRemoveKeybindings(REtwinInstancestinstance((s,/usr/lib64/python2.7/idlelib/configDialog.pyR��s
cCsY|jjj�}x@|D]8}|j�|j�|j�|j�|j�qWdS(s'Dynamically apply configuration changesN(R.R/RdtResetColorizert ResetFonttset_notabs_indentwidthtApplyKeybindingstreset_help_menu_entries(RERR((s,/usr/lib64/python2.7/idlelib/configDialog.pyR��s
cCs|j�|j�dS(N(tgrab_releasetdestroy(RE((s,/usr/lib64/python2.7/idlelib/configDialog.pyR>�s
cCs"|j�|j�|j�dS(N(R^RR(RE((s,/usr/lib64/python2.7/idlelib/configDialog.pyR]�s
cCs"|j�|j�|j�dS(N(R�R�R�(RE((s,/usr/lib64/python2.7/idlelib/configDialog.pyR^�s
c Cs6|jj}t|dddttj|d��dS(NR2sHelp for IDLE preferencesR`R
(R?t
_current_pageRthelp_commont
help_pagesRV(REtpage((s,/usr/lib64/python2.7/idlelib/configDialog.pyR_�sc
Cs|j}|jjdj}tjd|_tjd|_|j t
�|_
|j�t|�|_
|jddd�|jddd�t|d|j
dd �|_|jjd
|j�t|d|jj�}|j|j_t|dd
dd
�|_|jjdddddd�|jdddddd�|jjdddddddddg�|jdddd�i|_d|_||_|j|_ d}x6t!|j"�D]%}|j#|�|d|d}q�W|j
j|�|jj$d�|jd�dS(sPart 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.
RLRfiR�iitlistvariablet
selectmodetbrowses<<ListboxSelect>>RaR*i�R)R�R�R�tnwstnstnsewR[i
R\R
t{s} N(%R.R?R�R�RRwtext_defaultCfgR�text_userCfgtregistertis_inttload_extensionsR|textension_namesRRR�textension_listR�textension_selectedR�R�R�RpR�t
details_frameRR1tconfig_frameR�tcurrent_extensiont
outerframettabbed_page_settsortedRftcreate_extension_framet
selection_set(RER.R�tscrollt ext_namestext_name((s,/usr/lib64/python2.7/idlelib/configDialog.pyRX�s<
+
c
Cs�i|_x'tjdt�D]}g|j|<qWx�|jD]�}t|jj|��}g|D]}|jd�rb|^qb}x|D]}|j|�q�W||}x0|D](}|jj ||dt
�}y"it
d6td6|}d}WnGtk
r>yt|�}d}Wq?t
k
r:|}d
}q?XnXy+|jj ||d|dt
d |�}Wnt
k
r�|}nXt|�} | jt|��|j|ji|d
6|d6|d 6|d6| d6�q�Wq=Wd
S(sAFill self.extensions with data from the default and user configs.tactive_onlytenabletrawRRRRR�RbR\R�RRN(RfRt
GetExtensionsRR8R+Rxt
startswithtremoveRyRtKeyErrorRR�R�R,R|R�RrR�(
RER=topt_listtopt_nametenablestdef_strtdef_objtopt_typeR�RR((s,/usr/lib64/python2.7/idlelib/configDialog.pyR/�sH
cCs�|jj�}|r*|jj|�}n|dksE||jkr�|jr�|jjdd�|j|jj�d|_q�n|r�|jjd|�|j|j dddddd�||_ndS(NR`R
R�iR�R�R)(
R1R�RVR�R5R3R�R4tgrid_forgetR(RER�tnewsel((s,/usr/lib64/python2.7/idlelib/configDialog.pyR2$s #cCs~t|jdddd�}||j|<|j}xFt|j|�D]1\}}t|d|d�}|jd|ddd t�|d
}|ddkr�t |d
|d|dddddt
dddd�jd|ddd tdd�qE|ddkrHt|d
|ddd|j
df�jd|ddd tdd�qEt|d
|�jd|ddd tdd�qEWdS( s=Create a frame holding the widgets to configure one extensionR)i�R*R`R\R�R�iR�RRR�RRRqRrRRsRtindicatorontselectcolorR
iiR[iRtvalidateR�tvalidatecommands%PN(tVerticalScrolledFrameR3R4tinteriort enumerateRfR�RtNWR�R:R�RR.R(RER=tft
entry_areaR�topttlabelRR((s,/usr/lib64/python2.7/idlelib/configDialog.pyR92s&
cCsv|d}|d}|dj�j�p-|}|dj|�||kr`|jj||�S|jj|||�S(NR\RbRR(RVtstripR�R,RR(RERtRWR\RbR�((s,/usr/lib64/python2.7/idlelib/configDialog.pytset_extension_valueLs
cCsmt}xJ|jD]?}|j|}x)|D]!}|j||�r*t}q*q*WqW|ri|jj�ndS(s3Save configuration changes to the user config file.N(RRfRZRR,R�(REthas_changesR=R}RW((s,/usr/lib64/python2.7/idlelib/configDialog.pyRXs
N(Qt__name__t
__module__RR-R8RYRTRURVRWRBRSR@RARBRCRDRERFRGRHRIRJRKRLRMRNROR7RWRR�R�R�R�R�R�R�RnR�R�R�RZR�R�R�R�R�R�RcR�R�RaR R�R#R!R%R�R�RRR RRAR�R�RR�R�R�R>R]R^R_RXR/R2R9RZR(((s,/usr/lib64/python2.7/idlelib/configDialog.pyR s�5 D o M s
$
!
5 - shWhen 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.
s�
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.
RIcCs5|s
tSyt|�tSWntk
r0tSXdS(s(Return 's is blank or represents an int'N(RRR�R(R�((s,/usr/lib64/python2.7/idlelib/configDialog.pyR.vs
RQcBseZdZd�ZRS(s�A 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
s0tj||||�t|dt�}|jdtdtdt�t|ddddd|j d d
���jdt
dtdt�|j
d�j��jd��jd�t��|_��jddd�d
t����fd�}�jd|����fd�}�jd|�dS(NRvRORMRNR�iR�RpR*i�RatwindowR{cs0�j��j�f}�jdd|�dS(Ntscrollregions 0 0 %s %s(twinfo_reqwidthtwinfo_reqheightR�(R�R�(tcanvasRR(s,/usr/lib64/python2.7/idlelib/configDialog.pyt_configure_interior�ss<Configure>cs8�j��j�kr4�j�d�j��ndS(NR*(R`twinfo_widtht
itemconfigure(R�(RbRRtinterior_id(s,/usr/lib64/python2.7/idlelib/configDialog.pyt_configure_canvas�s(RdR-R�tVERTICALRPR�R�R:tCanvasR�RfRSRRR�R�txview_movetotyview_movetoRRt
create_windowRTR�(RER.R�tkwt
vscrollbarRcRg((RbRRRfs,/usr/lib64/python2.7/idlelib/configDialog.pyR-�s
(R\R]t__doc__R-(((s,/usr/lib64/python2.7/idlelib/configDialog.pyRQ�st__main__s#idlelib.idle_test.test_configdialogt verbosityitexit(trun("RotTkinterR�R�R�tidlelib.configHandlerRtidlelib.dynOptionMenuWidgetRtidlelib.keybindingDialogRtidlelib.configSectionNameDialogRtidlelib.configHelpSourceEditRtidlelib.tabbedpagesRtidlelib.textViewRtidlelibRR,R R!R"R.RdRQR\tunittestRTRtidlelib.idle_test.htestRs(((s,/usr/lib64/python2.7/idlelib/configDialog.pyt<module>s6
$�����X
+