def create_ui(self): self.builder = Gtk.Builder.new_from_file(get_resource("ifacewatch.ui")) self.ifacewatch_window = self.get_object('ifacewatch_window') self.builder.connect_signals({ "on_checkbutton_active_toggled": self.on_checkbutton_active_toggled, }) box = self.get_object("ifacewatch_prefs_box") component.get("Preferences").add_page("IfaceWatch", box) component.get("PluginManager").register_hook("on_apply_prefs", self.on_apply_prefs) component.get("PluginManager").register_hook("on_show_prefs", self.on_show_prefs) self.gtkui_log = GTKUILogger(self.get_object("textview_log")) self.log = Logger(gtkui_logger=self.gtkui_log)
def create_ui(self): self.glade = gtk.glade.XML(get_resource("ifacewatch.glade")) self.ifacewatch_window = self.glade.get_widget('ifacewatch_window') box = self.glade.get_widget("ifacewatch_prefs_box") self.glade.signal_autoconnect({ "on_checkbutton_active_toggled": self.on_checkbutton_active_toggled, }) component.get("Preferences").add_page("IfaceWatch", box) component.get("PluginManager").register_hook("on_apply_prefs", self.on_apply_prefs) component.get("PluginManager").register_hook("on_show_prefs", self.on_show_prefs) self.gtkui_log = GTKUILogger(self.glade.get_widget("textview_log")) self.log = Logger(gtkui_logger=self.gtkui_log)
class GtkUI(GtkPluginBase): def enable(self): self.last_config = None self.create_ui() self.on_show_prefs( ) # Necessary for the first time when the plugin is installed client.register_event_handler("IfaceWatchLogMessageEvent", self.cb_on_log_message_event) client.register_event_handler("IfaceWatchIPChangedEvent", self.cb_get_ip) def disable(self): self.last_config = None component.get("Preferences").remove_page("IfaceWatch") component.get("PluginManager").deregister_hook("on_apply_prefs", self.on_apply_prefs) component.get("PluginManager").deregister_hook("on_show_prefs", self.on_show_prefs) def create_ui(self): self.glade = gtk.glade.XML(get_resource("ifacewatch.glade")) self.ifacewatch_window = self.glade.get_widget('ifacewatch_window') box = self.glade.get_widget("ifacewatch_prefs_box") self.glade.signal_autoconnect({ "on_checkbutton_active_toggled": self.on_checkbutton_active_toggled, }) component.get("Preferences").add_page("IfaceWatch", box) component.get("PluginManager").register_hook("on_apply_prefs", self.on_apply_prefs) component.get("PluginManager").register_hook("on_show_prefs", self.on_show_prefs) self.gtkui_log = GTKUILogger(self.glade.get_widget("textview_log")) self.log = Logger(gtkui_logger=self.gtkui_log) ############################### # Update config and lists data ############################### def on_checkbutton_active_toggled(self, widget): active = self.glade.get_widget("checkbutton_active").get_active() client.ifacewatch.save_config({"active": active}) def on_apply_prefs(self): """Called when the 'Apply' button is pressed""" iface = self.glade.get_widget("entry_interface").get_text() interval = self.glade.get_widget( "spinbutton_update_interval").get_value() active = self.glade.get_widget("checkbutton_active").get_active() if self.last_config is not None: if self.last_config['interface'] != iface: self.log.info("New interface specified: '%s'" % iface) elif self.last_config['update_interval'] != interval: pass else: return client.ifacewatch.save_config({ "interface": iface, "update_interval": int(interval), "active": active }) def on_show_prefs(self): """Called when showing preferences window""" client.ifacewatch.get_config().addCallback(self.cb_get_config) client.ifacewatch.get_ip().addCallback(self.update_ip) def cb_on_log_message_event(self, message): """Callback function called on GtkUILogMessageEvent events""" self.gtkui_log.gtkui_log_message(message) def cb_get_config(self, config): """Callback function called after saving data to core""" if config is None: self.log.error( "An error has occured. Cannot load data from config") else: self.last_config = config self.glade.get_widget("entry_interface").set_text( config['interface']) self.glade.get_widget("spinbutton_update_interval").set_value( int(config['update_interval'])) self.glade.get_widget("checkbutton_active").set_active( config['active']) def cb_get_ip(self, ip): self.update_ip(ip) def update_ip(self, ip): label = self.glade.get_widget("label_IP_value") # May happen if the plugin is not actually enabled if label is None: return label.set_text(ip) main_prefs = component.get("Preferences") # Support both Deluge v1.3 and v2 if hasattr(main_prefs, "glade"): main_prefs.glade.get_widget("entry_interface").set_text(ip) else: main_prefs.builder.get_object("entry_interface").set_text(ip)
class GtkUI(Gtk3PluginBase): def enable(self): self.last_config = None self.create_ui() self.on_show_prefs( ) # Necessary for the first time when the plugin is installed client.register_event_handler("IfaceWatchLogMessageEvent", self.cb_on_log_message_event) client.register_event_handler("IfaceWatchIPChangedEvent", self.cb_get_ip) def disable(self): self.last_config = None component.get("Preferences").remove_page("IfaceWatch") component.get("PluginManager").deregister_hook("on_apply_prefs", self.on_apply_prefs) component.get("PluginManager").deregister_hook("on_show_prefs", self.on_show_prefs) def get_object(self, name): return self.builder.get_object(name) def create_ui(self): self.builder = Gtk.Builder.new_from_file(get_resource("ifacewatch.ui")) self.ifacewatch_window = self.get_object('ifacewatch_window') self.builder.connect_signals({ "on_checkbutton_active_toggled": self.on_checkbutton_active_toggled, }) box = self.get_object("ifacewatch_prefs_box") component.get("Preferences").add_page("IfaceWatch", box) component.get("PluginManager").register_hook("on_apply_prefs", self.on_apply_prefs) component.get("PluginManager").register_hook("on_show_prefs", self.on_show_prefs) self.gtkui_log = GTKUILogger(self.get_object("textview_log")) self.log = Logger(gtkui_logger=self.gtkui_log) ############################### # Update config and lists data ############################### def on_checkbutton_active_toggled(self, widget): active = self.get_object("checkbutton_active").get_active() client.ifacewatch.save_config({"active": active}) def on_apply_prefs(self): """Called when the 'Apply' button is pressed""" iface = self.get_object("interface_combobox").get_active_text() interval = self.get_object("spinbutton_update_interval").get_value() active = self.get_object("checkbutton_active").get_active() if self.last_config is not None: if self.last_config['interface'] != iface: self.log.info("New interface specified: '%s'" % iface) elif self.last_config['update_interval'] != interval: pass else: return client.ifacewatch.save_config({ "interface": iface, "update_interval": int(interval), "active": active }) def on_show_prefs(self): """Called when showing preferences window""" client.ifacewatch.get_config().addCallback(self.cb_get_config) client.ifacewatch.get_ip().addCallback(self.update_ip) client.ifacewatch.get_interfaces().addCallback(self.on_get_interfaces) def on_get_interfaces(self, ifaces): interface_combobox = self.get_object("interface_combobox") current_iface = self.last_config['interface'] ifaces_in_model = [] model = interface_combobox.get_model() for i in range(len(model)): it = model.get_iter(i) value = model.get_value(it, 0) ifaces_in_model.append(value) # Add interfaces not already in the list for i, iface in enumerate(ifaces): if iface in ifaces_in_model: continue interface_combobox.append_text(iface) # Get the index of the active text active_index = -1 for i in range(len(model)): it = model.get_iter(i) value = model.get_value(it, 0) if value == current_iface: active_index = i if active_index != -1: interface_combobox.set_active(active_index) def cb_on_log_message_event(self, message): """Callback function called on GtkUILogMessageEvent events""" self.gtkui_log.gtkui_log_message(message) def cb_get_config(self, config): """Callback function called after saving data to core""" if config is None: self.log.error( "An error has occured. Cannot load data from config") else: self.last_config = config self.get_object("spinbutton_update_interval").set_value( int(config['update_interval'])) self.get_object("checkbutton_active").set_active(config['active']) self.set_iface_value(config['interface']) def get_iface_value(self): interface_combobox = self.get_object("interface_combobox") text = interface_combobox.get_active_text() return text def set_iface_value(self, interface): interface_combobox = self.get_object("interface_combobox") model = interface_combobox.get_model() for i in range(len(model)): it = model.get_iter(i) v = model.get_value(it, 0) if v == interface: interface_combobox.set_active(i) return interface_combobox.append_text(interface) interface_combobox.set_active(0) def cb_get_ip(self, ip): self.update_ip(ip) def update_ip(self, ip): label = self.get_object("label_IP_value") # May happen if the plugin is not actually enabled if label is None: return label.set_text(ip) main_prefs = component.get("Preferences") # Support both Deluge v1.3 and v2 if hasattr(main_prefs, "glade"): main_prefs.glade.get_widget("entry_interface").set_text(ip) else: main_prefs.builder.get_object("entry_interface").set_text(ip)
class GtkUI(GtkPluginBase): def enable(self): self.last_config = None self.create_ui() self.on_show_prefs() # Necessary for the first time when the plugin is installed client.register_event_handler("IfaceWatchLogMessageEvent", self.cb_on_log_message_event) client.register_event_handler("IfaceWatchIPChangedEvent", self.cb_get_ip) def disable(self): self.last_config = None component.get("Preferences").remove_page("IfaceWatch") component.get("PluginManager").deregister_hook("on_apply_prefs", self.on_apply_prefs) component.get("PluginManager").deregister_hook("on_show_prefs", self.on_show_prefs) def create_ui(self): self.glade = gtk.glade.XML(get_resource("ifacewatch.glade")) self.ifacewatch_window = self.glade.get_widget('ifacewatch_window') box = self.glade.get_widget("ifacewatch_prefs_box") self.glade.signal_autoconnect({ "on_checkbutton_active_toggled": self.on_checkbutton_active_toggled, }) component.get("Preferences").add_page("IfaceWatch", box) component.get("PluginManager").register_hook("on_apply_prefs", self.on_apply_prefs) component.get("PluginManager").register_hook("on_show_prefs", self.on_show_prefs) self.gtkui_log = GTKUILogger(self.glade.get_widget("textview_log")) self.log = Logger(gtkui_logger=self.gtkui_log) ############################### # Update config and lists data ############################### def on_checkbutton_active_toggled(self, widget): active = self.glade.get_widget("checkbutton_active").get_active() client.ifacewatch.save_config({"active": active}) def on_apply_prefs(self): """Called when the 'Apply' button is pressed""" iface = self.glade.get_widget("entry_interface").get_text() interval = self.glade.get_widget("spinbutton_update_interval").get_value() active = self.glade.get_widget("checkbutton_active").get_active() if self.last_config is not None: if self.last_config['interface'] != iface: self.log.info("New interface specified: '%s'" % iface) elif self.last_config['update_interval'] != interval: pass else: return client.ifacewatch.save_config({"interface": iface, "update_interval": int(interval), "active": active}) def on_show_prefs(self): """Called when showing preferences window""" client.ifacewatch.get_config().addCallback(self.cb_get_config) client.ifacewatch.get_ip().addCallback(self.update_ip) def cb_on_log_message_event(self, message): """Callback function called on GtkUILogMessageEvent events""" self.gtkui_log.gtkui_log_message(message) def cb_get_config(self, config): """Callback function called after saving data to core""" if config is None: self.log.error("An error has occured. Cannot load data from config") else: self.last_config = config self.glade.get_widget("entry_interface").set_text(config['interface']) self.glade.get_widget("spinbutton_update_interval").set_value(int(config['update_interval'])) self.glade.get_widget("checkbutton_active").set_active(config['active']) def cb_get_ip(self, ip): self.update_ip(ip) def update_ip(self, ip): label = self.glade.get_widget("label_IP_value") # May happen if the plugin is not actually enabled if label is None: return label.set_text(ip) main_prefs = component.get("Preferences") # Support both Deluge v1.3 and v2 if hasattr(main_prefs, "glade"): main_prefs.glade.get_widget("entry_interface").set_text(ip) else: main_prefs.builder.get_object("entry_interface").set_text(ip)