@@ -51,6 +51,7 @@ def __init__(self, parent, title='', _htest=False, _utest=False):
51
51
"""
52
52
Toplevel .__init__ (self , parent )
53
53
self .parent = parent
54
+ self .tracers = VarTrace ()
54
55
if _htest :
55
56
parent .instance_dict = {}
56
57
if not _utest :
@@ -76,6 +77,7 @@ def __init__(self, parent, title='', _htest=False, _utest=False):
76
77
# self.bind('<F1>', self.Help) #context help
77
78
self .load_configs ()
78
79
self .attach_var_callbacks () # Avoid callbacks during load_configs.
80
+ self .tracers .attach ()
79
81
80
82
if not _utest :
81
83
self .grab_set ()
@@ -133,10 +135,6 @@ def load_configs(self):
133
135
134
136
def attach_var_callbacks (self ):
135
137
"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 )
140
138
self .color .trace_add ('write' , self .var_changed_color )
141
139
self .builtin_theme .trace_add ('write' , self .var_changed_builtin_theme )
142
140
self .custom_theme .trace_add ('write' , self .var_changed_custom_theme )
@@ -146,22 +144,16 @@ def attach_var_callbacks(self):
146
144
self .builtin_keys .trace_add ('write' , self .var_changed_builtin_keys )
147
145
self .custom_keys .trace_add ('write' , self .var_changed_custom_keys )
148
146
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 )
153
147
154
148
def remove_var_callbacks (self ):
155
149
"Remove callbacks to prevent memory leaks."
156
150
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 ,
159
152
self .custom_theme , self .is_builtin_theme , self .highlight_target ,
160
153
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 ,):
163
155
var .trace_remove ('write' , var .trace_info ()[0 ][1 ])
164
-
156
+ self . tracers . detach ()
165
157
166
158
def create_action_buttons (self ):
167
159
"""Return frame of action buttons for dialog.
@@ -273,7 +265,7 @@ def create_page_font_tab(self):
273
265
274
266
Tabs: Enable users to change spaces entered for indent tabs.
275
267
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
277
269
changes. Load_tab_cfg initializes space_num to default.
278
270
279
271
Widget Structure: (*) widgets bound to self
@@ -294,10 +286,10 @@ def create_page_font_tab(self):
294
286
(*)indent_scale: Scale - space_num
295
287
"""
296
288
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' ) )
301
293
302
294
# Create widgets:
303
295
# body and body section frames.
@@ -443,12 +435,6 @@ def load_tab_cfg(self):
443
435
'main' , 'Indent' , 'num-spaces' , default = 4 , type = 'int' )
444
436
self .space_num .set (space_num )
445
437
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
-
452
438
def create_page_highlight (self ):
453
439
"""Return frame of widgets for Highlighting tab.
454
440
@@ -1434,7 +1420,7 @@ def create_page_general(self):
1434
1420
set var startup_edit. Radiobuttons save_ask_on and save_auto_on
1435
1421
set var autosave. Entry boxes win_width_int and win_height_int
1436
1422
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.
1438
1424
1439
1425
Helplist: load_general_cfg loads list user_helplist with
1440
1426
name, position pairs and copies names to listbox helplist.
@@ -1470,10 +1456,14 @@ def create_page_general(self):
1470
1456
scroll_helplist: Scrollbar
1471
1457
"""
1472
1458
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' ))
1477
1467
1478
1468
# Create widgets:
1479
1469
# body.
0 commit comments