diff --git a/src/devedeng/file_movie.py b/src/devedeng/file_movie.py index 489be4c..fdd1b1c 100644 --- a/src/devedeng/file_movie.py +++ b/src/devedeng/file_movie.py @@ -438,7 +438,7 @@ class file_movie(devedeng.interface_manager.interface_manager): def on_help_clicked(self, b): - help_file = devedeng.help.help("file.html") + devedeng.help.help("file.html") def properties(self): diff --git a/src/devedeng/interface_manager.py b/src/devedeng/interface_manager.py index a13975f..c7aee2e 100644 --- a/src/devedeng/interface_manager.py +++ b/src/devedeng/interface_manager.py @@ -47,10 +47,7 @@ class interface_manager(GObject.GObject): value for the variable will be the name of the active radiobutton """ - if (default_value is not None): - exec('self.' + group_name + ' = "' + str(default_value) + '"') - else: - exec('self.' + group_name + ' = None') + self.__setattr__(group_name, default_value) self.interface_groups[group_name] = (radiobutton_list, callback) 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). 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)) 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 being toggle2 active """ - exec('self.' + toggle_name + ' = ' + str(default_value)) + self.__setattr__(toggle_name, default_value) self.interface_dualtoggles.append((toggle_name, toggle2, callback)) 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 """ if (default_value is not None): - exec('self.' + text_name + ' = "' + - str(default_value).replace('\"', '\\"') + '"') + self.__setattr__(text_name, default_value.replace('"', '\\"')) else: - exec('self.' + text_name + ' = None') + self.__setattr__(text_name, None) self.interface_text.append((text_name, callback)) 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, 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) 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). 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)) 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). 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)) def add_list(self, liststore_name, callback=None): """ Adds an internal variable with the name liststore_name, linked to 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)) 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). 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)) 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). 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)) 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). 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)) 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). 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)) 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 disabled when the element is active """ - self.interface_enable_disable.append( - [element_name, to_enable, to_disable]) + self.interface_enable_disable.append([element_name, to_enable, to_disable]) def update_ui(self, builder): """ Sets the value of the widgets in base of the internal variables """ 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) callback = self.interface_groups[key][1] if (callback is not None): @@ -178,7 +174,7 @@ class interface_manager(GObject.GObject): obj.connect("toggled", callback) for element in self.interface_toggles: - value = eval('self.' + element[0]) + value = self.__dict__[element[0]] obj = builder.get_object(element[0]) obj.set_active(value) callback = element[1] @@ -186,7 +182,7 @@ class interface_manager(GObject.GObject): obj.connect("toggled", callback) for element in self.interface_dualtoggles: - value = eval('self.' + element[0]) + value = self.__dict__[element[0]] obj = builder.get_object(element[0]) obj2 = builder.get_object(element[1]) if value: @@ -198,7 +194,7 @@ class interface_manager(GObject.GObject): obj.connect("toggled", callback) for element in self.interface_text: - value = eval('self.' + element[0]) + value = self.__dict__[element[0]] obj = builder.get_object(element[0]) if (value is not None): obj.set_text(value) @@ -209,7 +205,7 @@ class interface_manager(GObject.GObject): obj.connect("changed", callback) for element in self.interface_labels: - value = eval('self.' + element) + value = self.__dict__[element] obj = builder.get_object(element) if obj is not None: if (value is not None): @@ -220,7 +216,7 @@ class interface_manager(GObject.GObject): for element in self.interface_integer_adjustments: obj = builder.get_object(element[0]) if obj is not None: - value = eval('self.' + element[0]) + value = self.__dict__[element[0]] obj.set_value(float(value)) callback = element[1] if (callback is not None): @@ -229,14 +225,14 @@ class interface_manager(GObject.GObject): for element in self.interface_float_adjustments: obj = builder.get_object(element[0]) if obj is not None: - value = eval('self.' + element[0]) + value = self.__dict__[element[0]] obj.set_value(value) callback = element[1] if (callback is not None): obj.connect("value_changed", callback) 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.clear() for item in obj: @@ -249,7 +245,7 @@ class interface_manager(GObject.GObject): the_liststore.connect("row_reordered", callback) for element in self.interface_colorbuttons: - value = eval('self.' + element[0]) + value = self.__dict__[element[0]] obj = builder.get_object(element[0]) objcolor = Gdk.Color( 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) for element in self.interface_fontbuttons: - value = eval('self.' + element[0]) + value = self.__dict__[element[0]] obj = builder.get_object(element[0]) if (value is not None): obj.set_font(value) @@ -269,7 +265,7 @@ class interface_manager(GObject.GObject): obj.connect("font_set", callback) for element in self.interface_filebuttons: - value = eval('self.' + element[0]) + value = self.__dict__[element[0]] obj = builder.get_object(element[0]) if (value is not None): obj.set_filename(value) @@ -278,7 +274,7 @@ class interface_manager(GObject.GObject): obj.connect("file_set", callback) for element in self.interface_comboboxes: - obj = eval('self.' + element[0]) + obj = self.__dict__[element[0]] the_combo = builder.get_object(element[0]) the_list = the_combo.get_model() the_list.clear() @@ -395,120 +391,114 @@ class interface_manager(GObject.GObject): for element in self.interface_groups[key][0]: obj = builder.get_object(element) if obj.get_active(): - exec('self.' + key + ' = "' + element + '"') + self.__setattr__(key, element) break for element in self.interface_toggles: obj = builder.get_object(element[0]) - if obj.get_active(): - exec('self.' + element[0] + ' = True') - else: - exec('self.' + element[0] + ' = False') + self.__setattr__(element[0], obj.get_active()) for element in self.interface_dualtoggles: obj = builder.get_object(element[0]) - if obj.get_active(): - exec('self.' + element[0] + ' = True') - else: - exec('self.' + element[0] + ' = False') + self.__setattr__(element[0], obj.get_active()) for element in self.interface_text: 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: obj = builder.get_object(element[0]) 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: obj = builder.get_object(element[0]) 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: obj = builder.get_object(element[0]) objcolor = obj.get_color() alpha = obj.get_alpha() - exec( - 'self.' + element[0] + ' = ((float(objcolor.red))/65535.0, (float(objcolor.green))/65535.0, (float(objcolor.blue))/65535.0, (float(alpha))/65535.0)') + self.__setattr__(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: 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: 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: - exec('self.' + element[0] + ' = []') + new_list = [] + self.__setattr__(element[0], new_list) the_liststore = builder.get_object(element[0]) ncolumns = the_liststore.get_n_columns() for row in the_liststore: final_row = [] for c in range(0, ncolumns): 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: obj = builder.get_object(element[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: - exec('self.' + element[0] + ' = ""') + self.__setattr__(element[0], '') def save_ui(self): """ Makes a copy of all the UI variables """ 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: - exec('self.' + element[0] + '_backup = self.' + element[0]) + self.__setattr__(element[0] + '_backup', self.__dict__[element[0]]) 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: - exec('self.' + element[0] + '_backup = self.' + element[0]) + self.__setattr__(element[0] + '_backup', self.__dict__[element[0]]) 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: - exec('self.' + element[0] + '_backup = self.' + element[0]) + self.__setattr__(element[0] + '_backup', self.__dict__[element[0]]) 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: - exec('self.' + element[0] + '_backup = self.' + element[0]) + self.__setattr__(element[0] + '_backup', self.__dict__[element[0]]) 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: - exec('self.' + element[0] + '_backup = self.' + element[0]) + self.__setattr__(element[0] + '_backup', self.__dict__[element[0]]) 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): """ Restores a copy of all the UI variables """ 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: - exec('self.' + element[0] + ' = self.' + element[0] + '_backup') + self.__setattr__(element[0], self.__dict__[element[0] + '_backup']) 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: - exec('self.' + element[0] + ' = self.' + element[0] + '_backup') + self.__setattr__(element[0], self.__dict__[element[0] + '_backup']) 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: - exec('self.' + element[0] + ' = self.' + element[0] + '_backup') + self.__setattr__(element[0], self.__dict__[element[0] + '_backup']) 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: - exec('self.' + element[0] + ' = self.' + element[0] + '_backup') + self.__setattr__(element[0], self.__dict__[element[0] + '_backup']) 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: - exec('self.' + element[0] + ' = self.' + element[0] + '_backup') + self.__setattr__(element[0], self.__dict__[element[0] + '_backup']) 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): """ Returns a dictionary with both the variables of the interface and its values, @@ -517,27 +507,27 @@ class interface_manager(GObject.GObject): output = {} for element in self.interface_groups: - output[element] = eval('self.' + element) + output[element] = self.__dict__[element] 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: - output[element[0]] = eval('self.' + element[0]) + output[element[0]] = self.__dict__[element[0]] 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: - output[element[0]] = eval('self.' + element[0]) + output[element[0]] = self.__dict__[element[0]] 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: - output[element[0]] = eval('self.' + element[0]) + output[element[0]] = self.__dict__[element[0]] 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: - output[element[0]] = eval('self.' + element[0]) + output[element[0]] = self.__dict__[element[0]] 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: - output[element[0]] = eval('self.' + element[0]) + output[element[0]] = self.__dict__[element[0]] return output def unserialize(self, data_list): @@ -547,44 +537,34 @@ class interface_manager(GObject.GObject): for element in self.interface_groups: if element in data_list: - exec('self.' + element + ' = data_list["' + element + '"]') + self.__setattr__(element, data_list[element]) for element in self.interface_toggles: if element[0] in data_list: - exec('self.' + element[0] + - ' = data_list["' + element[0] + '"]') + self.__setattr__(element[0], data_list[element[0]]) for element in self.interface_dualtoggles: if element[0] in data_list: - exec('self.' + element[0] + - ' = data_list["' + element[0] + '"]') + self.__setattr__(element[0], data_list[element[0]]) for element in self.interface_text: if element[0] in data_list: - exec('self.' + element[0] + - ' = data_list["' + element[0] + '"]') + self.__setattr__(element[0], data_list[element[0]]) for element in self.interface_integer_adjustments: if element[0] in data_list: - exec('self.' + element[0] + - ' = data_list["' + element[0] + '"]') + self.__setattr__(element[0], data_list[element[0]]) for element in self.interface_float_adjustments: if element[0] in data_list: - exec('self.' + element[0] + - ' = data_list["' + element[0] + '"]') + self.__setattr__(element[0], data_list[element[0]]) for element in self.interface_colorbuttons: if element[0] in data_list: - exec('self.' + element[0] + - ' = data_list["' + element[0] + '"]') + self.__setattr__(element[0], data_list[element[0]]) for element in self.interface_fontbuttons: if element[0] in data_list: - exec('self.' + element[0] + - ' = data_list["' + element[0] + '"]') + self.__setattr__(element[0], data_list[element[0]]) for element in self.interface_filebuttons: if element[0] in data_list: - exec('self.' + element[0] + - ' = data_list["' + element[0] + '"]') + self.__setattr__(element[0], data_list[element[0]]) for element in self.interface_lists: if element[0] in data_list: - exec('self.' + element[0] + - ' = data_list["' + element[0] + '"]') + self.__setattr__(element[0], data_list[element[0]]) for element in self.interface_comboboxes: if element[0] in data_list: - exec('self.' + element[0] + - ' = data_list["' + element[0] + '"]') + self.__setattr__(element[0], data_list[element[0]])