From fdfc10e01c8a444b38471e5cd16f0520e2ec31cd Mon Sep 17 00:00:00 2001 From: Zach Tibbitts Date: Thu, 15 Feb 2007 21:54:55 +0000 Subject: [PATCH] persistent plugins --- plugins/ExamplePlugin/plugin.py | 8 +++----- src/delugegtk.py | 32 +++++++++++++++++++++++++------- src/delugeplugins.py | 1 - 3 files changed, 28 insertions(+), 13 deletions(-) diff --git a/plugins/ExamplePlugin/plugin.py b/plugins/ExamplePlugin/plugin.py index 6a872b24d..661c16739 100644 --- a/plugins/ExamplePlugin/plugin.py +++ b/plugins/ExamplePlugin/plugin.py @@ -36,20 +36,18 @@ class plugin_Example: # The plugin's class self.button.connect("clicked", self.clicked) # Connect the signal handler for the button self.toolbar.add(self.button) # Add button to toolbar self.button.show_all() # Show the button - - - print "Example Plugin loaded" ## unload is called when the plugin is removed or Deluge is shut down def unload(self): self.toolbar.remove(self.button) # Remove the button from the toolbar self.config.save_to_file(self.config_file) - print "Example Plugin unloaded" ## update will be called every UPDATE_INTERVAL (usually about 1 second) def update(self): - print "Example Plugin has been updated" + # As this plugin doesn't need to do anything every interval, this + # function will remain empty + pass ## This will be only called if your plugin is configurable def configure(self): diff --git a/src/delugegtk.py b/src/delugegtk.py index 8564e5be2..4563d474c 100755 --- a/src/delugegtk.py +++ b/src/delugegtk.py @@ -61,11 +61,17 @@ class DelugeGTK(dbus.service.Object): f = open(self.conf_file, mode='w') f.flush() f.close() + #Start the Deluge Manager: + self.manager = deluge.Manager("DE", "0490", "Deluge 0.4.90", dcommon.CONFIG_DIR) + + self.plugins = delugeplugins.PluginManager(self.manager, self) + self.plugins.add_plugin_dir(dcommon.PLUGIN_DIR) + if os.path.isdir(dcommon.CONFIG_DIR + '/plugins'): + self.plugins.add_plugin_dir(dcommon.CONFIG_DIR + '/plugins') + self.plugins.scan_for_plugins() self.pref = dcommon.DelugePreferences() self.load_default_settings() self.pref.load_from_file(self.conf_file) - #Start the Deluge Manager: - self.manager = deluge.Manager("DE", "0490", "Deluge 0.4.90", dcommon.CONFIG_DIR) #Set up the interface: self.wtree = gtk.glade.XML(dcommon.get_glade_file("delugegtk.glade")) self.window = self.wtree.get_widget("main_window") @@ -76,11 +82,7 @@ class DelugeGTK(dbus.service.Object): self.window.set_title('%s %s'%(dcommon.PROGRAM_NAME, dcommon.PROGRAM_VERSION)) self.window.set_icon_from_file(dcommon.get_pixmap("deluge32.png")) - self.plugins = delugeplugins.PluginManager(self.manager, self) - self.plugins.add_plugin_dir(dcommon.PLUGIN_DIR) - if os.path.isdir(dcommon.CONFIG_DIR + '/plugins'): - self.plugins.add_plugin_dir(dcommon.CONFIG_DIR + '/plugins') - self.plugins.scan_for_plugins() + ## Construct the Interface self.build_tray_icon() @@ -94,6 +96,14 @@ class DelugeGTK(dbus.service.Object): self.connect_signals() self.apply_prefs() + + enable_plugins = self.pref.get('enabled_plugins').split(';') + print enable_plugins + for plugin in enable_plugins: + try: + self.plugins.enable_plugin(plugin) + except KeyError: + pass def connect_signals(self): self.wtree.signal_autoconnect({ @@ -315,6 +325,11 @@ class DelugeGTK(dbus.service.Object): self.pref.set("max_number_uploads", 0) self.pref.set("max_download_rate", 0) self.pref.set("max_number_downloads", 0) + default_plugins = [] + for name in self.plugins.get_available_plugins(): + if self.plugins.get_plugin(name)['default']: + default_plugins.append(name) + self.pref.set("enabled_plugins", ';'.join(default_plugins)) @@ -696,6 +711,9 @@ class DelugeGTK(dbus.service.Object): self.shutdown() def shutdown(self): + enabled_plugins = ';'.join(self.plugins.get_enabled_plugins()) + self.pref.set('enabled_plugins', enabled_plugins) + self.pref.save_to_file(self.conf_file) self.plugins.shutdown_all_plugins() self.manager.quit() gtk.main_quit() diff --git a/src/delugeplugins.py b/src/delugeplugins.py index 3d02e5f97..353ff85be 100644 --- a/src/delugeplugins.py +++ b/src/delugeplugins.py @@ -60,7 +60,6 @@ class PluginManager: self.enabled_plugins.pop(name) def configure_plugin(self, name): - print "configuring", name self.enabled_plugins[name].configure() def update_active_plugins(self):