1- ##---------------------------------------------------------------------------##
2- ##
3- ## idle - configuration dialog
4- ## elguavas
5- ##
6- ##---------------------------------------------------------------------------##
71"""
82configuration dialog
93"""
126
137from configHandler import idleConf
148from dynOptionMenuWidget import DynOptionMenu
9+ from tabpage import TabPageSet
1510
1611class ConfigDialog (Toplevel ):
1712 """
@@ -41,20 +36,15 @@ def __init__(self,parent,title):
4136 'Shell Stderr Foreground' :('stderr' ,'11' ,'fg' )}
4237 self .CreateWidgets ()
4338 self .resizable (height = FALSE ,width = FALSE )
44- self .ChangePage ()
4539 self .transient (parent )
4640 self .grab_set ()
4741 self .protocol ("WM_DELETE_WINDOW" , self .Cancel )
4842 self .parent = parent
49- self .framePages .focus_set ()
43+ self .tabPages .focus_set ()
5044 #key bindings for this dialog
5145 self .bind ('<Escape>' ,self .CancelBinding ) #dismiss dialog, no save
5246 self .bind ('<Alt-a>' ,self .ApplyBinding ) #apply changes, save
5347 self .bind ('<F1>' ,self .HelpBinding ) #context help
54- self .bind ('<Alt-f>' ,self .ChangePageBinding )
55- self .bind ('<Alt-h>' ,self .ChangePageBinding )
56- self .bind ('<Alt-k>' ,self .ChangePageBinding )
57- self .bind ('<Alt-g>' ,self .ChangePageBinding )
5848 self .LoadConfigs ()
5949 self .wait_window ()
6050
@@ -82,25 +72,6 @@ def ApplyBinding(self,event):
8272 def HelpBinding (self ,event ):
8373 self .Help ()
8474
85- def ChangePage (self ):
86- #pop up the active 'tab' only
87- for button in self .pageButtons : button .master .config (relief = RIDGE )
88- self .pageButtons [self .pageNum .get ()].master .config (relief = RAISED )
89- #switch page
90- self .pages [self .pageNum .get ()].lift ()
91- self .title ('Settings - ' +
92- self .pageButtons [self .pageNum .get ()].cget ('text' ))
93-
94- def ChangePageBinding (self ,event ):
95- pageKeys = ('f' ,'h' ,'k' ,'g' )
96- pos = 0
97- for key in pageKeys :
98- if event .char == key :
99- self .pageNum .set (pos )
100- self .ChangePage ()
101- return
102- pos = pos + 1
103-
10475 def SetThemeType (self ):
10576 if self .themeIsBuiltin .get ():
10677 self .optMenuThemeBuiltin .config (state = NORMAL )
@@ -171,9 +142,9 @@ def SetColourSample(self):
171142 self .frameColourSet .config (bg = colour )
172143
173144 def CreateWidgets (self ):
174- self .framePages = Frame (self )
145+ self .tabPages = TabPageSet (self ,
146+ pageNames = ['Fonts/Tabs' ,'Highlighting' ,'Keys' ,'General' ])
175147 frameActionButtons = Frame (self )
176- framePageButtons = Frame (self .framePages )
177148 #action buttons
178149 self .buttonHelp = Button (frameActionButtons ,text = 'Help' ,
179150 command = self .Help ,takefocus = FALSE )
@@ -183,40 +154,17 @@ def CreateWidgets(self):
183154 command = self .Apply ,underline = 0 ,takefocus = FALSE )
184155 self .buttonCancel = Button (frameActionButtons ,text = 'Cancel' ,
185156 command = self .Cancel ,takefocus = FALSE )
186- #page buttons
187- self .pageNum = IntVar (self )
188- self .pageNum .set (0 )
189- pageButtonNames = ('Fonts/Tabs' ,'Highlighting' ,'Keys' ,'General' )
190- self .pageButtons = []
191- buttonValue = 0
192- buttonSelColour = framePageButtons .cget ('bg' )
193- for name in pageButtonNames :
194- buttonFrame = Frame (framePageButtons ,borderwidth = 2 ,relief = RIDGE )
195- buttonFrame .pack (side = LEFT )
196- button = Radiobutton (buttonFrame ,command = self .ChangePage ,
197- value = buttonValue ,padx = 5 ,pady = 5 ,takefocus = FALSE ,underline = 0 ,
198- indicatoron = FALSE ,highlightthickness = 0 ,variable = self .pageNum ,
199- selectcolor = buttonSelColour ,borderwidth = 0 ,text = name )
200- button .pack ()
201- button .lift ()
202- self .pageButtons .append (button )
203- buttonValue = buttonValue + 1
204- #pages
205- self .pages = (self .CreatePageFontTab (),
206- self .CreatePageHighlight (),
207- self .CreatePageKeys (),
208- self .CreatePageGeneral ())
209-
210- #grid in framePages so we can overlap pages
211- framePageButtons .grid (row = 0 ,column = 0 ,sticky = NSEW )
212- for page in self .pages : page .grid (row = 1 ,column = 0 ,sticky = (N ,S ,E ,W ))
213-
157+ self .CreatePageFontTab ()
158+ self .CreatePageHighlight ()
159+ self .CreatePageKeys ()
160+ self .CreatePageGeneral ()
214161 self .buttonHelp .pack (side = RIGHT ,padx = 5 ,pady = 5 )
215162 self .buttonOk .pack (side = LEFT ,padx = 5 ,pady = 5 )
216163 self .buttonApply .pack (side = LEFT ,padx = 5 ,pady = 5 )
217164 self .buttonCancel .pack (side = LEFT ,padx = 5 ,pady = 5 )
218165 frameActionButtons .pack (side = BOTTOM )
219- self .framePages .pack (side = TOP ,expand = TRUE ,fill = BOTH )
166+ self .tabPages .pack (side = TOP ,expand = TRUE ,fill = BOTH )
167+
220168
221169 def CreatePageFontTab (self ):
222170 #tkVars
@@ -228,7 +176,7 @@ def CreatePageFontTab(self):
228176 self .editFont = tkFont .Font (self ,('courier' ,12 ,'normal' ))
229177 ##widget creation
230178 #body frame
231- frame = Frame ( self .framePages , borderwidth = 2 , relief = RAISED )
179+ frame = self .tabPages . pages [ 'Fonts/Tabs' ][ 'page' ]
232180 #body section frames
233181 frameFont = Frame (frame ,borderwidth = 2 ,relief = GROOVE )
234182 frameIndent = Frame (frame ,borderwidth = 2 ,relief = GROOVE )
@@ -314,7 +262,7 @@ def CreatePageHighlight(self):
314262 self .highlightTarget .trace_variable ('w' ,self .SetHighlightTargetBinding )
315263 ##widget creation
316264 #body frame
317- frame = Frame ( self .framePages , borderwidth = 2 , relief = RAISED )
265+ frame = self .tabPages . pages [ 'Highlighting' ][ 'page' ]
318266 #body section frames
319267 frameCustom = Frame (frame ,borderwidth = 2 ,relief = GROOVE )
320268 frameTheme = Frame (frame ,borderwidth = 2 ,relief = GROOVE )
@@ -404,7 +352,7 @@ def CreatePageKeys(self):
404352 self .keysAreDefault = IntVar (self )
405353 ##widget creation
406354 #body frame
407- frame = Frame ( self .framePages , borderwidth = 2 , relief = RAISED )
355+ frame = self .tabPages . pages [ 'Keys' ][ 'page' ]
408356 #body section frames
409357 frameCustom = Frame (frame ,borderwidth = 2 ,relief = GROOVE )
410358 frameKeySets = Frame (frame ,borderwidth = 2 ,relief = GROOVE )
@@ -437,7 +385,6 @@ def CreatePageKeys(self):
437385 self .optMenuKeysCustom = DynOptionMenu (frameKeySets ,
438386 self .customKeys ,None ,command = None )
439387 self .buttonDeleteCustomKeys = Button (frameKeySets ,text = 'Delete Custom Key Set' )
440- # self.SetKeysType()
441388 ##widget packing
442389 #body
443390 frameCustom .pack (side = LEFT ,padx = 5 ,pady = 5 ,expand = TRUE ,fill = BOTH )
@@ -475,7 +422,7 @@ def CreatePageGeneral(self):
475422 self .extState = IntVar (self )
476423 #widget creation
477424 #body
478- frame = Frame ( self .framePages , borderwidth = 2 , relief = RAISED )
425+ frame = self .tabPages . pages [ 'General' ][ 'page' ]
479426 #body section frames
480427 frameRun = Frame (frame ,borderwidth = 2 ,relief = GROOVE )
481428 frameWinSize = Frame (frame ,borderwidth = 2 ,relief = GROOVE )
0 commit comments