1010from Tkinter import *
1111import tkMessageBox
1212
13+ import IdleConf
14+
1315class ConfigDialog (Toplevel ):
1416 """
1517 configuration dialog for idle
@@ -22,7 +24,7 @@ def __init__(self,parent,title,configDict):
2224 self .configure (borderwidth = 5 )
2325 self .geometry ("+%d+%d" % (parent .winfo_rootx ()+ 20 ,
2426 parent .winfo_rooty ()+ 30 ))
25- self .config = configDict
27+ self .LoadConfig ()
2628 #elguavas - config placeholders til config stuff completed
2729 self .bg = self .cget ('bg' )
2830 self .fg = None
@@ -38,7 +40,6 @@ def __init__(self,parent,title,configDict):
3840 self .parent = parent
3941 self .framePages .focus_set ()
4042 #key bindings for this dialog
41- # self.bind('<Return>',self.Ok) #dismiss dialog
4243 self .bind ('<Escape>' ,self .CancelBinding ) #dismiss dialog, no save
4344 self .bind ('<Alt-s>' ,self .SaveBinding ) #dismiss dialog, save
4445 self .bind ('<F1>' ,self .HelpBinding ) #context help
@@ -48,6 +49,17 @@ def __init__(self,parent,title,configDict):
4849 self .bind ('<Alt-g>' ,self .ChangePageBinding )
4950 self .wait_window ()
5051
52+ def LoadConfig (self ):
53+ #self.configParser=IdleConf.idleconf
54+ #self.loadedConfig={}
55+ #self.workingConfig={}
56+ #for key in .keys():
57+ #print self.configParser.getsection('Colors').options()
58+ self .workingTestColours = {
59+ 'Foo-Bg' : '#ffffff' ,
60+ 'Foo-Fg' : '#000000' ,
61+ 'Bar-Bg' : '#777777' }
62+
5163 def Cancel (self ):
5264 self .destroy ()
5365
@@ -68,7 +80,7 @@ def HelpBinding(self,event):
6880
6981 def ChangePage (self ):
7082 self .pages [self .pageNum .get ()].lift ()
71- self .title ('Settings -' + self .pageButtons [self .pageNum .get ()].cget ('text' ))
83+ self .title ('Settings - ' + self .pageButtons [self .pageNum .get ()].cget ('text' ))
7284
7385 def ChangePageBinding (self ,event ):
7486 pageKeys = ('f' ,'h' ,'k' ,'g' )
@@ -84,11 +96,21 @@ def SetThemeType(self):
8496 if self .themeType .get ()== 0 :
8597 self .optMenuThemeBuiltin .config (state = NORMAL )
8698 self .optMenuThemeCustom .config (state = DISABLED )
87- self .buttonDeleteCustom .config (state = DISABLED )
99+ self .buttonDeleteCustomTheme .config (state = DISABLED )
88100 elif self .themeType .get ()== 1 :
89101 self .optMenuThemeBuiltin .config (state = DISABLED )
90102 self .optMenuThemeCustom .config (state = NORMAL )
91- self .buttonDeleteCustom .config (state = NORMAL )
103+ self .buttonDeleteCustomTheme .config (state = NORMAL )
104+
105+ def SetKeysType (self ):
106+ if self .keysType .get ()== 0 :
107+ self .optMenuKeysBuiltin .config (state = NORMAL )
108+ self .optMenuKeysCustom .config (state = DISABLED )
109+ self .buttonDeleteCustomKeys .config (state = DISABLED )
110+ elif self .keysType .get ()== 1 :
111+ self .optMenuKeysBuiltin .config (state = DISABLED )
112+ self .optMenuKeysCustom .config (state = NORMAL )
113+ self .buttonDeleteCustomKeys .config (state = NORMAL )
92114
93115 def CreateWidgets (self ):
94116 self .framePages = Frame (self )
@@ -104,23 +126,23 @@ def CreateWidgets(self):
104126 #page buttons
105127 self .pageNum = IntVar ()
106128 self .pageNum .set (0 )
107- buttonPageFonts = Radiobutton (framePageButtons ,value = 0 ,
129+ buttonPageFontTab = Radiobutton (framePageButtons ,value = 0 ,
108130 text = 'Font/Tabs' ,padx = 5 ,pady = 5 )
109131 buttonPageHighlight = Radiobutton (framePageButtons ,value = 1 ,
110132 text = 'Highlighting' ,padx = 5 ,pady = 5 )
111133 buttonPageKeys = Radiobutton (framePageButtons ,value = 2 ,
112134 text = 'Keys' ,padx = 5 ,pady = 5 )
113135 buttonPageGeneral = Radiobutton (framePageButtons ,value = 3 ,
114136 text = 'General' ,padx = 5 ,pady = 5 )
115- self .pageButtons = (buttonPageFonts ,buttonPageHighlight ,
137+ self .pageButtons = (buttonPageFontTab ,buttonPageHighlight ,
116138 buttonPageKeys ,buttonPageGeneral )
117139 for button in self .pageButtons :
118140 button .config (command = self .ChangePage ,underline = 0 ,takefocus = FALSE ,
119141 indicatoron = FALSE ,highlightthickness = 0 ,variable = self .pageNum ,
120142 selectcolor = self .bg ,borderwidth = 1 )
121143 button .pack (side = LEFT )
122144 #pages
123- self .pages = (self .CreatePageFonts (),
145+ self .pages = (self .CreatePageFontTab (),
124146 self .CreatePageHighlight (),
125147 self .CreatePageKeys (),
126148 self .CreatePageGeneral ())
@@ -135,14 +157,14 @@ def CreateWidgets(self):
135157 frameActionButtons .pack (side = BOTTOM )
136158 self .framePages .pack (side = TOP ,expand = TRUE ,fill = BOTH )
137159
138- def CreatePageFonts (self ):
160+ def CreatePageFontTab (self ):
139161 frame = Frame (self .framePages ,borderwidth = 2 ,relief = SUNKEN )
140- Button (frame ,text = 'fonts page test' ).pack (padx = 30 ,pady = 30 )
162+ Button (frame ,text = 'font/tabs page test' ).pack (padx = 90 ,pady = 90 )
141163 return frame
142164
143165 def CreatePageHighlight (self ):
144166 #tkVars
145- self .target = StringVar ()
167+ self .highlightTarget = StringVar ()
146168 self .builtinTheme = StringVar ()
147169 self .customTheme = StringVar ()
148170 self .colour = StringVar ()
@@ -157,30 +179,30 @@ def CreatePageHighlight(self):
157179 #body section frames
158180 frameCustom = Frame (frame ,borderwidth = 2 ,relief = GROOVE )
159181 frameTheme = Frame (frame ,borderwidth = 2 ,relief = GROOVE )
160-
161182 #frameCustom
162183 frameTarget = Frame (frameCustom )
163- frameSample = Frame (frameCustom ,relief = SOLID ,borderwidth = 1 )
184+ frameSample = Frame (frameCustom ,relief = SOLID ,borderwidth = 1 ,
185+ bg = self .workingTestColours ['Foo-Bg' ])
164186 frameSet = Frame (frameCustom )
165- frameColourSet = Frame (frameSet ,relief = SOLID ,borderwidth = 1 )
187+ frameColourSet = Frame (frameSet ,relief = SOLID ,borderwidth = 1 ,
188+ bg = self .workingTestColours ['Foo-Bg' ])
166189 frameFontSet = Frame (frameSet )
167-
168190 labelCustomTitle = Label (frameCustom ,text = 'Set Custom Highlighting' )
169191 labelTargetTitle = Label (frameTarget ,text = 'for : ' )
170192 optMenuTarget = OptionMenu (frameTarget ,
171- self .target ,'test target interface item' ,'test target interface item 2' )
172- self .target .set ('test target interface item' )
193+ self .highlightTarget ,'test target interface item' ,'test target interface item 2' )
194+ self .highlightTarget .set ('test target interface item' )
173195 buttonSetColour = Button (frameColourSet ,text = 'Set Colour' )
174196 labelFontTitle = Label (frameFontSet ,text = 'Set Font Style' )
175197 checkFontBold = Checkbutton (frameFontSet ,variable = self .fontBold ,
176198 onvalue = 'Bold' ,offvalue = '' ,text = 'Bold' )
177199 checkFontItalic = Checkbutton (frameFontSet ,variable = self .fontItalic ,
178200 onvalue = 'Italic' ,offvalue = '' ,text = 'Italic' )
179201 labelTestSample = Label (frameSample ,justify = LEFT ,
180- text = 'def Ahem(foo,bar):\n test=foo\n text=bar\n return' )
181- buttonSaveCustom = Button (frameCustom ,
202+ text = 'def Ahem(foo,bar):\n test=foo\n text=bar\n return' ,
203+ bg = self .workingTestColours ['Foo-Bg' ])
204+ buttonSaveCustomTheme = Button (frameCustom ,
182205 text = 'Save as a Custom Theme' )
183-
184206 #frameTheme
185207 #frameDivider=Frame(frameTheme,relief=SUNKEN,borderwidth=1,
186208 # width=2,height=10)
@@ -197,13 +219,12 @@ def CreatePageHighlight(self):
197219 self .customTheme ,'test custom junk' ,'test custom junk 2' )
198220 self .customTheme .set ('test custom junk' )
199221 self .themeType .set (0 )
200- self .buttonDeleteCustom = Button (frameTheme ,text = 'Delete Custom Theme' )
222+ self .buttonDeleteCustomTheme = Button (frameTheme ,text = 'Delete Custom Theme' )
201223 self .SetThemeType ()
202-
203224 ##widget packing
204225 #body
205- frameCustom .pack (side = LEFT ,padx = 5 ,pady = 10 ,fill = Y )
206- frameTheme .pack (side = RIGHT ,padx = 5 ,pady = 10 ,fill = Y )
226+ frameCustom .pack (side = LEFT ,padx = 5 ,pady = 10 ,expand = TRUE , fill = BOTH )
227+ frameTheme .pack (side = LEFT ,padx = 5 ,pady = 10 ,fill = Y )
207228 #frameCustom
208229 labelCustomTitle .pack (side = TOP ,anchor = W ,padx = 5 ,pady = 5 )
209230 frameTarget .pack (side = TOP ,padx = 5 ,pady = 5 ,expand = TRUE ,fill = X )
@@ -218,8 +239,7 @@ def CreatePageHighlight(self):
218239 checkFontBold .pack (side = LEFT ,anchor = W ,pady = 2 )
219240 checkFontItalic .pack (side = RIGHT ,anchor = W )
220241 labelTestSample .pack ()
221- buttonSaveCustom .pack (side = BOTTOM ,fill = X ,padx = 5 ,pady = 5 )
222-
242+ buttonSaveCustomTheme .pack (side = BOTTOM ,fill = X ,padx = 5 ,pady = 5 )
223243 #frameTheme
224244 #frameDivider.pack(side=LEFT,fill=Y,padx=5,pady=5)
225245 labelThemeTitle .pack (side = TOP ,anchor = W ,padx = 5 ,pady = 5 )
@@ -228,13 +248,83 @@ def CreatePageHighlight(self):
228248 radioThemeCustom .pack (side = TOP ,anchor = W ,padx = 5 ,pady = 2 )
229249 self .optMenuThemeBuiltin .pack (side = TOP ,fill = X ,padx = 5 ,pady = 5 )
230250 self .optMenuThemeCustom .pack (side = TOP ,fill = X ,anchor = W ,padx = 5 ,pady = 5 )
231- self .buttonDeleteCustom .pack (side = TOP ,fill = X ,padx = 5 ,pady = 5 )
232-
251+ self .buttonDeleteCustomTheme .pack (side = TOP ,fill = X ,padx = 5 ,pady = 5 )
233252 return frame
234253
235254 def CreatePageKeys (self ):
255+ #tkVars
256+ self .bindingTarget = StringVar ()
257+ self .builtinKeys = StringVar ()
258+ self .customKeys = StringVar ()
259+ self .keyChars = StringVar ()
260+ self .keyCtrl = StringVar ()
261+ self .keyAlt = StringVar ()
262+ self .keyShift = StringVar ()
263+ self .keysType = IntVar ()
264+ ##widget creation
265+ #body frame
236266 frame = Frame (self .framePages ,borderwidth = 2 ,relief = SUNKEN )
237- Button (frame ,text = 'keys page test' ).pack (padx = 90 ,pady = 90 )
267+ #body section frames
268+ frameCustom = Frame (frame ,borderwidth = 2 ,relief = GROOVE )
269+ frameKeySets = Frame (frame ,borderwidth = 2 ,relief = GROOVE )
270+ #frameCustom
271+ frameTarget = Frame (frameCustom )
272+ frameSet = Frame (frameCustom )
273+ labelCustomTitle = Label (frameCustom ,text = 'Set Custom Key Bindings' )
274+ labelTargetTitle = Label (frameTarget ,text = 'Action' )
275+ scrollTarget = Scrollbar (frameTarget )
276+ listTarget = Listbox (frameTarget )
277+ labelKeyBindTitle = Label (frameSet ,text = 'Binding' )
278+ labelModifierTitle = Label (frameSet ,text = 'Modifier:' )
279+ checkCtrl = Checkbutton (frameSet ,text = 'Ctrl' )
280+ checkAlt = Checkbutton (frameSet ,text = 'Alt' )
281+ checkShift = Checkbutton (frameSet ,text = 'Shift' )
282+ labelKeyEntryTitle = Label (frameSet ,text = 'Key:' )
283+ entryKey = Entry (frameSet ,width = 4 )
284+ buttonSaveCustomKeys = Button (frameCustom ,text = 'Save as a Custom Key Set' )
285+ #frameKeySets
286+ labelKeysTitle = Label (frameKeySets ,text = 'Select a Key Binding Set' )
287+ labelTypeTitle = Label (frameKeySets ,text = 'Select : ' )
288+ radioKeysBuiltin = Radiobutton (frameKeySets ,variable = self .keysType ,
289+ value = 0 ,command = self .SetKeysType ,text = 'a Built-in Key Set' )
290+ radioKeysCustom = Radiobutton (frameKeySets ,variable = self .keysType ,
291+ value = 1 ,command = self .SetKeysType ,text = 'a Custom Key Set' )
292+ self .optMenuKeysBuiltin = OptionMenu (frameKeySets ,
293+ self .builtinKeys ,'test builtin junk' ,'test builtin junk 2' )
294+ self .builtinKeys .set ('test builtin junk' )
295+ self .optMenuKeysCustom = OptionMenu (frameKeySets ,
296+ self .customKeys ,'test custom junk' ,'test custom junk 2' )
297+ self .customKeys .set ('test custom junk' )
298+ self .keysType .set (0 )
299+ self .buttonDeleteCustomKeys = Button (frameKeySets ,text = 'Delete Custom Key Set' )
300+ self .SetKeysType ()
301+ ##widget packing
302+ #body
303+ frameCustom .pack (side = LEFT ,padx = 5 ,pady = 5 ,expand = TRUE ,fill = BOTH )
304+ frameKeySets .pack (side = LEFT ,padx = 5 ,pady = 5 ,fill = Y )
305+ #frameCustom
306+ labelCustomTitle .pack (side = TOP ,anchor = W ,padx = 5 ,pady = 5 )
307+ buttonSaveCustomKeys .pack (side = BOTTOM ,fill = X ,padx = 5 ,pady = 5 )
308+ frameTarget .pack (side = LEFT ,padx = 5 ,pady = 5 ,fill = Y )
309+ frameSet .pack (side = LEFT ,padx = 5 ,pady = 5 ,fill = Y )
310+ labelTargetTitle .pack (side = TOP ,anchor = W )
311+ scrollTarget .pack (side = RIGHT ,anchor = W ,fill = Y )
312+ listTarget .pack (side = TOP ,anchor = W ,expand = TRUE ,fill = BOTH )
313+ labelKeyBindTitle .pack (side = TOP ,anchor = W )
314+ labelModifierTitle .pack (side = TOP ,anchor = W ,pady = 5 )
315+ checkCtrl .pack (side = TOP ,anchor = W )
316+ checkAlt .pack (side = TOP ,anchor = W ,pady = 2 )
317+ checkShift .pack (side = TOP ,anchor = W )
318+ labelKeyEntryTitle .pack (side = TOP ,anchor = W ,pady = 5 )
319+ entryKey .pack (side = TOP ,anchor = W )
320+ #frameKeySets
321+ labelKeysTitle .pack (side = TOP ,anchor = W ,padx = 5 ,pady = 5 )
322+ labelTypeTitle .pack (side = TOP ,anchor = W ,padx = 5 ,pady = 5 )
323+ radioKeysBuiltin .pack (side = TOP ,anchor = W ,padx = 5 )
324+ radioKeysCustom .pack (side = TOP ,anchor = W ,padx = 5 ,pady = 2 )
325+ self .optMenuKeysBuiltin .pack (side = TOP ,fill = X ,padx = 5 ,pady = 5 )
326+ self .optMenuKeysCustom .pack (side = TOP ,fill = X ,anchor = W ,padx = 5 ,pady = 5 )
327+ self .buttonDeleteCustomKeys .pack (side = TOP ,fill = X ,padx = 5 ,pady = 5 )
238328 return frame
239329
240330 def CreatePageGeneral (self ):
0 commit comments