PNG  IHDRQgAMA a cHRMz&u0`:pQ<bKGDgmIDATxwUﹻ& ^CX(J I@ "% (** BX +*i"]j(IH{~R)[~>h{}gy)I$Ij .I$I$ʊy@}x.: $I$Ii}VZPC)I$IF ^0ʐJ$I$Q^}{"r=OzI$gRZeC.IOvH eKX $IMpxsk.쒷/&r[޳<v| .I~)@$updYRa$I |M.e JaֶpSYR6j>h%IRز if&uJ)M$I vLi=H;7UJ,],X$I1AҒJ$ XY XzI@GNҥRT)E@;]K*Mw;#5_wOn~\ DC&$(A5 RRFkvIR}l!RytRl;~^ǷJj اy뷦BZJr&ӥ8Pjw~vnv X^(I;4R=P[3]J,]ȏ~:3?[ a&e)`e*P[4]T=Cq6R[ ~ޤrXR Հg(t_HZ-Hg M$ãmL5R uk*`%C-E6/%[t X.{8P9Z.vkXŐKjgKZHg(aK9ڦmKjѺm_ \#$5,)-  61eJ,5m| r'= &ڡd%-]J on Xm|{ RҞe $eڧY XYrԮ-a7RK6h>n$5AVڴi*ֆK)mѦtmr1p| q:흺,)Oi*ֺK)ܬ֦K-5r3>0ԔHjJئEZj,%re~/z%jVMڸmrt)3]J,T K֦OvԒgii*bKiNO~%PW0=dii2tJ9Jݕ{7"I P9JKTbu,%r"6RKU}Ij2HKZXJ,妝 XYrP ެ24c%i^IK|.H,%rb:XRl1X4Pe/`x&P8Pj28Mzsx2r\zRPz4J}yP[g=L) .Q[6RjWgp FIH*-`IMRaK9TXcq*I y[jE>cw%gLRԕiFCj-ďa`#e~I j,%r,)?[gp FI˨mnWX#>mʔ XA DZf9,nKҲzIZXJ,L#kiPz4JZF,I,`61%2s $,VOϚ2/UFJfy7K> X+6 STXIeJILzMfKm LRaK9%|4p9LwJI!`NsiazĔ)%- XMq>pk$-$Q2x#N ؎-QR}ᶦHZډ)J,l#i@yn3LN`;nڔ XuX5pF)m|^0(>BHF9(cզEerJI rg7 4I@z0\JIi䵙RR0s;$s6eJ,`n 䂦0a)S)A 1eJ,堌#635RIgpNHuTH_SԕqVe ` &S)>p;S$魁eKIuX`I4춒o}`m$1":PI<[v9^\pTJjriRŭ P{#{R2,`)e-`mgj~1ϣLKam7&U\j/3mJ,`F;M'䱀 .KR#)yhTq;pcK9(q!w?uRR,n.yw*UXj#\]ɱ(qv2=RqfB#iJmmL<]Y͙#$5 uTU7ӦXR+q,`I}qL'`6Kͷ6r,]0S$- [RKR3oiRE|nӦXR.(i:LDLTJjY%o:)6rxzҒqTJjh㞦I.$YR.ʼnGZ\ֿf:%55 I˼!6dKxm4E"mG_ s? .e*?LRfK9%q#uh$)i3ULRfK9yxm܌bj84$i1U^@Wbm4uJ,ҪA>_Ij?1v32[gLRD96oTaR׿N7%L2 NT,`)7&ƝL*꽙yp_$M2#AS,`)7$rkTA29_Iye"|/0t)$n XT2`YJ;6Jx".e<`$) PI$5V4]29SRI>~=@j]lp2`K9Jaai^" Ԋ29ORI%:XV5]JmN9]H;1UC39NI%Xe78t)a;Oi Ҙ>Xt"~G>_mn:%|~ޅ_+]$o)@ǀ{hgN;IK6G&rp)T2i୦KJuv*T=TOSV>(~D>dm,I*Ɛ:R#ۙNI%D>G.n$o;+#RR!.eU˽TRI28t)1LWϚ>IJa3oFbu&:tJ*(F7y0ZR ^p'Ii L24x| XRI%ۄ>S1]Jy[zL$adB7.eh4%%누>WETf+3IR:I3Xה)3אOۦSRO'ٺ)S}"qOr[B7ϙ.edG)^ETR"RtRݜh0}LFVӦDB^k_JDj\=LS(Iv─aTeZ%eUAM-0;~˃@i|l @S4y72>sX-vA}ϛBI!ݎߨWl*)3{'Y|iSlEڻ(5KtSI$Uv02,~ԩ~x;P4ցCrO%tyn425:KMlD ^4JRxSهF_}شJTS6uj+ﷸk$eZO%G*^V2u3EMj3k%)okI]dT)URKDS 7~m@TJR~荪fT"֛L \sM -0T KfJz+nإKr L&j()[E&I ߴ>e FW_kJR|!O:5/2跌3T-'|zX ryp0JS ~^F>-2< `*%ZFP)bSn"L :)+pʷf(pO3TMW$~>@~ū:TAIsV1}S2<%ޟM?@iT ,Eūoz%i~g|`wS(]oȤ8)$ ntu`өe`6yPl IzMI{ʣzʨ )IZ2= ld:5+請M$-ї;U>_gsY$ÁN5WzWfIZ)-yuXIfp~S*IZdt;t>KūKR|$#LcԀ+2\;kJ`]YǔM1B)UbG"IRߊ<xܾӔJ0Z='Y嵤 Leveg)$znV-º^3Ւof#0Tfk^Zs[*I꯳3{)ˬW4Ւ4 OdpbZRS|*I 55#"&-IvT&/윚Ye:i$ 9{LkuRe[I~_\ؠ%>GL$iY8 9ܕ"S`kS.IlC;Ҏ4x&>u_0JLr<J2(^$5L s=MgV ~,Iju> 7r2)^=G$1:3G< `J3~&IR% 6Tx/rIj3O< ʔ&#f_yXJiގNSz; Tx(i8%#4 ~AS+IjerIUrIj362v885+IjAhK__5X%nV%Iͳ-y|7XV2v4fzo_68"S/I-qbf; LkF)KSM$ Ms>K WNV}^`-큧32ŒVؙGdu,^^m%6~Nn&͓3ŒVZMsRpfEW%IwdǀLm[7W&bIRL@Q|)* i ImsIMmKmyV`i$G+R 0tV'!V)֏28vU7͒vHꦼtxꗞT ;S}7Mf+fIRHNZUkUx5SAJㄌ9MqμAIRi|j5)o*^'<$TwI1hEU^c_j?Е$%d`z cyf,XO IJnTgA UXRD }{H}^S,P5V2\Xx`pZ|Yk:$e ~ @nWL.j+ϝYb퇪bZ BVu)u/IJ_ 1[p.p60bC >|X91P:N\!5qUB}5a5ja `ubcVxYt1N0Zzl4]7­gKj]?4ϻ *[bg$)+À*x쳀ogO$~,5 زUS9 lq3+5mgw@np1sso Ӻ=|N6 /g(Wv7U;zωM=wk,0uTg_`_P`uz?2yI!b`kĸSo+Qx%!\οe|އԁKS-s6pu_(ֿ$i++T8=eY; צP+phxWQv*|p1. ά. XRkIQYP,drZ | B%wP|S5`~́@i޾ E;Չaw{o'Q?%iL{u D?N1BD!owPHReFZ* k_-~{E9b-~P`fE{AܶBJAFO wx6Rox5 K5=WwehS8 (JClJ~ p+Fi;ŗo+:bD#g(C"wA^ r.F8L;dzdIHUX݆ϞXg )IFqem%I4dj&ppT{'{HOx( Rk6^C٫O.)3:s(۳(Z?~ٻ89zmT"PLtw䥈5&b<8GZ-Y&K?e8,`I6e(֍xb83 `rzXj)F=l($Ij 2*(F?h(/9ik:I`m#p3MgLaKjc/U#n5S# m(^)=y=đx8ŬI[U]~SцA4p$-F i(R,7Cx;X=cI>{Km\ o(Tv2vx2qiiDJN,Ҏ!1f 5quBj1!8 rDFd(!WQl,gSkL1Bxg''՞^ǘ;pQ P(c_ IRujg(Wz bs#P­rz> k c&nB=q+ؔXn#r5)co*Ũ+G?7< |PQӣ'G`uOd>%Mctz# Ԫڞ&7CaQ~N'-P.W`Oedp03C!IZcIAMPUۀ5J<\u~+{9(FbbyAeBhOSܳ1 bÈT#ŠyDžs,`5}DC-`̞%r&ڙa87QWWp6e7 Rϫ/oY ꇅ Nܶըtc!LA T7V4Jsū I-0Pxz7QNF_iZgúWkG83 0eWr9 X]㾮݁#Jˢ C}0=3ݱtBi]_ &{{[/o[~ \q鯜00٩|cD3=4B_b RYb$óBRsf&lLX#M*C_L܄:gx)WΘsGSbuL rF$9';\4Ɍq'n[%p.Q`u hNb`eCQyQ|l_C>Lb꟟3hSb #xNxSs^ 88|Mz)}:](vbۢamŖ࿥ 0)Q7@0=?^k(*J}3ibkFn HjB׻NO z x}7p 0tfDX.lwgȔhԾŲ }6g E |LkLZteu+=q\Iv0쮑)QٵpH8/2?Σo>Jvppho~f>%bMM}\//":PTc(v9v!gոQ )UfVG+! 35{=x\2+ki,y$~A1iC6#)vC5^>+gǵ@1Hy٪7u;p psϰu/S <aʸGu'tD1ԝI<pg|6j'p:tպhX{o(7v],*}6a_ wXRk,O]Lܳ~Vo45rp"N5k;m{rZbΦ${#)`(Ŵg,;j%6j.pyYT?}-kBDc3qA`NWQū20/^AZW%NQ MI.X#P#,^Ebc&?XR tAV|Y.1!؅⨉ccww>ivl(JT~ u`ٵDm q)+Ri x/x8cyFO!/*!/&,7<.N,YDŽ&ܑQF1Bz)FPʛ?5d 6`kQձ λc؎%582Y&nD_$Je4>a?! ͨ|ȎWZSsv8 j(I&yj Jb5m?HWp=g}G3#|I,5v珿] H~R3@B[☉9Ox~oMy=J;xUVoj bUsl_35t-(ՃɼRB7U!qc+x4H_Qo֮$[GO<4`&č\GOc[.[*Af%mG/ ňM/r W/Nw~B1U3J?P&Y )`ѓZ1p]^l“W#)lWZilUQu`-m|xĐ,_ƪ|9i:_{*(3Gѧ}UoD+>m_?VPۅ15&}2|/pIOʵ> GZ9cmíتmnz)yߐbD >e}:) r|@R5qVSA10C%E_'^8cR7O;6[eKePGϦX7jb}OTGO^jn*媓7nGMC t,k31Rb (vyܴʭ!iTh8~ZYZp(qsRL ?b}cŨʊGO^!rPJO15MJ[c&~Z`"ѓޔH1C&^|Ш|rʼ,AwĴ?b5)tLU)F| &g٣O]oqSUjy(x<Ϳ3 .FSkoYg2 \_#wj{u'rQ>o;%n|F*O_L"e9umDds?.fuuQbIWz |4\0 sb;OvxOSs; G%T4gFRurj(֍ڑb uԖKDu1MK{1^ q; C=6\8FR艇!%\YÔU| 88m)֓NcLve C6z;o&X x59:q61Z(T7>C?gcļxѐ Z oo-08jہ x,`' ҔOcRlf~`jj".Nv+sM_]Zk g( UOPyεx%pUh2(@il0ݽQXxppx-NS( WO+轾 nFߢ3M<;z)FBZjciu/QoF 7R¥ ZFLF~#ȣߨ^<쩡ݛкvџ))ME>ώx4m#!-m!L;vv#~Y[đKmx9.[,UFS CVkZ +ߟrY٧IZd/ioi$%͝ب_ֶX3ܫhNU ZZgk=]=bbJS[wjU()*I =ώ:}-蹞lUj:1}MWm=̛ _ ¾,8{__m{_PVK^n3esw5ӫh#$-q=A̟> ,^I}P^J$qY~Q[ Xq9{#&T.^GVj__RKpn,b=`żY@^՝;z{paVKkQXj/)y TIc&F;FBG7wg ZZDG!x r_tƢ!}i/V=M/#nB8 XxЫ ^@CR<{䤭YCN)eKOSƟa $&g[i3.C6xrOc8TI;o hH6P&L{@q6[ Gzp^71j(l`J}]e6X☉#͕ ׈$AB1Vjh㭦IRsqFBjwQ_7Xk>y"N=MB0 ,C #o6MRc0|$)ف"1!ixY<B9mx `,tA>)5ػQ?jQ?cn>YZe Tisvh# GMމȇp:ԴVuږ8ɼH]C.5C!UV;F`mbBk LTMvPʍϤj?ԯ/Qr1NB`9s"s TYsz &9S%U԰> {<ؿSMxB|H\3@!U| k']$U+> |HHMLޢ?V9iD!-@x TIî%6Z*9X@HMW#?nN ,oe6?tQwڱ.]-y':mW0#!J82qFjH -`ѓ&M0u Uγmxϵ^-_\])@0Rt.8/?ٰCY]x}=sD3ojަЫNuS%U}ԤwHH>ڗjܷ_3gN q7[q2la*ArǓԖ+p8/RGM ]jacd(JhWko6ڎbj]i5Bj3+3!\j1UZLsLTv8HHmup<>gKMJj0@H%,W΃7R) ">c, xixј^ aܖ>H[i.UIHc U1=yW\=S*GR~)AF=`&2h`DzT󑓶J+?W+}C%P:|0H܆}-<;OC[~o.$~i}~HQ TvXΈr=b}$vizL4:ȰT|4~*!oXQR6Lk+#t/g lԁߖ[Jڶ_N$k*". xsxX7jRVbAAʯKҎU3)zSNN _'s?f)6X!%ssAkʱ>qƷb hg %n ~p1REGMHH=BJiy[<5 ǁJҖgKR*倳e~HUy)Ag,K)`Vw6bRR:qL#\rclK/$sh*$ 6덤 KԖc 3Z9=Ɣ=o>X Ώ"1 )a`SJJ6k(<c e{%kϊP+SL'TcMJWRm ŏ"w)qc ef꒵i?b7b('"2r%~HUS1\<(`1Wx9=8HY9m:X18bgD1u ~|H;K-Uep,, C1 RV.MR5άh,tWO8WC$ XRVsQS]3GJ|12 [vM :k#~tH30Rf-HYݺ-`I9%lIDTm\ S{]9gOڒMNCV\G*2JRŨ;Rҏ^ڽ̱mq1Eu?To3I)y^#jJw^Ńj^vvlB_⋌P4x>0$c>K†Aļ9s_VjTt0l#m>E-,,x,-W)سo&96RE XR.6bXw+)GAEvL)͞K4$p=Ũi_ѱOjb HY/+@θH9޼]Nԥ%n{ &zjT? Ty) s^ULlb,PiTf^<À] 62R^V7)S!nllS6~͝V}-=%* ʻ>G DnK<y&>LPy7'r=Hj 9V`[c"*^8HpcO8bnU`4JȪAƋ#1_\ XϘHPRgik(~G~0DAA_2p|J묭a2\NCr]M_0 ^T%e#vD^%xy-n}-E\3aS%yN!r_{ )sAw ڼp1pEAk~v<:`'ӭ^5 ArXOI驻T (dk)_\ PuA*BY]yB"l\ey hH*tbK)3 IKZ򹞋XjN n *n>k]X_d!ryBH ]*R 0(#'7 %es9??ښFC,ՁQPjARJ\Ρw K#jahgw;2$l*) %Xq5!U᢯6Re] |0[__64ch&_}iL8KEgҎ7 M/\`|.p,~`a=BR?xܐrQ8K XR2M8f ?`sgWS%" Ԉ 7R%$ N}?QL1|-эټwIZ%pvL3Hk>,ImgW7{E xPHx73RA @RS CC !\ȟ5IXR^ZxHл$Q[ŝ40 (>+ _C >BRt<,TrT {O/H+˟Pl6 I B)/VC<6a2~(XwV4gnXR ϱ5ǀHٻ?tw똤Eyxp{#WK qG%5],(0ӈH HZ])ג=K1j&G(FbM@)%I` XRg ʔ KZG(vP,<`[ Kn^ SJRsAʠ5xՅF`0&RbV tx:EaUE/{fi2;.IAwW8/tTxAGOoN?G}l L(n`Zv?pB8K_gI+ܗ #i?ޙ.) p$utc ~DžfՈEo3l/)I-U?aԅ^jxArA ΧX}DmZ@QLےbTXGd.^|xKHR{|ΕW_h] IJ`[G9{).y) 0X YA1]qp?p_k+J*Y@HI>^?gt.06Rn ,` ?);p pSF9ZXLBJPWjgQ|&)7! HjQt<| ؅W5 x W HIzYoVMGP Hjn`+\(dNW)F+IrS[|/a`K|ͻ0Hj{R,Q=\ (F}\WR)AgSG`IsnAR=|8$}G(vC$)s FBJ?]_u XRvύ6z ŨG[36-T9HzpW̞ú Xg큽=7CufzI$)ki^qk-) 0H*N` QZkk]/tnnsI^Gu't=7$ Z;{8^jB% IItRQS7[ϭ3 $_OQJ`7!]W"W,)Iy W AJA;KWG`IY{8k$I$^%9.^(`N|LJ%@$I}ֽp=FB*xN=gI?Q{٥4B)mw $Igc~dZ@G9K X?7)aK%݅K$IZ-`IpC U6$I\0>!9k} Xa IIS0H$I H ?1R.Чj:4~Rw@p$IrA*u}WjWFPJ$I➓/6#! LӾ+ X36x8J |+L;v$Io4301R20M I$-E}@,pS^ޟR[/s¹'0H$IKyfŸfVOπFT*a$I>He~VY/3R/)>d$I>28`Cjw,n@FU*9ttf$I~<;=/4RD~@ X-ѕzἱI$: ԍR a@b X{+Qxuq$IЛzo /~3\8ڒ4BN7$IҀj V]n18H$IYFBj3̵̚ja pp $Is/3R Ӻ-Yj+L;.0ŔI$Av? #!5"aʄj}UKmɽH$IjCYs?h$IDl843.v}m7UiI=&=0Lg0$I4: embe` eQbm0u? $IT!Sƍ'-sv)s#C0:XB2a w I$zbww{."pPzO =Ɔ\[ o($Iaw]`E).Kvi:L*#gР7[$IyGPI=@R 4yR~̮´cg I$I/<tPͽ hDgo 94Z^k盇΄8I56^W$I^0̜N?4*H`237}g+hxoq)SJ@p|` $I%>-hO0eO>\ԣNߌZD6R=K ~n($I$y3D>o4b#px2$yڪtzW~a $I~?x'BwwpH$IZݑnC㧄Pc_9sO gwJ=l1:mKB>Ab<4Lp$Ib o1ZQ@85b̍ S'F,Fe,^I$IjEdù{l4 8Ys_s Z8.x m"+{~?q,Z D!I$ϻ'|XhB)=…']M>5 rgotԎ 獽PH$IjIPhh)n#cÔqA'ug5qwU&rF|1E%I$%]!'3AFD/;Ck_`9 v!ٴtPV;x`'*bQa w I$Ix5 FC3D_~A_#O݆DvV?<qw+I$I{=Z8".#RIYyjǪ=fDl9%M,a8$I$Ywi[7ݍFe$s1ՋBVA?`]#!oz4zjLJo8$I$%@3jAa4(o ;p,,dya=F9ً[LSPH$IJYЉ+3> 5"39aZ<ñh!{TpBGkj}Sp $IlvF.F$I z< '\K*qq.f<2Y!S"-\I$IYwčjF$ w9 \ߪB.1v!Ʊ?+r:^!I$BϹB H"B;L'G[ 4U#5>੐)|#o0aڱ$I>}k&1`U#V?YsV x>{t1[I~D&(I$I/{H0fw"q"y%4 IXyE~M3 8XψL}qE$I[> nD?~sf ]o΁ cT6"?'_Ἣ $I>~.f|'!N?⟩0G KkXZE]ޡ;/&?k OۘH$IRۀwXӨ<7@PnS04aӶp.:@\IWQJ6sS%I$e5ڑv`3:x';wq_vpgHyXZ 3gЂ7{{EuԹn±}$I$8t;b|591nءQ"P6O5i }iR̈́%Q̄p!I䮢]O{H$IRϻ9s֧ a=`- aB\X0"+5"C1Hb?߮3x3&gşggl_hZ^,`5?ߎvĸ%̀M!OZC2#0x LJ0 Gw$I$I}<{Eb+y;iI,`ܚF:5ܛA8-O-|8K7s|#Z8a&><a&/VtbtLʌI$I$I$I$I$I$IRjDD%tEXtdate:create2022-05-31T04:40:26+00:00!Î%tEXtdate:modify2022-05-31T04:40:26+00:00|{2IENDB`Mini Shell

HOME


Mini Shell 1.0
DIR:/snap/core/current/usr/lib/python3.5/idlelib/__pycache__/
Upload File :
Current File : //snap/core/current/usr/lib/python3.5/idlelib/__pycache__/configDialog.cpython-35.pyc


���fm��@sVdZddlTddljZddljZddlj	Z
ddlmZddl
mZddlmZddlmZddlmZdd	lmZdd
lmZddlmZGdd
�d
e�ZdZddiZdd�ZGdd�de �Z!e"dkrRddl#Z#e#j$ddddd�ddl%m&Z&e&e�dS)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�eZdZddddd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Zdd�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3d4�Zd5d6�Zd7d8�Zd9d:�Zd;d<�Zd=d>�Z d?d@�Z!dAdB�Z"dCdD�Z#dEdF�Z$dGdH�Z%dIdJ�Z&dKdL�Z'dMdN�Z(dOdP�Z)dQdR�Z*dSdT�Z+dUdV�Z,dWdX�Z-dYdZ�Z.d[d\d]�Z/d^d_�Z0d`da�Z1dbdc�Z2ddde�Z3dfdg�Z4dhdi�Z5djdk�Z6dldm�Z7dndo�Z8dpdq�Z9drds�Z:dtdu�Z;dvdw�Z<dxdy�Z=dzd{�Z>d|d}�Z?d~d�Z@d�d��ZAd�d��ZBd�d��ZCd�d��ZDd�d��ZEd�d��ZFd�d��ZGd�d��ZHd�d��ZId�d��ZJd�d��ZKd�d��ZLd�d��ZMd�d��ZNd�d��ZOd[S)��ConfigDialog�FcCs|tj||�||_|r(i|_|j�|jdd�|j|pQd�|jd|j�d|j	�|s�dndf�dd6dd7dd8dd9dd:dd;dd<dd=d d>d#d?d&d@d)dAd,dBd/dCi|_
|j�|j�|j
d2td3t�|j|�|j�|jd4|j�|jj�|j�|j�|sx|j�|j�d5S)Dz�
        _htest - bool, change box location when running htest
        _utest - bool, don't wait_window when running unittest
        �borderwidth�zIDLE Preferencesz+%d+%d���zNormal Text�normal�00zPython Keywords�keyword�01zPython Definitions�
definition�02zPython Builtins�builtin�03zPython Comments�comment�04zPython Strings�string�05z
Selected Text�hilite�06z
Found Text�hit�07�Cursor�cursor�08zEditor Breakpoint�break�09zShell Normal Text�console�10zShell Error Text�error�11zShell Stdout Text�stdout�12zShell Stderr Text�stderr�13�height�widthZWM_DELETE_WINDOWN)rr)zkeywordr)rr)rr)rr)zstringr)rr)r r!)zcursorr$)zbreakr&)r'r()zerrorr*)zstdoutr,)zstderrr.)�Toplevel�__init__�parent�
instance_dictZwm_withdraw�	configure�titleZgeometryZwinfo_rootxZwinfo_rooty�
themeElements�ResetChangedItems�
CreateWidgetsZ	resizable�FALSEZ	transientZgrab_setZprotocol�Cancel�tabPagesZ	focus_set�LoadConfigs�AttachVarCallbacksZwm_deiconifyZwait_window)�selfr3r6Z_htestZ_utest�r@�*/usr/lib/python3.5/idlelib/configDialog.pyr2sH		
!







