Replace EVAL and EXEC

In the old code, eval() and exec() were used to insert properties in
an object with an specific name. This is clearly an ugly solution,
when the right way is to use self.__setattr__ and self.__dict__.

This patch replaces that ugly code with new one that follows the
pythonic way of doing the things.
This commit is contained in:
Sergio Costas 2019-01-02 22:47:09 +01:00
parent f0893b3ff7
commit 3a532f504a
2 changed files with 86 additions and 106 deletions

View file

@ -438,7 +438,7 @@ class file_movie(devedeng.interface_manager.interface_manager):
def on_help_clicked(self, b): def on_help_clicked(self, b):
help_file = devedeng.help.help("file.html") devedeng.help.help("file.html")
def properties(self): def properties(self):

View file

@ -47,10 +47,7 @@ class interface_manager(GObject.GObject):
value for the variable will be the name of the active value for the variable will be the name of the active
radiobutton """ radiobutton """
if (default_value is not None): self.__setattr__(group_name, default_value)
exec('self.' + group_name + ' = "' + str(default_value) + '"')
else:
exec('self.' + group_name + ' = None')
self.interface_groups[group_name] = (radiobutton_list, callback) self.interface_groups[group_name] = (radiobutton_list, callback)
def add_toggle(self, toggle_name, default_value, callback=None): def add_toggle(self, toggle_name, default_value, callback=None):
@ -58,7 +55,7 @@ class interface_manager(GObject.GObject):
element with the same name (must be or inherint from Gtk.ToogleButton). element with the same name (must be or inherint from Gtk.ToogleButton).
The default value can be True of False """ The default value can be True of False """
exec('self.' + toggle_name + ' = ' + str(default_value)) self.__setattr__(toggle_name, default_value)
self.interface_toggles.append((toggle_name, callback)) self.interface_toggles.append((toggle_name, callback))
def add_dualtoggle(self, toggle_name, toggle2, default_value, callback=None): def add_dualtoggle(self, toggle_name, toggle2, default_value, callback=None):
@ -67,7 +64,7 @@ class interface_manager(GObject.GObject):
The default value can be True of False, with True being toggle_name active, and False The default value can be True of False, with True being toggle_name active, and False
being toggle2 active """ being toggle2 active """
exec('self.' + toggle_name + ' = ' + str(default_value)) self.__setattr__(toggle_name, default_value)
self.interface_dualtoggles.append((toggle_name, toggle2, callback)) self.interface_dualtoggles.append((toggle_name, toggle2, callback))
def add_text(self, text_name, default_value, callback=None): def add_text(self, text_name, default_value, callback=None):
@ -76,10 +73,9 @@ class interface_manager(GObject.GObject):
The default value can be a text or None """ The default value can be a text or None """
if (default_value is not None): if (default_value is not None):
exec('self.' + text_name + ' = "' + self.__setattr__(text_name, default_value.replace('"', '\\"'))
str(default_value).replace('\"', '\\"') + '"')
else: else:
exec('self.' + text_name + ' = None') self.__setattr__(text_name, None)
self.interface_text.append((text_name, callback)) self.interface_text.append((text_name, callback))
def add_label(self, text_name, default_value): def add_label(self, text_name, default_value):
@ -88,7 +84,7 @@ class interface_manager(GObject.GObject):
The default value can be a text or None. This element is copied to the UI, The default value can be a text or None. This element is copied to the UI,
but is never updated from the UI if the user changes it """ but is never updated from the UI if the user changes it """
exec('self.' + text_name + ' = default_value') self.__setattr__(text_name, default_value)
self.interface_labels.append(text_name) self.interface_labels.append(text_name)
def add_integer_adjustment(self, adjustment_name, default_value, callback=None): def add_integer_adjustment(self, adjustment_name, default_value, callback=None):
@ -96,7 +92,7 @@ class interface_manager(GObject.GObject):
element with the same name (must be a Gtk.Adjustment). element with the same name (must be a Gtk.Adjustment).
The default value must be an integer """ The default value must be an integer """
exec('self.' + adjustment_name + ' = ' + str(default_value)) self.__setattr__(adjustment_name, default_value)
self.interface_integer_adjustments.append((adjustment_name, callback)) self.interface_integer_adjustments.append((adjustment_name, callback))
def add_float_adjustment(self, adjustment_name, default_value, callback=None): def add_float_adjustment(self, adjustment_name, default_value, callback=None):
@ -104,14 +100,14 @@ class interface_manager(GObject.GObject):
element with the same name (must be a Gtk.Adjustment). element with the same name (must be a Gtk.Adjustment).
The default value must be an float """ The default value must be an float """
exec('self.' + adjustment_name + ' = ' + str(default_value)) self.__setattr__(adjustment_name, default_value)
self.interface_float_adjustments.append((adjustment_name, callback)) self.interface_float_adjustments.append((adjustment_name, callback))
def add_list(self, liststore_name, callback=None): def add_list(self, liststore_name, callback=None):
""" Adds an internal variable with the name liststore_name, linked to """ Adds an internal variable with the name liststore_name, linked to
an element with the same name (must be a Gtk.ListStore). """ an element with the same name (must be a Gtk.ListStore). """
exec('self.' + liststore_name + ' = []') self.__setattr__(liststore_name, [])
self.interface_lists.append((liststore_name, callback)) self.interface_lists.append((liststore_name, callback))
def add_colorbutton(self, colorbutton_name, default_value, callback=None): def add_colorbutton(self, colorbutton_name, default_value, callback=None):
@ -119,7 +115,7 @@ class interface_manager(GObject.GObject):
element with the same name (must be a Gtk.ColorButton). element with the same name (must be a Gtk.ColorButton).
The default value must be a set with RGBA values """ The default value must be a set with RGBA values """
exec('self.' + colorbutton_name + ' = default_value') self.__setattr__(colorbutton_name, default_value)
self.interface_colorbuttons.append((colorbutton_name, callback)) self.interface_colorbuttons.append((colorbutton_name, callback))
def add_fontbutton(self, fontbutton_name, default_value, callback=None): def add_fontbutton(self, fontbutton_name, default_value, callback=None):
@ -127,7 +123,7 @@ class interface_manager(GObject.GObject):
element with the same name (must be a Gtk.FontButton). element with the same name (must be a Gtk.FontButton).
The default value must be a string with the font values """ The default value must be a string with the font values """
exec('self.' + fontbutton_name + ' = default_value') self.__setattr__(fontbutton_name, default_value)
self.interface_fontbuttons.append((fontbutton_name, callback)) self.interface_fontbuttons.append((fontbutton_name, callback))
def add_filebutton(self, filebutton_name, default_value, callback=None): def add_filebutton(self, filebutton_name, default_value, callback=None):
@ -135,7 +131,7 @@ class interface_manager(GObject.GObject):
element with the same name (must be a Gtk.FileButton). element with the same name (must be a Gtk.FileButton).
The default value must be a string with the font values """ The default value must be a string with the font values """
exec('self.' + filebutton_name + ' = default_value') self.__setattr__(filebutton_name, default_value)
self.interface_filebuttons.append((filebutton_name, callback)) self.interface_filebuttons.append((filebutton_name, callback))
def add_combobox(self, combobox_name, values, default_value, callback=None): def add_combobox(self, combobox_name, values, default_value, callback=None):
@ -143,7 +139,7 @@ class interface_manager(GObject.GObject):
element with the same name (must be a Gtk.Combobox). element with the same name (must be a Gtk.Combobox).
The default value must be an integer with the entry selected """ The default value must be an integer with the entry selected """
exec('self.' + combobox_name + ' = default_value') self.__setattr__(combobox_name, default_value)
self.interface_comboboxes.append((combobox_name, values, callback)) self.interface_comboboxes.append((combobox_name, values, callback))
def add_show_hide(self, element_name, to_show, to_hide): def add_show_hide(self, element_name, to_show, to_hide):
@ -162,14 +158,14 @@ class interface_manager(GObject.GObject):
elements that will be enabled when the element is inactive, and elements that will be enabled when the element is inactive, and
disabled when the element is active """ disabled when the element is active """
self.interface_enable_disable.append( self.interface_enable_disable.append([element_name, to_enable, to_disable])
[element_name, to_enable, to_disable])
def update_ui(self, builder): def update_ui(self, builder):
""" Sets the value of the widgets in base of the internal variables """ """ Sets the value of the widgets in base of the internal variables """
for key in self.interface_groups: for key in self.interface_groups:
obj = eval('self.' + key) obj = self.__dict__[key]
obj2 = eval("self."+key)
builder.get_object(obj).set_active(True) builder.get_object(obj).set_active(True)
callback = self.interface_groups[key][1] callback = self.interface_groups[key][1]
if (callback is not None): if (callback is not None):
@ -178,7 +174,7 @@ class interface_manager(GObject.GObject):
obj.connect("toggled", callback) obj.connect("toggled", callback)
for element in self.interface_toggles: for element in self.interface_toggles:
value = eval('self.' + element[0]) value = self.__dict__[element[0]]
obj = builder.get_object(element[0]) obj = builder.get_object(element[0])
obj.set_active(value) obj.set_active(value)
callback = element[1] callback = element[1]
@ -186,7 +182,7 @@ class interface_manager(GObject.GObject):
obj.connect("toggled", callback) obj.connect("toggled", callback)
for element in self.interface_dualtoggles: for element in self.interface_dualtoggles:
value = eval('self.' + element[0]) value = self.__dict__[element[0]]
obj = builder.get_object(element[0]) obj = builder.get_object(element[0])
obj2 = builder.get_object(element[1]) obj2 = builder.get_object(element[1])
if value: if value:
@ -198,7 +194,7 @@ class interface_manager(GObject.GObject):
obj.connect("toggled", callback) obj.connect("toggled", callback)
for element in self.interface_text: for element in self.interface_text:
value = eval('self.' + element[0]) value = self.__dict__[element[0]]
obj = builder.get_object(element[0]) obj = builder.get_object(element[0])
if (value is not None): if (value is not None):
obj.set_text(value) obj.set_text(value)
@ -209,7 +205,7 @@ class interface_manager(GObject.GObject):
obj.connect("changed", callback) obj.connect("changed", callback)
for element in self.interface_labels: for element in self.interface_labels:
value = eval('self.' + element) value = self.__dict__[element]
obj = builder.get_object(element) obj = builder.get_object(element)
if obj is not None: if obj is not None:
if (value is not None): if (value is not None):
@ -220,7 +216,7 @@ class interface_manager(GObject.GObject):
for element in self.interface_integer_adjustments: for element in self.interface_integer_adjustments:
obj = builder.get_object(element[0]) obj = builder.get_object(element[0])
if obj is not None: if obj is not None:
value = eval('self.' + element[0]) value = self.__dict__[element[0]]
obj.set_value(float(value)) obj.set_value(float(value))
callback = element[1] callback = element[1]
if (callback is not None): if (callback is not None):
@ -229,14 +225,14 @@ class interface_manager(GObject.GObject):
for element in self.interface_float_adjustments: for element in self.interface_float_adjustments:
obj = builder.get_object(element[0]) obj = builder.get_object(element[0])
if obj is not None: if obj is not None:
value = eval('self.' + element[0]) value = self.__dict__[element[0]]
obj.set_value(value) obj.set_value(value)
callback = element[1] callback = element[1]
if (callback is not None): if (callback is not None):
obj.connect("value_changed", callback) obj.connect("value_changed", callback)
for element in self.interface_lists: for element in self.interface_lists:
obj = eval('self.' + element[0]) obj = self.__dict__[element[0]]
the_liststore = builder.get_object(element[0]) the_liststore = builder.get_object(element[0])
the_liststore.clear() the_liststore.clear()
for item in obj: for item in obj:
@ -249,7 +245,7 @@ class interface_manager(GObject.GObject):
the_liststore.connect("row_reordered", callback) the_liststore.connect("row_reordered", callback)
for element in self.interface_colorbuttons: for element in self.interface_colorbuttons:
value = eval('self.' + element[0]) value = self.__dict__[element[0]]
obj = builder.get_object(element[0]) obj = builder.get_object(element[0])
objcolor = Gdk.Color( objcolor = Gdk.Color(
int(value[0] * 65535.0), int(value[1] * 65535.0), int(value[2] * 65535.0)) int(value[0] * 65535.0), int(value[1] * 65535.0), int(value[2] * 65535.0))
@ -260,7 +256,7 @@ class interface_manager(GObject.GObject):
obj.connect("color_set", callback) obj.connect("color_set", callback)
for element in self.interface_fontbuttons: for element in self.interface_fontbuttons:
value = eval('self.' + element[0]) value = self.__dict__[element[0]]
obj = builder.get_object(element[0]) obj = builder.get_object(element[0])
if (value is not None): if (value is not None):
obj.set_font(value) obj.set_font(value)
@ -269,7 +265,7 @@ class interface_manager(GObject.GObject):
obj.connect("font_set", callback) obj.connect("font_set", callback)
for element in self.interface_filebuttons: for element in self.interface_filebuttons:
value = eval('self.' + element[0]) value = self.__dict__[element[0]]
obj = builder.get_object(element[0]) obj = builder.get_object(element[0])
if (value is not None): if (value is not None):
obj.set_filename(value) obj.set_filename(value)
@ -278,7 +274,7 @@ class interface_manager(GObject.GObject):
obj.connect("file_set", callback) obj.connect("file_set", callback)
for element in self.interface_comboboxes: for element in self.interface_comboboxes:
obj = eval('self.' + element[0]) obj = self.__dict__[element[0]]
the_combo = builder.get_object(element[0]) the_combo = builder.get_object(element[0])
the_list = the_combo.get_model() the_list = the_combo.get_model()
the_list.clear() the_list.clear()
@ -395,120 +391,114 @@ class interface_manager(GObject.GObject):
for element in self.interface_groups[key][0]: for element in self.interface_groups[key][0]:
obj = builder.get_object(element) obj = builder.get_object(element)
if obj.get_active(): if obj.get_active():
exec('self.' + key + ' = "' + element + '"') self.__setattr__(key, element)
break break
for element in self.interface_toggles: for element in self.interface_toggles:
obj = builder.get_object(element[0]) obj = builder.get_object(element[0])
if obj.get_active(): self.__setattr__(element[0], obj.get_active())
exec('self.' + element[0] + ' = True')
else:
exec('self.' + element[0] + ' = False')
for element in self.interface_dualtoggles: for element in self.interface_dualtoggles:
obj = builder.get_object(element[0]) obj = builder.get_object(element[0])
if obj.get_active(): self.__setattr__(element[0], obj.get_active())
exec('self.' + element[0] + ' = True')
else:
exec('self.' + element[0] + ' = False')
for element in self.interface_text: for element in self.interface_text:
obj = builder.get_object(element[0]) obj = builder.get_object(element[0])
exec('self.' + element[0] + ' = obj.get_text()') self.__setattr__(element[0], obj.get_text())
for element in self.interface_integer_adjustments: for element in self.interface_integer_adjustments:
obj = builder.get_object(element[0]) obj = builder.get_object(element[0])
if obj is not None: if obj is not None:
exec('self.' + element[0] + ' = int(obj.get_value())') self.__setattr__(element[0], obj.get_value())
for element in self.interface_float_adjustments: for element in self.interface_float_adjustments:
obj = builder.get_object(element[0]) obj = builder.get_object(element[0])
if obj is not None: if obj is not None:
exec('self.' + element[0] + ' = obj.get_value()') self.__setattr__(element[0], obj.get_value())
for element in self.interface_colorbuttons: for element in self.interface_colorbuttons:
obj = builder.get_object(element[0]) obj = builder.get_object(element[0])
objcolor = obj.get_color() objcolor = obj.get_color()
alpha = obj.get_alpha() alpha = obj.get_alpha()
exec( self.__setattr__(element[0], ((float(objcolor.red))/65535.0, (float(objcolor.green))/65535.0, (float(objcolor.blue))/65535.0, (float(alpha))/65535.0))
'self.' + element[0] + ' = ((float(objcolor.red))/65535.0, (float(objcolor.green))/65535.0, (float(objcolor.blue))/65535.0, (float(alpha))/65535.0)')
for element in self.interface_fontbuttons: for element in self.interface_fontbuttons:
obj = builder.get_object(element[0]) obj = builder.get_object(element[0])
exec('self.' + element[0] + ' = obj.get_font()') self.__setattr__(element[0], obj.get_font())
for element in self.interface_filebuttons: for element in self.interface_filebuttons:
obj = builder.get_object(element[0]) obj = builder.get_object(element[0])
exec('self.' + element[0] + ' = obj.get_filename()') self.__setattr__(element[0], obj.get_filename())
for element in self.interface_lists: for element in self.interface_lists:
exec('self.' + element[0] + ' = []') new_list = []
self.__setattr__(element[0], new_list)
the_liststore = builder.get_object(element[0]) the_liststore = builder.get_object(element[0])
ncolumns = the_liststore.get_n_columns() ncolumns = the_liststore.get_n_columns()
for row in the_liststore: for row in the_liststore:
final_row = [] final_row = []
for c in range(0, ncolumns): for c in range(0, ncolumns):
final_row.append(row.model[row.iter][c]) final_row.append(row.model[row.iter][c])
exec('self.' + element[0] + '.append(final_row)') new_list.append(final_row)
for element in self.interface_comboboxes: for element in self.interface_comboboxes:
obj = builder.get_object(element[0]) obj = builder.get_object(element[0])
if (len(element[1]) != 0): if (len(element[1]) != 0):
exec('self.' + element[0] + ' = element[1][obj.get_active()]') self.__setattr__(element[0], element[1][obj.get_active()])
else: else:
exec('self.' + element[0] + ' = ""') self.__setattr__(element[0], '')
def save_ui(self): def save_ui(self):
""" Makes a copy of all the UI variables """ """ Makes a copy of all the UI variables """
for element in self.interface_groups: for element in self.interface_groups:
exec('self.' + element + '_backup = self.' + element) self.__setattr__(element + '_backup', self.__dict__[element])
for element in self.interface_toggles: for element in self.interface_toggles:
exec('self.' + element[0] + '_backup = self.' + element[0]) self.__setattr__(element[0] + '_backup', self.__dict__[element[0]])
for element in self.interface_dualtoggles: for element in self.interface_dualtoggles:
exec('self.' + element[0] + '_backup = self.' + element[0]) self.__setattr__(element[0] + '_backup', self.__dict__[element[0]])
for element in self.interface_text: for element in self.interface_text:
exec('self.' + element[0] + '_backup = self.' + element[0]) self.__setattr__(element[0] + '_backup', self.__dict__[element[0]])
for element in self.interface_integer_adjustments: for element in self.interface_integer_adjustments:
exec('self.' + element[0] + '_backup = self.' + element[0]) self.__setattr__(element[0] + '_backup', self.__dict__[element[0]])
for element in self.interface_float_adjustments: for element in self.interface_float_adjustments:
exec('self.' + element[0] + '_backup = self.' + element[0]) self.__setattr__(element[0] + '_backup', self.__dict__[element[0]])
for element in self.interface_colorbuttons: for element in self.interface_colorbuttons:
exec('self.' + element[0] + '_backup = self.' + element[0]) self.__setattr__(element[0] + '_backup', self.__dict__[element[0]])
for element in self.interface_fontbuttons: for element in self.interface_fontbuttons:
exec('self.' + element[0] + '_backup = self.' + element[0]) self.__setattr__(element[0] + '_backup', self.__dict__[element[0]])
for element in self.interface_filebuttons: for element in self.interface_filebuttons:
exec('self.' + element[0] + '_backup = self.' + element[0]) self.__setattr__(element[0] + '_backup', self.__dict__[element[0]])
for element in self.interface_lists: for element in self.interface_lists:
exec('self.' + element[0] + '_backup = self.' + element[0]) self.__setattr__(element[0] + '_backup', self.__dict__[element[0]])
for element in self.interface_comboboxes: for element in self.interface_comboboxes:
exec('self.' + element[0] + '_backup = self.' + element[0]) self.__setattr__(element[0] + '_backup', self.__dict__[element[0]])
def restore_ui(self): def restore_ui(self):
""" Restores a copy of all the UI variables """ """ Restores a copy of all the UI variables """
for element in self.interface_groups: for element in self.interface_groups:
exec('self.' + element + ' = self.' + element + '_backup') self.__setattr__(element, self.__dict__[element + '_backup'])
for element in self.interface_toggles: for element in self.interface_toggles:
exec('self.' + element[0] + ' = self.' + element[0] + '_backup') self.__setattr__(element[0], self.__dict__[element[0] + '_backup'])
for element in self.interface_dualtoggles: for element in self.interface_dualtoggles:
exec('self.' + element[0] + ' = self.' + element[0] + '_backup') self.__setattr__(element[0], self.__dict__[element[0] + '_backup'])
for element in self.interface_text: for element in self.interface_text:
exec('self.' + element[0] + ' = self.' + element[0] + '_backup') self.__setattr__(element[0], self.__dict__[element[0] + '_backup'])
for element in self.interface_integer_adjustments: for element in self.interface_integer_adjustments:
exec('self.' + element[0] + ' = self.' + element[0] + '_backup') self.__setattr__(element[0], self.__dict__[element[0] + '_backup'])
for element in self.interface_float_adjustments: for element in self.interface_float_adjustments:
exec('self.' + element[0] + ' = self.' + element[0] + '_backup') self.__setattr__(element[0], self.__dict__[element[0] + '_backup'])
for element in self.interface_colorbuttons: for element in self.interface_colorbuttons:
exec('self.' + element[0] + ' = self.' + element[0] + '_backup') self.__setattr__(element[0], self.__dict__[element[0] + '_backup'])
for element in self.interface_fontbuttons: for element in self.interface_fontbuttons:
exec('self.' + element[0] + ' = self.' + element[0] + '_backup') self.__setattr__(element[0], self.__dict__[element[0] + '_backup'])
for element in self.interface_filebuttons: for element in self.interface_filebuttons:
exec('self.' + element[0] + ' = self.' + element[0] + '_backup') self.__setattr__(element[0], self.__dict__[element[0] + '_backup'])
for element in self.interface_lists: for element in self.interface_lists:
exec('self.' + element[0] + ' = self.' + element[0] + '_backup') self.__setattr__(element[0], self.__dict__[element[0] + '_backup'])
for element in self.interface_comboboxes: for element in self.interface_comboboxes:
exec('self.' + element[0] + ' = self.' + element[0] + '_backup') self.__setattr__(element[0], self.__dict__[element[0] + '_backup'])
def serialize(self): def serialize(self):
""" Returns a dictionary with both the variables of the interface and its values, """ Returns a dictionary with both the variables of the interface and its values,
@ -517,27 +507,27 @@ class interface_manager(GObject.GObject):
output = {} output = {}
for element in self.interface_groups: for element in self.interface_groups:
output[element] = eval('self.' + element) output[element] = self.__dict__[element]
for element in self.interface_toggles: for element in self.interface_toggles:
output[element[0]] = eval('self.' + element[0]) output[element[0]] = self.__dict__[element[0]]
for element in self.interface_dualtoggles: for element in self.interface_dualtoggles:
output[element[0]] = eval('self.' + element[0]) output[element[0]] = self.__dict__[element[0]]
for element in self.interface_text: for element in self.interface_text:
output[element[0]] = eval('self.' + element[0]) output[element[0]] = self.__dict__[element[0]]
for element in self.interface_integer_adjustments: for element in self.interface_integer_adjustments:
output[element[0]] = eval('self.' + element[0]) output[element[0]] = self.__dict__[element[0]]
for element in self.interface_float_adjustments: for element in self.interface_float_adjustments:
output[element[0]] = eval('self.' + element[0]) output[element[0]] = self.__dict__[element[0]]
for element in self.interface_colorbuttons: for element in self.interface_colorbuttons:
output[element[0]] = eval('self.' + element[0]) output[element[0]] = self.__dict__[element[0]]
for element in self.interface_fontbuttons: for element in self.interface_fontbuttons:
output[element[0]] = eval('self.' + element[0]) output[element[0]] = self.__dict__[element[0]]
for element in self.interface_filebuttons: for element in self.interface_filebuttons:
output[element[0]] = eval('self.' + element[0]) output[element[0]] = self.__dict__[element[0]]
for element in self.interface_lists: for element in self.interface_lists:
output[element[0]] = eval('self.' + element[0]) output[element[0]] = self.__dict__[element[0]]
for element in self.interface_comboboxes: for element in self.interface_comboboxes:
output[element[0]] = eval('self.' + element[0]) output[element[0]] = self.__dict__[element[0]]
return output return output
def unserialize(self, data_list): def unserialize(self, data_list):
@ -547,44 +537,34 @@ class interface_manager(GObject.GObject):
for element in self.interface_groups: for element in self.interface_groups:
if element in data_list: if element in data_list:
exec('self.' + element + ' = data_list["' + element + '"]') self.__setattr__(element, data_list[element])
for element in self.interface_toggles: for element in self.interface_toggles:
if element[0] in data_list: if element[0] in data_list:
exec('self.' + element[0] + self.__setattr__(element[0], data_list[element[0]])
' = data_list["' + element[0] + '"]')
for element in self.interface_dualtoggles: for element in self.interface_dualtoggles:
if element[0] in data_list: if element[0] in data_list:
exec('self.' + element[0] + self.__setattr__(element[0], data_list[element[0]])
' = data_list["' + element[0] + '"]')
for element in self.interface_text: for element in self.interface_text:
if element[0] in data_list: if element[0] in data_list:
exec('self.' + element[0] + self.__setattr__(element[0], data_list[element[0]])
' = data_list["' + element[0] + '"]')
for element in self.interface_integer_adjustments: for element in self.interface_integer_adjustments:
if element[0] in data_list: if element[0] in data_list:
exec('self.' + element[0] + self.__setattr__(element[0], data_list[element[0]])
' = data_list["' + element[0] + '"]')
for element in self.interface_float_adjustments: for element in self.interface_float_adjustments:
if element[0] in data_list: if element[0] in data_list:
exec('self.' + element[0] + self.__setattr__(element[0], data_list[element[0]])
' = data_list["' + element[0] + '"]')
for element in self.interface_colorbuttons: for element in self.interface_colorbuttons:
if element[0] in data_list: if element[0] in data_list:
exec('self.' + element[0] + self.__setattr__(element[0], data_list[element[0]])
' = data_list["' + element[0] + '"]')
for element in self.interface_fontbuttons: for element in self.interface_fontbuttons:
if element[0] in data_list: if element[0] in data_list:
exec('self.' + element[0] + self.__setattr__(element[0], data_list[element[0]])
' = data_list["' + element[0] + '"]')
for element in self.interface_filebuttons: for element in self.interface_filebuttons:
if element[0] in data_list: if element[0] in data_list:
exec('self.' + element[0] + self.__setattr__(element[0], data_list[element[0]])
' = data_list["' + element[0] + '"]')
for element in self.interface_lists: for element in self.interface_lists:
if element[0] in data_list: if element[0] in data_list:
exec('self.' + element[0] + self.__setattr__(element[0], data_list[element[0]])
' = data_list["' + element[0] + '"]')
for element in self.interface_comboboxes: for element in self.interface_comboboxes:
if element[0] in data_list: if element[0] in data_list:
exec('self.' + element[0] + self.__setattr__(element[0], data_list[element[0]])
' = data_list["' + element[0] + '"]')