blob: 7072cdf45e34411564e90b73af7596a8bae896ca [file] [log] [blame]
Steven M. Gava44d3d1a2001-07-31 06:59:02 +00001##---------------------------------------------------------------------------##
2##
3## idle - configuration dialog
4## elguavas
5##
6##---------------------------------------------------------------------------##
7"""
8configuration dialog
9"""
10from Tkinter import *
11import tkMessageBox
12
Steven M. Gava60fc7072001-08-04 13:58:22 +000013import IdleConf
14
Steven M. Gava44d3d1a2001-07-31 06:59:02 +000015class ConfigDialog(Toplevel):
Steven M. Gava44d3d1a2001-07-31 06:59:02 +000016 """
Steven M. Gavad721c482001-07-31 10:46:53 +000017 configuration dialog for idle
18 """
19 def __init__(self,parent,title,configDict):
20 """
21 configDict - dictionary of configuration items
22 """
23 Toplevel.__init__(self, parent)
24 self.configure(borderwidth=5)
25 self.geometry("+%d+%d" % (parent.winfo_rootx()+20,
26 parent.winfo_rooty()+30))
Steven M. Gava60fc7072001-08-04 13:58:22 +000027 self.LoadConfig()
Steven M. Gavad721c482001-07-31 10:46:53 +000028 #elguavas - config placeholders til config stuff completed
29 self.bg=self.cget('bg')
30 self.fg=None
31 #no ugly bold default text font on *nix
32 self.textFont=tuple(Label().cget('font').split())[0:2]+('normal',)
Steven M. Gava44d3d1a2001-07-31 06:59:02 +000033
Steven M. Gavad721c482001-07-31 10:46:53 +000034 self.CreateWidgets()
35 self.resizable(height=FALSE,width=FALSE)
Steven M. Gava44d3d1a2001-07-31 06:59:02 +000036 self.ChangePage()
Steven M. Gavad721c482001-07-31 10:46:53 +000037 self.transient(parent)
38 self.grab_set()
39 self.protocol("WM_DELETE_WINDOW", self.Cancel)
40 self.parent = parent
41 self.framePages.focus_set()
42 #key bindings for this dialog
Steven M. Gavad721c482001-07-31 10:46:53 +000043 self.bind('<Escape>',self.CancelBinding) #dismiss dialog, no save
44 self.bind('<Alt-s>',self.SaveBinding) #dismiss dialog, save
Steven M. Gava952d0a52001-08-03 04:43:44 +000045 self.bind('<F1>',self.HelpBinding) #context help
Steven M. Gavad721c482001-07-31 10:46:53 +000046 self.bind('<Alt-f>',self.ChangePageBinding)
Steven M. Gava952d0a52001-08-03 04:43:44 +000047 self.bind('<Alt-h>',self.ChangePageBinding)
Steven M. Gavad721c482001-07-31 10:46:53 +000048 self.bind('<Alt-k>',self.ChangePageBinding)
49 self.bind('<Alt-g>',self.ChangePageBinding)
50 self.wait_window()
51
Steven M. Gava60fc7072001-08-04 13:58:22 +000052 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
Steven M. Gavad721c482001-07-31 10:46:53 +000063 def Cancel(self):
64 self.destroy()
65
66 def Save(self):
67 pass
68
Steven M. Gava952d0a52001-08-03 04:43:44 +000069 def Help(self):
Steven M. Gavad721c482001-07-31 10:46:53 +000070 pass
71
Steven M. Gavad721c482001-07-31 10:46:53 +000072 def CancelBinding(self,event):
73 self.Cancel()
Steven M. Gava44d3d1a2001-07-31 06:59:02 +000074
Steven M. Gavad721c482001-07-31 10:46:53 +000075 def SaveBinding(self,event):
76 self.Save()
Steven M. Gava44d3d1a2001-07-31 06:59:02 +000077
Steven M. Gava952d0a52001-08-03 04:43:44 +000078 def HelpBinding(self,event):
79 self.Help()
Steven M. Gava44d3d1a2001-07-31 06:59:02 +000080
Steven M. Gava952d0a52001-08-03 04:43:44 +000081 def ChangePage(self):
82 self.pages[self.pageNum.get()].lift()
Steven M. Gava60fc7072001-08-04 13:58:22 +000083 self.title('Settings - '+self.pageButtons[self.pageNum.get()].cget('text'))
Steven M. Gava952d0a52001-08-03 04:43:44 +000084
Steven M. Gavad721c482001-07-31 10:46:53 +000085 def ChangePageBinding(self,event):
Steven M. Gava952d0a52001-08-03 04:43:44 +000086 pageKeys=('f','h','k','g')
Steven M. Gavad721c482001-07-31 10:46:53 +000087 pos=0
88 for key in pageKeys:
89 if event.char == key:
90 self.pageNum.set(pos)
91 self.ChangePage()
92 return
93 pos=pos+1
94
Steven M. Gava952d0a52001-08-03 04:43:44 +000095 def SetThemeType(self):
96 if self.themeType.get()==0:
97 self.optMenuThemeBuiltin.config(state=NORMAL)
98 self.optMenuThemeCustom.config(state=DISABLED)
Steven M. Gava60fc7072001-08-04 13:58:22 +000099 self.buttonDeleteCustomTheme.config(state=DISABLED)
Steven M. Gava952d0a52001-08-03 04:43:44 +0000100 elif self.themeType.get()==1:
101 self.optMenuThemeBuiltin.config(state=DISABLED)
102 self.optMenuThemeCustom.config(state=NORMAL)
Steven M. Gava60fc7072001-08-04 13:58:22 +0000103 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)
Steven M. Gava952d0a52001-08-03 04:43:44 +0000114
Steven M. Gavad721c482001-07-31 10:46:53 +0000115 def CreateWidgets(self):
Steven M. Gava952d0a52001-08-03 04:43:44 +0000116 self.framePages = Frame(self)
Steven M. Gavad721c482001-07-31 10:46:53 +0000117 frameActionButtons = Frame(self)
118 framePageButtons = Frame(self.framePages,borderwidth=1,relief=SUNKEN)
119 #action buttons
Steven M. Gava952d0a52001-08-03 04:43:44 +0000120 self.buttonHelp = Button(frameActionButtons,text='Help',
121 command=self.Help,takefocus=FALSE)
122 self.buttonSave = Button(frameActionButtons,text='Save, Apply and Exit',
Steven M. Gavad721c482001-07-31 10:46:53 +0000123 command=self.Save,underline=0,takefocus=FALSE)
124 self.buttonCancel = Button(frameActionButtons,text='Cancel',
125 command=self.Cancel,takefocus=FALSE)
126 #page buttons
127 self.pageNum=IntVar()
128 self.pageNum.set(0)
Steven M. Gava60fc7072001-08-04 13:58:22 +0000129 buttonPageFontTab = Radiobutton(framePageButtons,value=0,
Steven M. Gava952d0a52001-08-03 04:43:44 +0000130 text='Font/Tabs',padx=5,pady=5)
131 buttonPageHighlight = Radiobutton(framePageButtons,value=1,
132 text='Highlighting',padx=5,pady=5)
133 buttonPageKeys = Radiobutton(framePageButtons,value=2,
134 text='Keys',padx=5,pady=5)
135 buttonPageGeneral = Radiobutton(framePageButtons,value=3,
136 text='General',padx=5,pady=5)
Steven M. Gava60fc7072001-08-04 13:58:22 +0000137 self.pageButtons=(buttonPageFontTab,buttonPageHighlight,
Steven M. Gavad721c482001-07-31 10:46:53 +0000138 buttonPageKeys,buttonPageGeneral)
139 for button in self.pageButtons:
140 button.config(command=self.ChangePage,underline=0,takefocus=FALSE,
141 indicatoron=FALSE,highlightthickness=0,variable=self.pageNum,
142 selectcolor=self.bg,borderwidth=1)
143 button.pack(side=LEFT)
144 #pages
Steven M. Gava60fc7072001-08-04 13:58:22 +0000145 self.pages=(self.CreatePageFontTab(),
Steven M. Gava952d0a52001-08-03 04:43:44 +0000146 self.CreatePageHighlight(),
147 self.CreatePageKeys(),
148 self.CreatePageGeneral())
149
Steven M. Gavad721c482001-07-31 10:46:53 +0000150 #grid in framePages so we can overlap pages
151 framePageButtons.grid(row=0,column=0,sticky=W)
152 for page in self.pages: page.grid(row=1,column=0,sticky=(N,S,E,W))
153
Steven M. Gava952d0a52001-08-03 04:43:44 +0000154 self.buttonHelp.pack(side=RIGHT,padx=20,pady=5)
Steven M. Gavad721c482001-07-31 10:46:53 +0000155 self.buttonSave.pack(side=LEFT,padx=5,pady=5)
156 self.buttonCancel.pack(side=LEFT,padx=5,pady=5)
157 frameActionButtons.pack(side=BOTTOM)
158 self.framePages.pack(side=TOP,expand=TRUE,fill=BOTH)
159
Steven M. Gava60fc7072001-08-04 13:58:22 +0000160 def CreatePageFontTab(self):
Steven M. Gavaf213ccb2001-08-05 08:00:28 +0000161 #tkVars
162 self.fontName=StringVar()
163 self.fontSize=StringVar()
164 self.spaceNum=IntVar()
165 self.tabCols=IntVar()
166 self.indentType=IntVar()
167 ##widget creation
168 #body frame
Steven M. Gava952d0a52001-08-03 04:43:44 +0000169 frame=Frame(self.framePages,borderwidth=2,relief=SUNKEN)
Steven M. Gavaf213ccb2001-08-05 08:00:28 +0000170 #body section frames
171 frameFont=Frame(frame,borderwidth=2,relief=GROOVE)
172 frameIndent=Frame(frame,borderwidth=2,relief=GROOVE)
173 #frameFont
174 labelFontTitle=Label(frameFont,text='Set Base Editor Font')
175 frameFontName=Frame(frameFont)
176 frameFontSize=Frame(frameFont)
177 labelFontNameTitle=Label(frameFontName,justify=LEFT,
178 text='Choose from available\nmonospaced fonts :')
179 optFontName=OptionMenu(frameFontName,
180 self.fontName,'Courier','Font Name 2','Font Name 3')
181 self.fontName.set('Courier')
182 labelFontSizeTitle=Label(frameFontSize,text='Choose font size :')
183 optFontSize=OptionMenu(frameFontSize,
184 self.fontSize,'8','10','12','14','16','18','20')
185 self.fontSize.set('12')
186 frameFontSample=Frame(frameFont,relief=SOLID,borderwidth=1,
187 bg=self.workingTestColours['Foo-Bg'])
188 labelFontSample=Label(frameFontSample,bg=self.workingTestColours['Foo-Bg'],
189 fg='#000000',text='Font\nSample',justify=LEFT,
190 font=('courier',12,''))
191 #frameIndent
192 labelIndentTitle=Label(frameIndent,text='Set Indentation Defaults')
193 frameIndentType=Frame(frameIndent)
194 frameIndentSize=Frame(frameIndent)
195 labelIndentTypeTitle=Label(frameIndentType,
196 text='Choose indentation type :')
197 radioUseSpaces=Radiobutton(frameIndentType,variable=self.indentType,
198 value=0,text='Tab key inserts spaces')
199 radioUseTabs=Radiobutton(frameIndentType,variable=self.indentType,
200 value=1,text='Tab key inserts tabs')
201 labelIndentSizeTitle=Label(frameIndentSize,
202 text='Choose indentation size :')
203 labelSpaceNumTitle=Label(frameIndentSize,justify=LEFT,
204 text='when tab key inserts spaces,\nspaces per tab')
205 self.scaleSpaceNum=Scale(frameIndentSize,variable=self.spaceNum,
206 orient='horizontal',tickinterval=2,from_=2,to=8)
207 labeltabColsTitle=Label(frameIndentSize,justify=LEFT,
208 text='when tab key inserts tabs,\ncolumns per tab')
209 self.scaleTabCols=Scale(frameIndentSize,variable=self.tabCols,
210 orient='horizontal',tickinterval=2,from_=2,to=8)
211
212 #widget packing
213 #body
214 frameFont.pack(side=LEFT,padx=5,pady=10,fill=Y)
215 frameIndent.pack(side=LEFT,padx=5,pady=10,expand=TRUE,fill=BOTH)
216 #frameFont
217 labelFontTitle.pack(side=TOP,anchor=W,padx=5,pady=5)
218 frameFontName.pack(side=TOP,padx=5,pady=5,fill=X)
219 frameFontSize.pack(side=TOP,padx=5,pady=5,fill=BOTH)
220 labelFontNameTitle.pack(side=TOP,anchor=W)
221 optFontName.pack(side=TOP,pady=5,fill=X)
222 labelFontSizeTitle.pack(side=TOP,anchor=W)
223 optFontSize.pack(side=TOP,pady=5,fill=X)
224 frameFontSample.pack(side=TOP,padx=5,pady=5,expand=TRUE,fill=BOTH)
225 labelFontSample.pack(expand=TRUE,fill=BOTH)
226 #frameIndent
227 labelIndentTitle.pack(side=TOP,anchor=W,padx=5,pady=5)
228 frameIndentType.pack(side=TOP,padx=5,fill=X)
229 frameIndentSize.pack(side=TOP,padx=5,pady=5,fill=BOTH)
230 labelIndentTypeTitle.pack(side=TOP,anchor=W,padx=5,pady=5)
231 radioUseSpaces.pack(side=TOP,anchor=W,padx=5)
232 radioUseTabs.pack(side=TOP,anchor=W,padx=5)
233 labelIndentSizeTitle.pack(side=TOP,anchor=W,padx=5,pady=5)
234 labelSpaceNumTitle.pack(side=TOP,anchor=W,padx=5)
235 self.scaleSpaceNum.pack(side=TOP,padx=5,fill=X)
236 labeltabColsTitle.pack(side=TOP,anchor=W,padx=5)
237 self.scaleTabCols.pack(side=TOP,padx=5,fill=X)
Steven M. Gava952d0a52001-08-03 04:43:44 +0000238 return frame
239
240 def CreatePageHighlight(self):
241 #tkVars
Steven M. Gava60fc7072001-08-04 13:58:22 +0000242 self.highlightTarget=StringVar()
Steven M. Gava952d0a52001-08-03 04:43:44 +0000243 self.builtinTheme=StringVar()
244 self.customTheme=StringVar()
245 self.colour=StringVar()
246 self.fontName=StringVar()
247 self.fontBold=StringVar()
248 self.fontItalic=StringVar()
249 self.fontSize=IntVar()
250 self.themeType=IntVar()
251 ##widget creation
252 #body frame
253 frame=Frame(self.framePages,borderwidth=2,relief=SUNKEN)
254 #body section frames
255 frameCustom=Frame(frame,borderwidth=2,relief=GROOVE)
256 frameTheme=Frame(frame,borderwidth=2,relief=GROOVE)
Steven M. Gava952d0a52001-08-03 04:43:44 +0000257 #frameCustom
258 frameTarget=Frame(frameCustom)
Steven M. Gava60fc7072001-08-04 13:58:22 +0000259 frameSample=Frame(frameCustom,relief=SOLID,borderwidth=1,
260 bg=self.workingTestColours['Foo-Bg'])
Steven M. Gava952d0a52001-08-03 04:43:44 +0000261 frameSet=Frame(frameCustom)
Steven M. Gava60fc7072001-08-04 13:58:22 +0000262 frameColourSet=Frame(frameSet,relief=SOLID,borderwidth=1,
263 bg=self.workingTestColours['Foo-Bg'])
Steven M. Gava952d0a52001-08-03 04:43:44 +0000264 frameFontSet=Frame(frameSet)
Steven M. Gava952d0a52001-08-03 04:43:44 +0000265 labelCustomTitle=Label(frameCustom,text='Set Custom Highlighting')
266 labelTargetTitle=Label(frameTarget,text='for : ')
267 optMenuTarget=OptionMenu(frameTarget,
Steven M. Gava60fc7072001-08-04 13:58:22 +0000268 self.highlightTarget,'test target interface item','test target interface item 2')
269 self.highlightTarget.set('test target interface item')
Steven M. Gava952d0a52001-08-03 04:43:44 +0000270 buttonSetColour=Button(frameColourSet,text='Set Colour')
271 labelFontTitle=Label(frameFontSet,text='Set Font Style')
272 checkFontBold=Checkbutton(frameFontSet,variable=self.fontBold,
273 onvalue='Bold',offvalue='',text='Bold')
274 checkFontItalic=Checkbutton(frameFontSet,variable=self.fontItalic,
275 onvalue='Italic',offvalue='',text='Italic')
Steven M. Gavaf213ccb2001-08-05 08:00:28 +0000276 labelTestSample=Label(frameSample,justify=LEFT,font=('courier',12,''),
277 text='#when finished, this\n#sample area will\n#be interactive\n'+
278 'def Ahem(foo,bar):\n '+
279 '"""'+'doc hazard'+'"""'+
280 '\n test=foo\n text=bar\n return',
Steven M. Gava60fc7072001-08-04 13:58:22 +0000281 bg=self.workingTestColours['Foo-Bg'])
282 buttonSaveCustomTheme=Button(frameCustom,
Steven M. Gava952d0a52001-08-03 04:43:44 +0000283 text='Save as a Custom Theme')
Steven M. Gava952d0a52001-08-03 04:43:44 +0000284 #frameTheme
285 #frameDivider=Frame(frameTheme,relief=SUNKEN,borderwidth=1,
286 # width=2,height=10)
287 labelThemeTitle=Label(frameTheme,text='Select a Highlighting Theme')
288 labelTypeTitle=Label(frameTheme,text='Select : ')
289 radioThemeBuiltin=Radiobutton(frameTheme,variable=self.themeType,
290 value=0,command=self.SetThemeType,text='a Built-in Theme')
291 radioThemeCustom=Radiobutton(frameTheme,variable=self.themeType,
292 value=1,command=self.SetThemeType,text='a Custom Theme')
293 self.optMenuThemeBuiltin=OptionMenu(frameTheme,
294 self.builtinTheme,'test builtin junk','test builtin junk 2')
295 self.builtinTheme.set('test builtin junk')
296 self.optMenuThemeCustom=OptionMenu(frameTheme,
297 self.customTheme,'test custom junk','test custom junk 2')
298 self.customTheme.set('test custom junk')
299 self.themeType.set(0)
Steven M. Gava60fc7072001-08-04 13:58:22 +0000300 self.buttonDeleteCustomTheme=Button(frameTheme,text='Delete Custom Theme')
Steven M. Gava952d0a52001-08-03 04:43:44 +0000301 self.SetThemeType()
Steven M. Gava952d0a52001-08-03 04:43:44 +0000302 ##widget packing
303 #body
Steven M. Gava60fc7072001-08-04 13:58:22 +0000304 frameCustom.pack(side=LEFT,padx=5,pady=10,expand=TRUE,fill=BOTH)
305 frameTheme.pack(side=LEFT,padx=5,pady=10,fill=Y)
Steven M. Gava952d0a52001-08-03 04:43:44 +0000306 #frameCustom
307 labelCustomTitle.pack(side=TOP,anchor=W,padx=5,pady=5)
Steven M. Gavaf213ccb2001-08-05 08:00:28 +0000308 frameTarget.pack(side=TOP,padx=5,pady=5,fill=X)
Steven M. Gava952d0a52001-08-03 04:43:44 +0000309 frameSample.pack(side=TOP,padx=5,pady=5,expand=TRUE,fill=BOTH)
310 frameSet.pack(side=TOP,fill=X)
311 frameColourSet.pack(side=LEFT,padx=5,pady=5,fill=BOTH)
312 frameFontSet.pack(side=RIGHT,padx=5,pady=5,anchor=W)
313 labelTargetTitle.pack(side=LEFT,anchor=E)
Steven M. Gavaf213ccb2001-08-05 08:00:28 +0000314 optMenuTarget.pack(side=RIGHT,anchor=W,expand=TRUE,fill=X)
Steven M. Gava952d0a52001-08-03 04:43:44 +0000315 buttonSetColour.pack(expand=TRUE,fill=BOTH,padx=10,pady=10)
316 labelFontTitle.pack(side=TOP,anchor=W)
317 checkFontBold.pack(side=LEFT,anchor=W,pady=2)
318 checkFontItalic.pack(side=RIGHT,anchor=W)
Steven M. Gavaf213ccb2001-08-05 08:00:28 +0000319 labelTestSample.pack(anchor=CENTER,expand=TRUE,fill=BOTH)
Steven M. Gava60fc7072001-08-04 13:58:22 +0000320 buttonSaveCustomTheme.pack(side=BOTTOM,fill=X,padx=5,pady=5)
Steven M. Gava952d0a52001-08-03 04:43:44 +0000321 #frameTheme
322 #frameDivider.pack(side=LEFT,fill=Y,padx=5,pady=5)
323 labelThemeTitle.pack(side=TOP,anchor=W,padx=5,pady=5)
324 labelTypeTitle.pack(side=TOP,anchor=W,padx=5,pady=5)
325 radioThemeBuiltin.pack(side=TOP,anchor=W,padx=5)
326 radioThemeCustom.pack(side=TOP,anchor=W,padx=5,pady=2)
327 self.optMenuThemeBuiltin.pack(side=TOP,fill=X,padx=5,pady=5)
328 self.optMenuThemeCustom.pack(side=TOP,fill=X,anchor=W,padx=5,pady=5)
Steven M. Gava60fc7072001-08-04 13:58:22 +0000329 self.buttonDeleteCustomTheme.pack(side=TOP,fill=X,padx=5,pady=5)
Steven M. Gava952d0a52001-08-03 04:43:44 +0000330 return frame
331
332 def CreatePageKeys(self):
Steven M. Gava60fc7072001-08-04 13:58:22 +0000333 #tkVars
334 self.bindingTarget=StringVar()
335 self.builtinKeys=StringVar()
336 self.customKeys=StringVar()
337 self.keyChars=StringVar()
338 self.keyCtrl=StringVar()
339 self.keyAlt=StringVar()
340 self.keyShift=StringVar()
341 self.keysType=IntVar()
342 ##widget creation
343 #body frame
Steven M. Gava952d0a52001-08-03 04:43:44 +0000344 frame=Frame(self.framePages,borderwidth=2,relief=SUNKEN)
Steven M. Gava60fc7072001-08-04 13:58:22 +0000345 #body section frames
346 frameCustom=Frame(frame,borderwidth=2,relief=GROOVE)
347 frameKeySets=Frame(frame,borderwidth=2,relief=GROOVE)
348 #frameCustom
349 frameTarget=Frame(frameCustom)
350 frameSet=Frame(frameCustom)
351 labelCustomTitle=Label(frameCustom,text='Set Custom Key Bindings')
352 labelTargetTitle=Label(frameTarget,text='Action')
353 scrollTarget=Scrollbar(frameTarget)
354 listTarget=Listbox(frameTarget)
355 labelKeyBindTitle=Label(frameSet,text='Binding')
356 labelModifierTitle=Label(frameSet,text='Modifier:')
357 checkCtrl=Checkbutton(frameSet,text='Ctrl')
358 checkAlt=Checkbutton(frameSet,text='Alt')
359 checkShift=Checkbutton(frameSet,text='Shift')
360 labelKeyEntryTitle=Label(frameSet,text='Key:')
361 entryKey=Entry(frameSet,width=4)
362 buttonSaveCustomKeys=Button(frameCustom,text='Save as a Custom Key Set')
363 #frameKeySets
Steven M. Gavaf213ccb2001-08-05 08:00:28 +0000364 labelKeysTitle=Label(frameKeySets,text='Select a Key Set')
Steven M. Gava60fc7072001-08-04 13:58:22 +0000365 labelTypeTitle=Label(frameKeySets,text='Select : ')
366 radioKeysBuiltin=Radiobutton(frameKeySets,variable=self.keysType,
367 value=0,command=self.SetKeysType,text='a Built-in Key Set')
368 radioKeysCustom=Radiobutton(frameKeySets,variable=self.keysType,
369 value=1,command=self.SetKeysType,text='a Custom Key Set')
370 self.optMenuKeysBuiltin=OptionMenu(frameKeySets,
371 self.builtinKeys,'test builtin junk','test builtin junk 2')
372 self.builtinKeys.set('test builtin junk')
373 self.optMenuKeysCustom=OptionMenu(frameKeySets,
374 self.customKeys,'test custom junk','test custom junk 2')
375 self.customKeys.set('test custom junk')
376 self.keysType.set(0)
377 self.buttonDeleteCustomKeys=Button(frameKeySets,text='Delete Custom Key Set')
378 self.SetKeysType()
379 ##widget packing
380 #body
381 frameCustom.pack(side=LEFT,padx=5,pady=5,expand=TRUE,fill=BOTH)
382 frameKeySets.pack(side=LEFT,padx=5,pady=5,fill=Y)
383 #frameCustom
384 labelCustomTitle.pack(side=TOP,anchor=W,padx=5,pady=5)
385 buttonSaveCustomKeys.pack(side=BOTTOM,fill=X,padx=5,pady=5)
386 frameTarget.pack(side=LEFT,padx=5,pady=5,fill=Y)
387 frameSet.pack(side=LEFT,padx=5,pady=5,fill=Y)
388 labelTargetTitle.pack(side=TOP,anchor=W)
389 scrollTarget.pack(side=RIGHT,anchor=W,fill=Y)
390 listTarget.pack(side=TOP,anchor=W,expand=TRUE,fill=BOTH)
391 labelKeyBindTitle.pack(side=TOP,anchor=W)
392 labelModifierTitle.pack(side=TOP,anchor=W,pady=5)
393 checkCtrl.pack(side=TOP,anchor=W)
394 checkAlt.pack(side=TOP,anchor=W,pady=2)
395 checkShift.pack(side=TOP,anchor=W)
396 labelKeyEntryTitle.pack(side=TOP,anchor=W,pady=5)
397 entryKey.pack(side=TOP,anchor=W)
398 #frameKeySets
399 labelKeysTitle.pack(side=TOP,anchor=W,padx=5,pady=5)
400 labelTypeTitle.pack(side=TOP,anchor=W,padx=5,pady=5)
401 radioKeysBuiltin.pack(side=TOP,anchor=W,padx=5)
402 radioKeysCustom.pack(side=TOP,anchor=W,padx=5,pady=2)
403 self.optMenuKeysBuiltin.pack(side=TOP,fill=X,padx=5,pady=5)
404 self.optMenuKeysCustom.pack(side=TOP,fill=X,anchor=W,padx=5,pady=5)
405 self.buttonDeleteCustomKeys.pack(side=TOP,fill=X,padx=5,pady=5)
Steven M. Gava952d0a52001-08-03 04:43:44 +0000406 return frame
407
408 def CreatePageGeneral(self):
409 frame=Frame(self.framePages,borderwidth=2,relief=SUNKEN)
410 Button(frame,text='general page test').pack(padx=110,pady=110)
411 return frame
412
Steven M. Gava44d3d1a2001-07-31 06:59:02 +0000413if __name__ == '__main__':
Steven M. Gavad721c482001-07-31 10:46:53 +0000414 #test the dialog
415 root=Tk()
416 Button(root,text='Dialog',
417 command=lambda:ConfigDialog(root,'Settings',None)).pack()
418 root.mainloop()