@@ -150,6 +150,7 @@ def create_action_buttons(self):
150150 buttons .pack (side = BOTTOM )
151151 return outer
152152
153+
153154 def create_page_font_tab (self ):
154155 """Return frame of widgets for Font/Tabs tab.
155156
@@ -159,29 +160,26 @@ def create_page_font_tab(self):
159160 corresponding aspect of the font sample on this page and
160161 highlight sample on highlight page.
161162
163+ Load_font_cfg initializes font vars and widgets from
164+ idleConf entries and tk.
165+
162166 Fontlist: mouse button 1 click or up or down key invoke
163- on_fontlist_select(), which sets Var font_name and calls
164- set_samples.
167+ on_fontlist_select(), which sets var font_name.
165168
166169 Sizelist: clicking the menubutton opens the dropdown menu. A
167- mouse button 1 click or return key invokes an internal command
168- which sets Var font_size and calls set_samples.
170+ mouse button 1 click or return key sets var font_size.
169171
170- Bold_toggle, clicking the box toggles font_bold and calls
171- set_samples.
172+ Bold_toggle: clicking the box toggles var font_bold.
172173
173- Setting any of the font vars invokes var_changed_font, which
174- adds all 3 font options to changes. Set_samples applies a new
175- font constructed from the font vars to font_sample and
176- highlight_sample on the hightlight page.
174+ Changing any of the font vars invokes var_changed_font, which
175+ adds all 3 font options to changes and calls set_samples.
176+ Set_samples applies a new font constructed from the font vars to
177+ font_sample and to highlight_sample on the hightlight page.
177178
178179 Tabs: Enable users to change spaces entered for indent tabs.
179180 Changing indent_scale value with the mouse sets Var space_num,
180181 which invokes var_changed_space_num, which adds an entry to
181- changes.
182-
183- Load_font_cfg and load_tab_cfg initialize vars and widgets from
184- idleConf entries.
182+ changes. Load_tab_cfg initializes space_num to default.
185183
186184 Widget Structure: (*) widgets bound to self
187185 frame (of tab_pages)
@@ -227,11 +225,10 @@ def create_page_font_tab(self):
227225 scroll_font .config (command = self .fontlist .yview )
228226 self .fontlist .config (yscrollcommand = scroll_font .set )
229227 font_size_title = Label (frame_font_param , text = 'Size :' )
230- self .sizelist = DynOptionMenu (frame_font_param , self .font_size ,
231- None , command = self .set_samples )
228+ self .sizelist = DynOptionMenu (frame_font_param , self .font_size , None )
232229 self .bold_toggle = Checkbutton (
233- frame_font_param , variable = self .font_bold , onvalue = 1 ,
234- offvalue = 0 , text = 'Bold' , command = self . set_samples )
230+ frame_font_param , variable = self .font_bold ,
231+ onvalue = 1 , offvalue = 0 , text = 'Bold' )
235232 frame_font_sample = Frame (frame_font , relief = SOLID , borderwidth = 1 )
236233 temp_font = tkFont .Font (parent , ('courier' , 10 , 'normal' ))
237234 self .font_sample = Label (
@@ -267,6 +264,96 @@ def create_page_font_tab(self):
267264
268265 return frame
269266
267+ def load_font_cfg (self ):
268+ """Load current configuration settings for the font options.
269+
270+ Retrieve current font with idleConf.GetFont and font families
271+ from tk. Setup fontlist and set font_name. Setup sizelist,
272+ which sets font_size. Set font_bold. Setting font variables
273+ calls set_samples (thrice).
274+ """
275+ configured_font = idleConf .GetFont (self , 'main' , 'EditorWindow' )
276+ font_name = configured_font [0 ].lower ()
277+ font_size = configured_font [1 ]
278+ font_bold = configured_font [2 ]== 'bold'
279+
280+ # Set editor font selection list and font_name.
281+ fonts = list (tkFont .families (self ))
282+ fonts .sort ()
283+ for font in fonts :
284+ self .fontlist .insert (END , font )
285+ self .font_name .set (font_name )
286+ lc_fonts = [s .lower () for s in fonts ]
287+ try :
288+ current_font_index = lc_fonts .index (font_name )
289+ self .fontlist .see (current_font_index )
290+ self .fontlist .select_set (current_font_index )
291+ self .fontlist .select_anchor (current_font_index )
292+ self .fontlist .activate (current_font_index )
293+ except ValueError :
294+ pass
295+ # Set font size dropdown.
296+ self .sizelist .SetMenu (('7' , '8' , '9' , '10' , '11' , '12' , '13' , '14' ,
297+ '16' , '18' , '20' , '22' , '25' , '29' , '34' , '40' ),
298+ font_size )
299+ # Set font weight.
300+ self .font_bold .set (font_bold )
301+
302+ def on_fontlist_select (self , event ):
303+ """Handle selecting a font from the list.
304+
305+ Event can result from either mouse click or Up or Down key.
306+ Set font_name and example displays to selection.
307+ """
308+ font = self .fontlist .get (
309+ ACTIVE if event .type .name == 'KeyRelease' else ANCHOR )
310+ self .font_name .set (font .lower ())
311+
312+ def var_changed_font (self , * params ):
313+ """Store changes to font attributes.
314+
315+ When one font attribute changes, save them all, as they are
316+ not independent from each other. In particular, when we are
317+ overriding the default font, we need to write out everything.
318+ """
319+ value = self .font_name .get ()
320+ changes .add_option ('main' , 'EditorWindow' , 'font' , value )
321+ value = self .font_size .get ()
322+ changes .add_option ('main' , 'EditorWindow' , 'font-size' , value )
323+ value = self .font_bold .get ()
324+ changes .add_option ('main' , 'EditorWindow' , 'font-bold' , value )
325+ self .set_samples ()
326+
327+ def set_samples (self , event = None ):
328+ """Update update both screen samples with the font settings.
329+
330+ Called on font initialization and change events.
331+ Accesses font_name, font_size, and font_bold Variables.
332+ Updates font_sample and hightlight page highlight_sample.
333+ """
334+ font_name = self .font_name .get ()
335+ font_weight = tkFont .BOLD if self .font_bold .get () else tkFont .NORMAL
336+ new_font = (font_name , self .font_size .get (), font_weight )
337+ self .font_sample ['font' ] = new_font
338+ self .highlight_sample ['font' ] = new_font
339+
340+ def load_tab_cfg (self ):
341+ """Load current configuration settings for the tab options.
342+
343+ Attributes updated:
344+ space_num: Set to value from idleConf.
345+ """
346+ # Set indent sizes.
347+ space_num = idleConf .GetOption (
348+ 'main' , 'Indent' , 'num-spaces' , default = 4 , type = 'int' )
349+ self .space_num .set (space_num )
350+
351+ def var_changed_space_num (self , * params ):
352+ "Store change to indentation size."
353+ value = self .space_num .get ()
354+ changes .add_option ('main' , 'Indent' , 'num-spaces' , value )
355+
356+
270357 def create_page_highlight (self ):
271358 """Return frame of widgets for Highlighting tab.
272359
@@ -729,25 +816,6 @@ def remove_var_callbacks(self):
729816 self .startup_edit , self .autosave ,):
730817 var .trace_remove ('write' , var .trace_info ()[0 ][1 ])
731818
732- def var_changed_font (self , * params ):
733- """Store changes to font attributes.
734-
735- When one font attribute changes, save them all, as they are
736- not independent from each other. In particular, when we are
737- overriding the default font, we need to write out everything.
738- """
739- value = self .font_name .get ()
740- changes .add_option ('main' , 'EditorWindow' , 'font' , value )
741- value = self .font_size .get ()
742- changes .add_option ('main' , 'EditorWindow' , 'font-size' , value )
743- value = self .font_bold .get ()
744- changes .add_option ('main' , 'EditorWindow' , 'font-bold' , value )
745-
746- def var_changed_space_num (self , * params ):
747- "Store change to indentation size."
748- value = self .space_num .get ()
749- changes .add_option ('main' , 'Indent' , 'num-spaces' , value )
750-
751819 def var_changed_color (self , * params ):
752820 "Process change to color choice."
753821 self .on_new_color_set ()
@@ -1216,30 +1284,6 @@ def create_new_theme(self, new_theme_name):
12161284 self .is_builtin_theme .set (0 )
12171285 self .set_theme_type ()
12181286
1219- def on_fontlist_select (self , event ):
1220- """Handle selecting a font from the list.
1221-
1222- Event can result from either mouse click or Up or Down key.
1223- Set font_name and example displays to selection.
1224- """
1225- font = self .fontlist .get (
1226- ACTIVE if event .type .name == 'KeyRelease' else ANCHOR )
1227- self .font_name .set (font .lower ())
1228- self .set_samples ()
1229-
1230- def set_samples (self , event = None ):
1231- """Update update both screen samples with the font settings.
1232-
1233- Called on font initialization and change events.
1234- Accesses font_name, font_size, and font_bold Variables.
1235- Updates font_sample and hightlight page highlight_sample.
1236- """
1237- font_name = self .font_name .get ()
1238- font_weight = tkFont .BOLD if self .font_bold .get () else tkFont .NORMAL
1239- new_font = (font_name , self .font_size .get (), font_weight )
1240- self .font_sample ['font' ] = new_font
1241- self .highlight_sample ['font' ] = new_font
1242-
12431287 def set_highlight_target (self ):
12441288 """Set fg/bg toggle and color based on highlight tag target.
12451289
@@ -1404,61 +1448,6 @@ def update_user_help_changed_items(self):
14041448 'main' , 'HelpFiles' , str (num ),
14051449 ';' .join (self .user_helplist [num - 1 ][:2 ]))
14061450
1407- def load_font_cfg (self ):
1408- """Load current configuration settings for the font options.
1409-
1410- Retrieve current font values from idleConf.GetFont to set
1411- as initial values for font widgets.
1412-
1413- Attributes updated:
1414- fontlist: Populate with fonts from tkinter.font.
1415- font_name: Set to current font.
1416- sizelist: Populate valid options tuple and set
1417- to current size.
1418- font_bold: Set to current font weight.
1419-
1420- Methods:
1421- set_samples
1422- """
1423- # Set base editor font selection list.
1424- fonts = list (tkFont .families (self ))
1425- fonts .sort ()
1426- for font in fonts :
1427- self .fontlist .insert (END , font )
1428- configured_font = idleConf .GetFont (self , 'main' , 'EditorWindow' )
1429- font_name = configured_font [0 ].lower ()
1430- font_size = configured_font [1 ]
1431- font_bold = configured_font [2 ]== 'bold'
1432- self .font_name .set (font_name )
1433- lc_fonts = [s .lower () for s in fonts ]
1434- try :
1435- current_font_index = lc_fonts .index (font_name )
1436- self .fontlist .see (current_font_index )
1437- self .fontlist .select_set (current_font_index )
1438- self .fontlist .select_anchor (current_font_index )
1439- self .fontlist .activate (current_font_index )
1440- except ValueError :
1441- pass
1442- # Set font size dropdown.
1443- self .sizelist .SetMenu (('7' , '8' , '9' , '10' , '11' , '12' , '13' , '14' ,
1444- '16' , '18' , '20' , '22' , '25' , '29' , '34' , '40' ),
1445- font_size )
1446- # Set font weight.
1447- self .font_bold .set (font_bold )
1448- # Set font sample.
1449- self .set_samples ()
1450-
1451- def load_tab_cfg (self ):
1452- """Load current configuration settings for the tab options.
1453-
1454- Attributes updated:
1455- space_num: Set to value from idleConf.
1456- """
1457- # Set indent sizes.
1458- space_num = idleConf .GetOption (
1459- 'main' , 'Indent' , 'num-spaces' , default = 4 , type = 'int' )
1460- self .space_num .set (space_num )
1461-
14621451 def load_theme_cfg (self ):
14631452 """Load current configuration settings for the theme options.
14641453
0 commit comments