@@ -51,6 +51,7 @@ def __init__(self, parent, title='', _htest=False, _utest=False):
5151 """
5252 Toplevel .__init__ (self , parent )
5353 self .parent = parent
54+ self .tracers = VarTrace ()
5455 if _htest :
5556 parent .instance_dict = {}
5657 if not _utest :
@@ -76,6 +77,7 @@ def __init__(self, parent, title='', _htest=False, _utest=False):
7677 # self.bind('<F1>', self.Help) #context help
7778 self .load_configs ()
7879 self .attach_var_callbacks () # Avoid callbacks during load_configs.
80+ self .tracers .attach ()
7981
8082 if not _utest :
8183 self .grab_set ()
@@ -133,10 +135,6 @@ def load_configs(self):
133135
134136 def attach_var_callbacks (self ):
135137 "Attach callbacks to variables that can be changed."
136- self .font_size .trace_add ('write' , self .var_changed_font )
137- self .font_name .trace_add ('write' , self .var_changed_font )
138- self .font_bold .trace_add ('write' , self .var_changed_font )
139- self .space_num .trace_add ('write' , self .var_changed_space_num )
140138 self .color .trace_add ('write' , self .var_changed_color )
141139 self .builtin_theme .trace_add ('write' , self .var_changed_builtin_theme )
142140 self .custom_theme .trace_add ('write' , self .var_changed_custom_theme )
@@ -146,22 +144,16 @@ def attach_var_callbacks(self):
146144 self .builtin_keys .trace_add ('write' , self .var_changed_builtin_keys )
147145 self .custom_keys .trace_add ('write' , self .var_changed_custom_keys )
148146 self .are_keys_builtin .trace_add ('write' , self .var_changed_are_keys_builtin )
149- self .win_width .trace_add ('write' , self .var_changed_win_width )
150- self .win_height .trace_add ('write' , self .var_changed_win_height )
151- self .startup_edit .trace_add ('write' , self .var_changed_startup_edit )
152- self .autosave .trace_add ('write' , self .var_changed_autosave )
153147
154148 def remove_var_callbacks (self ):
155149 "Remove callbacks to prevent memory leaks."
156150 for var in (
157- self .font_size , self .font_name , self .font_bold ,
158- self .space_num , self .color , self .builtin_theme ,
151+ self .color , self .builtin_theme ,
159152 self .custom_theme , self .is_builtin_theme , self .highlight_target ,
160153 self .keybinding , self .builtin_keys , self .custom_keys ,
161- self .are_keys_builtin , self .win_width , self .win_height ,
162- self .startup_edit , self .autosave ,):
154+ self .are_keys_builtin ,):
163155 var .trace_remove ('write' , var .trace_info ()[0 ][1 ])
164-
156+ self . tracers . detach ()
165157
166158 def create_action_buttons (self ):
167159 """Return frame of action buttons for dialog.
@@ -273,7 +265,7 @@ def create_page_font_tab(self):
273265
274266 Tabs: Enable users to change spaces entered for indent tabs.
275267 Changing indent_scale value with the mouse sets Var space_num,
276- which invokes var_changed_space_num, which adds an entry to
268+ which invokes the default callback to add an entry to
277269 changes. Load_tab_cfg initializes space_num to default.
278270
279271 Widget Structure: (*) widgets bound to self
@@ -294,10 +286,10 @@ def create_page_font_tab(self):
294286 (*)indent_scale: Scale - space_num
295287 """
296288 parent = self .parent
297- self .font_name = StringVar (parent )
298- self .font_size = StringVar (parent )
299- self .font_bold = BooleanVar (parent )
300- self .space_num = IntVar (parent )
289+ self .font_name = self . tracers . add ( StringVar (parent ), self . var_changed_font )
290+ self .font_size = self . tracers . add ( StringVar (parent ), self . var_changed_font )
291+ self .font_bold = self . tracers . add ( BooleanVar (parent ), self . var_changed_font )
292+ self .space_num = self . tracers . add ( IntVar (parent ), ( 'main' , 'Indent' , 'num-spaces' ) )
301293
302294 # Create widgets:
303295 # body and body section frames.
@@ -443,12 +435,6 @@ def load_tab_cfg(self):
443435 'main' , 'Indent' , 'num-spaces' , default = 4 , type = 'int' )
444436 self .space_num .set (space_num )
445437
446- def var_changed_space_num (self , * params ):
447- "Store change to indentation size."
448- value = self .space_num .get ()
449- changes .add_option ('main' , 'Indent' , 'num-spaces' , value )
450-
451-
452438 def create_page_highlight (self ):
453439 """Return frame of widgets for Highlighting tab.
454440
@@ -1434,7 +1420,7 @@ def create_page_general(self):
14341420 set var startup_edit. Radiobuttons save_ask_on and save_auto_on
14351421 set var autosave. Entry boxes win_width_int and win_height_int
14361422 set var win_width and win_height. Setting var_name invokes the
1437- var_changed_var_name callback that adds option to changes.
1423+ default callback that adds option to changes.
14381424
14391425 Helplist: load_general_cfg loads list user_helplist with
14401426 name, position pairs and copies names to listbox helplist.
@@ -1470,10 +1456,14 @@ def create_page_general(self):
14701456 scroll_helplist: Scrollbar
14711457 """
14721458 parent = self .parent
1473- self .startup_edit = IntVar (parent )
1474- self .autosave = IntVar (parent )
1475- self .win_width = StringVar (parent )
1476- self .win_height = StringVar (parent )
1459+ self .startup_edit = self .tracers .add (
1460+ IntVar (parent ), ('main' , 'General' , 'editor-on-startup' ))
1461+ self .autosave = self .tracers .add (
1462+ IntVar (parent ), ('main' , 'General' , 'autosave' ))
1463+ self .win_width = self .tracers .add (
1464+ StringVar (parent ), ('main' , 'EditorWindow' , 'width' ))
1465+ self .win_height = self .tracers .add (
1466+ StringVar (parent ), ('main' , 'EditorWindow' , 'height' ))
14771467
14781468 # Create widgets:
14791469 # body.
0 commit comments