zConfigDialog.__init__cCs�t|ddddddg�|_|jjdtdtd	t�|j�|j�|j�|j	�|j
�|j�jdt�dS)
NZ
page_namesz
Fonts/Tabs�Highlighting�Keys�General�
Extensions�side�expand�fill)
rr<�pack�TOP�TRUE�BOTH�CreatePageFontTab�CreatePageHighlight�CreatePageKeys�CreatePageGeneral�CreatePageExtensions�create_action_buttons�BOTTOM)r?r@r@rAr9Qs	




zConfigDialog.CreateWidgetsc
Cs�tj�ri}nddddi}t|dd�}t|dd�}xud|jfd|jfd|jfd	|jffD]=\}}t|d
|d|dt|�j	d
t
dd�q�Wt|dddd�j	d
t�|j	d
t�|S)N�padx��pady���Ok�Applyr;�Help�text�command�	takefocusrFrr/r
r)
r
ZisAquaTk�FramerYrZr;r[�Buttonr:rI�LEFTrJrS)r?ZpaddingArgsZouterZbuttonsZtxt�cmdr@r@rArR]s	"z"ConfigDialog.create_action_buttonscCs�|j}t|�|_t|�|_t|�|_t|�|_tj	|d+�|_
|jjdj
}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),N�courier�
rz
Fonts/Tabsr
rX�reliefr\z Base Editor Font z Indentation Width ZjustifyzFont Face :r/rr^�exportselectionz<ButtonRelease-1>r]�yscrollcommandzSize :�variable�onvalue��offvaluerZBold�fontz,AaBbCcDdEe
FfGgHhIiJjK
1234567890
#:+=(){}[]zPython Standard: 4 Spaces!�orientZ
horizontalZtickintervalZfrom_Zto�rFrTrVrGrH�anchorr)rcrdznormal)+r3�	StringVar�fontSize�
BooleanVar�fontBold�fontName�IntVar�spaceNum�tkFontZFontZeditFontr<�pages�frame�
LabelFrame�GROOVEr_�Labelra�Listboxr:�listFontName�bind�OnListFontButtonRelease�	Scrollbar�config�yview�setr�
SetFontSample�optMenuFontSize�Checkbutton�SOLID�labelFontSampleZScaleZ
scaleSpaceNumrIrKrL�YrJ�X�W)r?r3ryZ	frameFontZframeIndentZ
frameFontNameZframeFontParamZlabelFontNameTitleZ
scrollFontZlabelFontSizeTitleZ
checkFontBoldZframeFontSampleZframeIndentSizeZlabelSpaceNumTitler@r@rArMrsn		
	("""(zConfigDialog.CreatePageFontTabc!Cs�|j}t|�|_t|�|_t|�|_t|�|_t|�|_t|�|_t|�|_	|j
jdj}t
|dddtdd�}t
|dddtdd�}t|dtddd	d\d
ddddddtdddt�	|_|j}|jddd��|jddd��d}}x)|D]!}|jt|d|d�qHWx>|jD]3}|dBdC�}	|j|j|ddD|	�qwW|jdEt�t|dtdd�|_t|�}
t|jddFdG|jdd�}t|j|j	ddd�|_ t!|
dH|jdIdddJdG|j"�|_#t!|
dH|jdIdddKdG|j"�|_$|jj%d�t|ddLdG|j&�}t'|ddM�}
t!|dH|jdIddG|j(ddN�|_)t!|dH|jdIddG|j(ddO�|_*t||jddGd�|_+t||jddGd�|_,t|ddPdG|j-�|_.t'|dQd�|_/|j0dRt1dSdTdUdTdVt2dWt3�|j0dRt1dSdTdUdTdWt4�|jj0dRt5dSdTdUdTdVt2dWt6�|
j0dRt5dSdTdUd�|jj0dRt5dSdTdUdTdVt2dWt3�|j0dRt5dVt2dWt6dSdXdUdY�|j j0dRt5dVt2dWt6dSdXdUdZ�|j#j0dRt1d[t7�|j$j0dRt8d[t9�|j0dRt:dWt6dSdTdUdT�|
j0dRt5d[t9dSdTdUdT�|j)j0dRt5d[t9dSdT�|j*j0dRt5d[t9dSdTdUd�|j+j0dRt5dWt6dSdTdUdT�|j,j0dRt5dWt6d[t9dSdTdUdT�|j.j0dRt5dWt6dSdTdUdT�|j/j0dRt5dWt6dUdT�|S)~NrBr
rXrer\z Custom Highlighting z Highlighting Theme rjrlrc�rr#Zhand2r0�r/�r^�highlightthicknessrZwrapz<Double-Button-1>cSsdS)Nr%r@)�er@r@rA�<lambda>�sz2ConfigDialog.CreatePageHighlight.<locals>.<lambda>z<B1-Motion>cSsdS)Nr%r@)r�r@r@rAr��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-cSs|jj�jj|�dS)N)ZwidgetZwinfo_toplevel�highlightTargetr�)�event�elemr@r@rA�tem�sz-ConfigDialog.CreatePageHighlight.<locals>.temz<ButtonPress-1>�statezChoose Colour for :r]rh�valueZ
ForegroundZ
BackgroundzSave as New Custom Themez	Select : za Built-in Themeza Custom ThemezDelete Custom Theme�bdrFrTrrVrGrH��rWro)zcourierr�r�r��comment�r��normal�r�r��r�r��zdef�keyword�r�r��zfuncz
definition�r�r��r��string�r�r��r�r��r�r��r�zhilite�r�r��r�zhit�r�r��zlistzbuiltin�r�r��zNoner��r�r��r�zbreak�r�r��r�zerror�r�r��r�r#�r�r��zshellzconsole�r�r���stdoutr��r�r���stderrr��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�);r3rp�builtinTheme�customThemerr�fgHilite�colourrt�themeIsBuiltinr�r<rxryrzr{ZTextr�r:ZNONE�textHighlightSampler�insert�ENDr7Ztag_bindr��DISABLEDr_�frameColourSetr`�	GetColourr�optMenuHighlightTarget�Radiobutton�SetColourSampleBinding�radioFg�radioBgr��SaveAsNewThemer|�SetThemeTypeZradioThemeBuiltin�radioThemeCustom�optMenuThemeBuiltin�optMenuThemeCustom�DeleteCustomTheme�buttonDeleteCustomTheme�new_custom_themerIrarKrLr�rJr��E�RIGHTr�rS)r?r3ry�frameCustomZ
frameThemer\ZtextAndTagsZtxTa�elementr�Z	frameFgBgZbuttonSetColourZbuttonSaveCustomThemeZlabelTypeTitler@r@rArN�s�				
("+(""%%+%z ConfigDialog.CreatePageHighlightc
s�|j}t|�|_t|�|_t|�|_t|�|_t|�|_|jj	dj
}t|dddtdd�}t|dddtdd��t
|�}t|dd�}t|�}t|d	t�}t|d
tdt�|_|jjd|j�|jd
|jj�|jd
|jj�|jjd|j�|jjd|j�t|ddd
|jdt�|_�fdd�td�D�}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*ddddd t+d!t,��j)dt*ddddd!t,�|jj)dt*d!t-dddd�|j)dt.ddddd t+d!t,�|j/dd"d�|j0dd"d�|j1d#dd$dd%dd&t2�|jj1d#dd$dd&t3�|j1d#dd$dd&t4�|j1d#dd$dd&t5�|j!j1d#dd$dd&t2t4�|j"j1d#dd$dd&t2t4�|j$j1d#dd$dd&t3�|j%j1d#dd$dd&t3�|j'j)dt.d!t-d d'dd�|	j)dt.d!t-d d'dd�|dj)dt6d!t,d d'�|dj)dt6d!t-d d'dd�|S)(NrCr
rXrer\z Custom Key Bindings z	 Key Set zAction - Key(s)rmr^rfz<ButtonRelease-1>r]rgZxscrollcommandzGet New Keys for Selectionr�c
s.g|]$}t�dddddd��qS)rTrXrVr
r)r_)�.0�i)�frameKeySetsr@rA�
<listcomp>Fs	z/ConfigDialog.CreatePageKeys.<locals>.<listcomp>rrhr�rjzUse a Built-in Key SetzUse a Custom Key SetzDelete Custom Key SetzSave as New Custom Key SetrFrTrrVrGrH�weight�row�columnZ
columnspan�stickyT)7r3rpZ
bindingTarget�builtinKeys�
customKeysrr�keysAreBuiltin�
keyBindingr<rxryrzr{r_r|r�Z
HORIZONTALr}r:�listBindingsr�KeyBindingSelectedr�r�Zxviewr�r`�
GetNewKeysr��
buttonNewKeys�ranger��SetKeysTypeZradioKeysBuiltin�radioKeysCustomr�optMenuKeysBuiltin�optMenuKeysCustom�DeleteCustomKeys�buttonDeleteCustomKeys�SaveAsNewKeySetrIrSrKrLr�ra�columnconfigure�rowconfigure�gridr��NSEWZNSZEWrJ)
r?r3ryr�ZframeTargetZlabelTargetTitleZ
scrollTargetYZ
scrollTargetXZframesZbuttonSaveCustomKeysr@)r�rArO%s~		("%("##%" &zConfigDialog.CreatePageKeyscCs|j}t|�|_t|�|_t|�|_t|�|_t|�|_t|�|_	t|�|_
|jjdj
}t|dddtdd�}t|dddtdd�}t|dddt�}t|dddtdd�}t|dd	�}t|d
|jddd
|jdd�}t|d
|jddd
|jdd�}	t|dd�}
t|d
|jddd
|jdd�}t|d
|jddd
|jdd�}t|dd�}
t|dd�}t|d|jdd�}t|dd�}t|d|jdd�}t|�}t|�}t|�}t|dddtdt�|_|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&dd'dd(t(�|j&d%t'd&dd'dd(t(�|j&d%t'd&dd'dd(t(�|j&d%t'd&dd'dd)t)d(t*�|j&d%t+d*t,d&dd'd�|	j&d%t-d*t,d&dd'd�|j&d%t-d*t,d&dd'd�|
j&d%t+d*t,d&dd'd�|j&d%t-d*t,d&dd'd�|j&d%t-d*t,d&dd'd�|
j&d%t+d*t,d&dd'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&dd'dd(t/�|j&d%t'd&dd'dd)t)d(t*�|j&d%t-d*t,d(t/�|jj&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),NrDr
rXrer\z Startup Preferences z Autosave Preferences z Additional Help Sources z
At Startuprhr�rjr]zOpen Edit WindowrzOpen Shell WindowzAt Start of Run (F5)  zPrompt to Savez	No Promptz$Initial Window Size  (in characters)ZWidth�textvariabler0rWZHeightr/rr^rfrgz<ButtonRelease-1>ZEditr�r�ZAddZRemoverFrTrVrHrGrord)0r3rp�winWidth�	winHeightru�startupEdit�autoSave�encodingrrZuserHelpBrowserZhelpBrowserr<rxryrzr{r_r|r�r�Entryr�r}r:�listHelpr�r�r�r�HelpSourceSelectedr`r��HelpListItemEdit�buttonHelpListEdit�HelpListItemAddZbuttonHelpListAdd�HelpListItemRemove�buttonHelpListRemoverIrJr�rKrLrar�r�r�r�)r?r3ryZframeRunZ	frameSaveZframeWinSizeZ	frameHelpZlabelRunChoiceTitleZradioStartupEditZradioStartupShellZlabelRunSaveTitleZradioSaveAskZ
radioSaveAutoZlabelWinSizeTitleZlabelWinWidthTitleZ
entryWinWidthZlabelWinHeightTitleZentryWinHeightZ
frameHelpListZframeHelpListButtonsZscrollHelpListr@r@rArPrs�				"""(""""""""""(%zConfigDialog.CreatePageGeneralcCs�|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)N�w)#rqZtrace_variable�VarChanged_fontrtrsrv�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@rAr>�s$zConfigDialog.AttachVarCallbackscCs�x�|j|j|j|j|j|j|j|j|j|j	|j
|j|j|j
|j|j|j|jfD]$}|jd|j�dd�qsWdS)z)Remove callbacks to prevent memory leaks.r!rrjN)rqrtrsrvr�r�r�r�r�rr�rrrrrrrZ
trace_vdeleteZtrace_vinfo)r?�varr@r@rA�remove_var_callbacks�sz!ConfigDialog.remove_var_callbackscGss|jj�}|jddd|�|jj�}|jddd|�|jj�}|jddd|�dS)z�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.
        �main�EditorWindowrlz	font-sizez	font-boldN)rt�get�AddChangedItemrqrs)r?�paramsr�r@r@rAr"�szConfigDialog.VarChanged_fontcGs)|jj�}|jddd|�dS)Nr4�Indentz
num-spaces)rvr6r7)r?r8r�r@r@rAr#�sz ConfigDialog.VarChanged_spaceNumcGs|j�dS)N)�OnNewColourSet)r?r8r@r@rAr$szConfigDialog.VarChanged_colourcGs�|jj�}|dkr~tjddd�dkrL|jdddd�|jddd|�|jjdd	d
d�nE|jddd|�|jdddd�|jjddd
d
�|j�dS)Nz	IDLE Darkr4�Theme�namezIDLE NewzIDLE ClassicZname2r\zNew theme, see HelpZfgz#500000rZblack)r�r6r�	GetOptionr7r�r��PaintThemeSample)r?r8r�r@r@rAr%s
z$ConfigDialog.VarChanged_builtinThemecGs?|jj�}|dkr;|jddd|�|j�dS)Nz- no custom themes -r4r;r<)r�r6r7r>)r?r8r�r@r@rAr&sz#ConfigDialog.VarChanged_customThemecGsF|jj�}|jddd|�|r8|j�n
|j�dS)Nr4r;�default)r�r6r7r%r&)r?r8r�r@r@rAr's

z&ConfigDialog.VarChanged_themeIsBuiltincGs|j�dS)N)�SetHighlightTarget)r?r8r@r@rAr( sz'ConfigDialog.VarChanged_highlightTargetcGs�|jj�}|jj�}|jjt�j�d}tj|�rb|jd|||�n/tj	|�}|d}|jd|||�dS)Nr�keysZ_cfgBindings�
extensions)
rr6rr�ANCHOR�splitrZ
IsCoreBindingr7ZGetExtnNameForEvent)r?r8r��keySetr�ZextNameZextKeybindSectionr@r@rAr)#s
z"ConfigDialog.VarChanged_keyBindingcGs6|jj�}|jddd|�|j|�dS)Nr4rCr<)r�r6r7�LoadKeysList)r?r8r�r@r@rAr*/sz#ConfigDialog.VarChanged_builtinKeyscGsB|jj�}|dkr>|jddd|�|j|�dS)Nz- no custom keys -r4rCr<)rr6r7rF)r?r8r�r@r@rAr+4sz"ConfigDialog.VarChanged_customKeyscGsF|jj�}|jddd|�|r8|j�n
|j�dS)Nr4rCr?)rr6r7r*r+)r?r8r�r@r@rAr,:s

z&ConfigDialog.VarChanged_keysAreBuiltincGs)|jj�}|jddd|�dS)Nr4r5r0)rr6r7)r?r8r�r@r@rAr-Bsz ConfigDialog.VarChanged_winWidthcGs)|jj�}|jddd|�dS)Nr4r5r/)rr6r7)r?r8r�r@r@rAr.Fsz!ConfigDialog.VarChanged_winHeightcGs)|jj�}|jddd|�dS)Nr4rDzeditor-on-startup)rr6r7)r?r8r�r@r@rAr/Jsz#ConfigDialog.VarChanged_startupEditcGs)|jj�}|jddd|�dS)Nr4rD�autosave)rr6r7)r?r8r�r@r@rAr0Nsz ConfigDialog.VarChanged_autoSavecGs)|jj�}|jddd|�dS)Nr4r5r)rr6r7)r?r8r�r@r@rAr1Rsz ConfigDialog.VarChanged_encodingcCs%didididii|_dS)Nr4�	highlightrArB)�changedItems)r?r@r@rAr8VszConfigDialog.ResetChangedItemscCsIt|�}||j|kr0i|j||<||j|||<dS)N)�strrI)r?�typ�section�itemr�r@r@rAr7_szConfigDialog.AddChangedItemcCs�didididii}x�|D]�}tjd|�}xh|D]`}i|||<tj|j|�}x3|D]+}tj|j||�||||<quWqDWq%W|S)Nr4rHrArBr?)r�GetSectionList�
defaultCfg�
GetOptionList�Get)r?ZdItems�
configTypeZsectionsrL�optionsZoptionr@r@rA�GetDefaultItemses


1zConfigDialog.GetDefaultItemscCs�|jj�rK|jjdt�|jjdt�|jjdt�nL|jjdt�|jjdt�|jjdt�|jjdt�dS)Nr�)	r�r6r�r��NORMALr�r�r�r�)r?r@r@rAr�qszConfigDialog.SetThemeTypecCs�|jj�rK|jjdt�|jjdt�|jjdt�nL|jjdt�|jjdt�|jjdt�|jjdt�dS)Nr�)	rr6r
r�rUrr�r
r	)r?r@r@rAr|szConfigDialog.SetKeysTypecCs�|jjt�}|jj|�}|j�d}|jj�rU|jj�}n|jj�}tj	�}||j
dkr�|j
d|}x"|D]}||j�||<q�Wt|j��}t
|d||�j}	|	r�|jj�rDd}
|j|
�}|s7|jj|�|jj|�dS|j|�|jj|�|jj||d|	�|jj|�|jj|�|jj|	�n |jj|�|jj|�dS)NrrAz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�indexrCr6rDrr�rrZGetCurrentKeySetrIr��valuesr�result�GetNewKeysName�
select_set�
select_anchor�CreateNewKeySet�deleter�rr�)r?�	listIndex�binding�bindNameZcurrentKeySetNameZcurrentBindings�
keySetChangesr�ZcurrentKeySequences�newKeys�message�	newKeySetr@r@rAr�s<

zConfigDialog.GetNewKeyscCs>tjdd�tjdd�}t|d||�j}|S)N�userrAr?zNew Custom Key Set)rrNrrX)r?rc�	usedNamesrdr@r@rArY�s
zConfigDialog.GetNewKeysNamecCs&|jd�}|r"|j|�dS)NzNew Key Set Name:)rYr\)r?ZnewKeysNamer@r@rAr�szConfigDialog.SaveAsNewKeySetcCs|jjdt�dS)Nr�)rr�rU)r?r�r@r@rAr�szConfigDialog.KeyBindingSelectedc
Cs#|jj�r!|jj�}n|jj�}tj|�}i}x;|D]3}|dd�}dj||�}|||<qLW||jdkr�|jd|}x|D]}||||<q�W|j||�tj	dd�}	|	j
�|jj|	|�|jj
d�|j�dS)NrXr�rArer���)rr6r�rrZGetCoreKeys�joinrI�
SaveNewKeySetrN�sortr�SetMenur�r)
r?Z
newKeySetNameZprevKeySetNameZprevKeysrbr�Z	eventNamer_raZ
customKeyListr@r@rAr\�s&


zConfigDialog.CreateNewKeySetc	Cs9d}d}|jj�r3d}|jjt�}tj|�}t|j��}|j�|jj	dt
�x�|D]�}dj||�}|dd�}||jdkr�||jd|kr�|jd||}|jj
t
|d|�qxW|r5|jj|�|jj|�|jj|�dS)Nrrjr�rXrAz - rg)r�curselectionrVrCrZ	GetKeySetr�rArjr]r�rhrIr��seerZr[)	r?�
keySetNameZreselectrdr^rEZ	bindNamesr`�keyr@r@rArF�s(

zConfigDialog.LoadKeysListcCs;|jj�}d}tjd||d|�s5dStjdj|�||jdkrj|jd|=tjdj�tj	dd�}|j
�|s�|jjdt
�|jj|d�n|jj||d�|jjtjd	jd
d��|jjtjd	jd
d��|j�|j�dS)
Nz0Are you sure you wish to delete the key set %r ?zDelete Key Setr3rArer�z- no custom keys -rr4rCr?r<)rr6�tkMessageBox�askyesnor�userCfg�remove_sectionrI�SaverNrjr	r�r�rrkrr�rOrQr�rZr)r?rn�delmsg�itemListr@r@rAr�s&
##
zConfigDialog.DeleteCustomKeyscCs;|jj�}d}tjd||d|�s5dStjdj|�||jdkrj|jd|=tjdj�tj	dd�}|j
�|s�|jjdt
�|jj|d�n|jj||d�|jjtjd	jd
d��|jjtjd	jd
d��|j�|j�dS)
Nz.Are you sure you wish to delete the theme %r ?zDelete Themer3rHrer�z- no custom themes -rr4r;r?r<)r�r6rprqrrrrsrIrtrNrjr�r�r�r�rkr�r�rOrQr�rZr�)r?�	themeNamerurvr@r@rAr�s&
##
zConfigDialog.DeleteCustomThemecCs�|jj�}|jjd�}tjd|dd|d|�\}}|r�||kr�|jj�r�d}|j|�}|s�dS|j|�|j	j
|�n|j	j
|�dS)N�bgr3r6zPick 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�r6r�Zcget�tkColorChooserZaskcolorr��GetNewThemeName�CreateNewThemer�r�)r?�targetZ
prevColourZ	rgbTupletZcolourStringrc�newThemer@r@rAr�"s	
zConfigDialog.GetColourcCs�|jj�}|jjd|�|jj�r7dnd}|j|jj�d}|jj|||i�|j	j�}|d|}|j
d|||�dS)Nrx�
foreground�
backgroundr�-rH)r�r6r�r�r�r7r�r��
tag_configr�r7)r?Z	newColour�planeZ
sampleElement�themeZthemeElementr@r@rAr:6szConfigDialog.OnNewColourSetcCs>tjdd�tjdd�}t|d||�j}|S)NrerHr?zNew Custom Theme)rrNrrX)r?rcrfr}r@r@rArz@s
zConfigDialog.GetNewThemeNamecCs&|jd�}|r"|j|�dS)NzNew Theme Name:)rzr{)r?�newThemeNamer@r@rAr�GszConfigDialog.SaveAsNewThemecCs�|jj�r'd}|jj�}nd}|jj�}tj||�}||jdkr�|jd|}x|D]}||||<qyW|j||�tjdd�}|j	�|j
j||�|jjd�|j
�dS)Nr?rerHr)r�r6r�r�rZGetThemeDictrI�SaveNewThemerNrjr�rkr�r�)r?r�Z	themeTyperwr}ZthemeChangesr�ZcustomThemeListr@r@rAr{Ls 

zConfigDialog.CreateNewThemecCs6|jjt�}|jj|j��|j�dS)N)r~r6rCrtr��lowerr�)r?r�rlr@r@rAr�dsz$ConfigDialog.OnListFontButtonReleaseNcCsr|jj�}|jj�r'tjntj}||jj�|f}|jjd|�|j	j
d|�dS)Nrl)rtr6rsrwZBOLDrUrqr�r�r�r5)r?r�rtZ
fontWeightZnewFontr@r@rAr�is
!zConfigDialog.SetFontSamplecCs�|jj�dkrN|jjdt�|jjdt�|jjd�n6|jjdt�|jjdt�|jjd�|j	�dS)Nr"r�rj)
r�r6r�r�r�r�r�r�rU�SetColourSample)r?r@r@rAr@pszConfigDialog.SetHighlightTargetcGs|j�dS)N)r�)r?�argsr@r@rAr�{sz#ConfigDialog.SetColourSampleBindingcCsa|j|jj�d}|jj�r/dnd}|jj||�}|jjd|�dS)Nrr~rrx)r7r�r6r�r�Ztag_cgetr�r�)r?�tagr�r�r@r@rAr�~szConfigDialog.SetColourSamplecCs|jj�r!|jj�}n|jj�}x�|jD]�}|j|d}tj||�}|dkr�tj|ddd�|d<||jdkr�|jd|}|d|kr�||d|d	<|d
|kr�||d
|d<|jj	||�q:W|j
�dS)Nrr#rZfgBgrxrrHz-foregroundr~z-background)r�r6r�r�r7rZGetHighlightrIr�r�r�)r?r�ZelementTitler�ZcoloursZ	themeDictr@r@rAr>�s"zConfigDialog.PaintThemeSamplecCs|j�dS)N)�SetHelpListButtonStates)r?r�r@r@rAr�szConfigDialog.HelpSourceSelectedcCs�|jj�dkr>|jjdt�|jjdt�n^|jj�rv|jjdt�|jjdt�n&|jjdt�|jjdt�dS)Nrjr�)r�sizerr�r�r rlrU)r?r@r@rAr��sz$ConfigDialog.SetHelpListButtonStatescCset|d�j}|rW|jj|d|df�|jjt|d�|j�|j�dS)NzNew Help Sourcerrj)	rrX�userHelpList�appendrr�r��UpdateUserHelpChangedItemsr�)r?�
helpSourcer@r@rAr�s
zConfigDialog.HelpListItemAddcCs�|jjt�}|j|}t|dd|dd|d�j}|sX||kr\dS||j|<|jj|�|jj||d�|j�|j	�dS)NzEdit Help SourceZmenuItemrZfilePathrj)
rrVrCr�rrXr]r�r�r�)r?�	itemIndexr�Z
newHelpSourcer@r@rAr�s


zConfigDialog.HelpListItemEditcCsD|jjt�}|j|=|jj|�|j�|j�dS)N)rrVrCr�r]r�r�)r?r�r@r@rAr�s


zConfigDialog.HelpListItemRemovec	Csvi|jdd<x^tdt|j�d�D]@}|jddt|�dj|j|ddd���q.WdS)z<Clear and rebuild the HelpFiles section in self.changedItemsr4�	HelpFilesrj�;NrX)rIr�lenr�r7rJrh)r?Znumr@r@rAr��s
#z'ConfigDialog.UpdateUserHelpChangedItemsc	Cs.ttj|��}|j�x!|D]}|jjt|�q&Wtj|dd�}|dj	�}|d}|ddk}|j
j|�dd�|D�}yC|j|�}|jj
|�|jj|�|jj|�Wntk
r�YnX|jjd|�|jj|�|j�dS)Nr4r5rrjrXZboldcSsg|]}|j��qSr@)r�)r��sr@r@rAr��s	z,ConfigDialog.LoadFontCfg.<locals>.<listcomp>�7�8�9r(r*r,r.�14�16�18�20�22)r�r�r�z10z11z12z13r�r�r�r�r�)r�rwZfamiliesrjr~r�r�rZGetFontr�rtr�rVrmrZr[�
ValueErrorr�rkrsr�)	r?ZfontsrlZconfiguredFontrtrqrsZlc_fontsZcurrentFontIndexr@r@rA�LoadFontCfg�s*



	
zConfigDialog.LoadFontCfgcCs5tjddddddd�}|jj|�dS)Nr4r9z
num-spacesr?r��type�int)rr=rvr�)r?rvr@r@rA�
LoadTabCfg�szConfigDialog.LoadTabCfgc	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�t�jj��}|jd�fd
d���jj	||d��j��j�dS)Nr4r;r?r��boolrjrHrer�z- no custom themes -rrocs�j|dS)Nrj)r7)�x)r?r@rAr�sz+ConfigDialog.LoadThemeCfg.<locals>.<lambda>)r�r�rr=ZCurrentThemer6rNrjr�rkr�r�r�r�r�r�r�r7rAr�r>r@)r?�
currentOptionrvZ
themeNamesr@)r?rA�LoadThemeCfg�s2





zConfigDialog.LoadThemeCfgc	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)Nr4rCr?r�r�rjrArer�z- no custom keys -r)rr�rr=ZCurrentKeysr6rNrjr
rkr	r�r�rrrrF)r?r�rvrnr@r@rA�
LoadKeyCfgs,




zConfigDialog.LoadKeyCfgc	Cs
|jjtjddddddd��|jjtjddddd	dd��|jjtjdd
ddd��|jjtjdd
d
dd��|jjtjdd
ddd��tj�|_	x(|j	D]}|j
jt|d	�q�W|j
�dS)Nr4rDzeditor-on-startupr?rjr�r�rGrr5r0r�r/rZnone)rr�rr=rrrrZGetAllExtraHelpSourcesListr�rr�r�r�)r?ZhelpItemr@r@rA�LoadGeneralCfg.szConfigDialog.LoadGeneralCfgcCs6|j�|j�|j�|j�|j�dS)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@rAr=Cs




zConfigDialog.LoadConfigscCsctjdj|�s*tjdj|�x2|D]*}||}tjdj|||�q1WdS)z�
        save a newly created core key set.
        keySetName - string, the name of the new key set
        keySet - dictionary containing the new key set
        rAN)rrr�has_section�add_section�	SetOption)r?rnrEr�r�r@r@rAriSs


zConfigDialog.SaveNewKeySetcCsctjdj|�s*tjdj|�x2|D]*}||}tjdj|||�q1WdS)z�
        save a newly created theme.
        themeName - string, the name of the new theme
        theme - dictionary containing the new theme
        rHN)rrrr�r�r�)r?rwr�r�r�r@r@rAr�_s


zConfigDialog.SaveNewThemecCsitj|j||�rOtj|j||�|krOtj|j||�Stj|j|||�S)N)rrOZ
has_optionrQrr�RemoveOptionr�)r?rRrLrMr�r@r@rA�SetUserValuekszConfigDialog.SetUserValuecCstjdj�x�|jD]�}d}x�|j|D]{}|dkratjdjd�d}xL|j||D]9}|j|||}|j||||�rsd}qsWq5W|rtj|j�qWx%ddgD]}tj|j�q�W|j�|j�dS)z3Save configuration changes to the user config file.r4Fr�TrArHN)rrrrtrIrsr�r8�save_all_changed_extensions)r?rRZcfgTypeHasChangesrLrMr�r@r@rA�SaveAllChangedConfigsss"
z"ConfigDialog.SaveAllChangedConfigscCs1|jjj�}x|D]}|j�qWdS)N)r3r4rAZRemoveKeybindings)r?�winInstances�instancer@r@rA�DeactivateCurrentConfig�s
z$ConfigDialog.DeactivateCurrentConfigcCsY|jjj�}x@|D]8}|j�|j�|j�|j�|j�qWdS)z'Dynamically apply configuration changesN)r3r4rAZResetColorizerZ	ResetFontZset_notabs_indentwidthZApplyKeybindingsZreset_help_menu_entries)r?r�r�r@r@rA�ActivateConfigChanges�s




z"ConfigDialog.ActivateConfigChangescCs|j�dS)N)�destroy)r?r@r@rAr;�szConfigDialog.CancelcCs|j�|j�dS)N)rZr�)r?r@r@rArY�s
zConfigDialog.OkcCs"|j�|j�|j�dS)N)r�r�r�)r?r@r@rArZ�s

zConfigDialog.Applyc	Cs6|jj}t|dddttj|d��dS)Nr6zHelp for IDLE preferencesr\r)r<Z
_current_pager	�help_common�
help_pagesr6)r?Zpager@r@rAr[�szConfigDialog.Helpc
Cs|j}|jjdj}tjd|_tjd|_|j	t
�|_
|j�t|�|_
|jddd�|jddd�t|d|j
dd	�|_|jjd
|j�t|d|jj�}|j|j_t|dd
dd
�|_|jjdddddd�|jdddddd�|jjdddddddddg�|jdddd�i|_d|_||_|j|_d}x6t |j!�D]%}|j"|�|d|d}q�W|j
j|�|jj#d�|jd�dS)aPart 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.
        rErBrr�rjrXZlistvariableZ
selectmodeZbrowsez<<ListboxSelect>>r]r0�r/r�r�r�Znws�ns�nsewrTrdrVNr�{z} )$r3r<rxryrrO�ext_defaultCfgrr�ext_userCfg�register�is_int�load_extensionsrpZextension_namesrrr}�extension_listr�extension_selectedr�r�r�rgrz�
details_framerr5�config_frame�current_extensionZ
outerframeZtabbed_page_set�sortedrB�create_extension_frameZ
selection_set)r?r3ryZscrollZ	ext_names�ext_namer@r@rArQ�s<	
+			
z!ConfigDialog.CreatePageExtensionsc
#Cs�i|_x'tjdd�D]}g|j|<qWx�|jD]�}t|jj|��}dd�|D�}x|D]}|j|�quW||}x,|D]$}|jj||dd�}y ddddi|}d	}WnItk
r)yt	|�}d
}Wnt
k
r$|}d}YnXYnXy+|jj||d|ddd
|�}Wnt
k
ro|}YnXt|�}	|	j
t|��|j|jd|d|d
|d|d|	i�q�Wq=WdS)zAFill self.extensions with data from the default and user configs.Zactive_onlyFcSs%g|]}|jd�r|�qS)�enable)�
startswith)r��opt_namer@r@rAr��s	z0ConfigDialog.load_extensions.<locals>.<listcomp>�rawT�True�Falser�r�Nr�r?r<r�r2)rBrZ
GetExtensionsr�r�rP�removerQ�KeyErrorr�r�r�rpr�rJr�)
r?r�Zopt_listZenablesr�Zdef_strZdef_objZopt_typer�r2r@r@rAr��sF	


	



	

zConfigDialog.load_extensionscCs�|jj�}|r'|jj|�}|dksB||jkr{|jr{|jjdd�|j|jj�d|_|r�|jjd|�|j|jdddddd�||_dS)Nr\rr�rr�r�r�)	r�rlr6r�r�r�r�Zgrid_forgetr)r?r�Znewselr@r@rAr�
s		#zConfigDialog.extension_selectedcCs~t|jdddd�}||j|<|j}xFt|j|�D]1\}}t|d|d�}|jd|ddd	t�|d
}|ddkr�t	|d
|d|dddddt
dddd�jd|ddd	tdd�qE|ddkrHt|d
|ddd|j
df�jd|ddd	tdd�qEt|d
|�jd|ddd	tdd�qEWdS) z=Create a frame holding the widgets to configure one extensionr/r�r0r\r<r�r�rr�r2r�r�rrhrir�rkr�ZindicatoronZselectcolorrr�rjrT�r�ZvalidateroZvalidatecommandz%PN)�VerticalScrolledFramer�r��interior�	enumeraterBr|r�NWr�r:r�rr�r)r?r��fZ
entry_arear��optZlabelr2r@r@rAr�s&
	 
z#ConfigDialog.create_extension_framecCsv|d}|d}|dj�j�p-|}|dj|�||kr`|jj||�S|jj|||�S)Nr<r?r2)r6�stripr�r�r�r�)r?rLr�r<r?r�r@r@rA�set_extension_value5s

z ConfigDialog.set_extension_valuecCsgd}xG|jD]<}|j|}x&|D]}|j||�r*d}q*WqW|rc|jj�dS)z3Save configuration changes to the user config file.FTN)rBr�r�rt)r?Zhas_changesr�rSr�r@r@rAr�As

z(ConfigDialog.save_all_changed_extensions)P�__name__�
__module__�__qualname__r2r9rRrMrNrOrPr>r3r"r#r$r%r&r'r(r)r*r+r,r-r.r/r0r1r8r7rTr�rrrYrrr\rFrr�r�r:rzr�r{r�r�r@r�r�r>rr�rrrr�r�r�r�r�r�r=rir�r�r�r�r�r;rYrZr[rQr�r�r�r�r�r@r@r@rArs�5DoM`	$
!
5-rahWhen 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.
rBz�
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.
cCs9|s
dSyt|�dSWntk
r4dSYnXdS)z(Return 's is blank or represents an int'TFN)r�r�)r�r@r@rAr�_s

r�c@s"eZdZdZdd�ZdS)r�z�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
s6tj||||�t|dt�}|jdtdtdt�t|ddddd|j	d	d
���jdt
dtdt�|j
d�j��jd��jd�t��|_��jddd�d
t����fdd�}�jd|����fdd�}�jd|�dS)NrmrHrFrGr�rr�rgr0��r]Zwindowrocs0�j��j�f}�jdd|�dS)NZscrollregionz	0 0 %s %s)�winfo_reqwidthZwinfo_reqheightr�)r�r�)�canvasr�r@rA�_configure_interior�sz;VerticalScrolledFrame.__init__.<locals>._configure_interiorz<Configure>cs5�j��j�kr1�j�d�j��dS)Nr0)r�Zwinfo_widthZ
itemconfigure)r�)r�r��interior_idr@rA�_configure_canvas�sz9VerticalScrolledFrame.__init__.<locals>._configure_canvas)r_r2r�ZVERTICALrIr�r�r:ZCanvasr�rarLrKr�r�Zxview_movetoZyview_movetor�Z
create_windowr�r)r?r3r��kwZ
vscrollbarr�r�r@)r�r�r�rAr2qs 

zVerticalScrolledFrame.__init__N)r�r�r��__doc__r2r@r@r@rAr�jsr��__main__z#idlelib.idle_test.test_configdialog�	verbosityrX�exitF)�run)'r�ZtkinterZtkinter.messageboxZ
messageboxrpZtkinter.colorchooserZcolorchooserryZtkinter.fontrlrwZidlelib.configHandlerrZidlelib.dynOptionMenuWidgetrZidlelib.keybindingDialogrZidlelib.configSectionNameDialogrZidlelib.configHelpSourceEditrZidlelib.tabbedpagesrZidlelib.textViewr	Zidlelibr
r1rr�r�r�r_r�r�Zunittestr4Zidlelib.idle_test.htestr�r@r@r@rA�<module>s:
�����?	+