persistent plugins
This commit is contained in:
parent
f2d2ac6c8e
commit
fdfc10e01c
|
@ -38,18 +38,16 @@ class plugin_Example: # The plugin's class
|
||||||
self.button.show_all() # Show the button
|
self.button.show_all() # Show the button
|
||||||
|
|
||||||
|
|
||||||
print "Example Plugin loaded"
|
|
||||||
|
|
||||||
|
|
||||||
## unload is called when the plugin is removed or Deluge is shut down
|
## unload is called when the plugin is removed or Deluge is shut down
|
||||||
def unload(self):
|
def unload(self):
|
||||||
self.toolbar.remove(self.button) # Remove the button from the toolbar
|
self.toolbar.remove(self.button) # Remove the button from the toolbar
|
||||||
self.config.save_to_file(self.config_file)
|
self.config.save_to_file(self.config_file)
|
||||||
print "Example Plugin unloaded"
|
|
||||||
|
|
||||||
## update will be called every UPDATE_INTERVAL (usually about 1 second)
|
## update will be called every UPDATE_INTERVAL (usually about 1 second)
|
||||||
def update(self):
|
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
|
## This will be only called if your plugin is configurable
|
||||||
def configure(self):
|
def configure(self):
|
||||||
|
|
|
@ -61,11 +61,17 @@ class DelugeGTK(dbus.service.Object):
|
||||||
f = open(self.conf_file, mode='w')
|
f = open(self.conf_file, mode='w')
|
||||||
f.flush()
|
f.flush()
|
||||||
f.close()
|
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.pref = dcommon.DelugePreferences()
|
||||||
self.load_default_settings()
|
self.load_default_settings()
|
||||||
self.pref.load_from_file(self.conf_file)
|
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:
|
#Set up the interface:
|
||||||
self.wtree = gtk.glade.XML(dcommon.get_glade_file("delugegtk.glade"))
|
self.wtree = gtk.glade.XML(dcommon.get_glade_file("delugegtk.glade"))
|
||||||
self.window = self.wtree.get_widget("main_window")
|
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_title('%s %s'%(dcommon.PROGRAM_NAME, dcommon.PROGRAM_VERSION))
|
||||||
self.window.set_icon_from_file(dcommon.get_pixmap("deluge32.png"))
|
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
|
## Construct the Interface
|
||||||
self.build_tray_icon()
|
self.build_tray_icon()
|
||||||
|
@ -95,6 +97,14 @@ class DelugeGTK(dbus.service.Object):
|
||||||
|
|
||||||
self.apply_prefs()
|
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):
|
def connect_signals(self):
|
||||||
self.wtree.signal_autoconnect({
|
self.wtree.signal_autoconnect({
|
||||||
## File Menu
|
## File Menu
|
||||||
|
@ -315,6 +325,11 @@ class DelugeGTK(dbus.service.Object):
|
||||||
self.pref.set("max_number_uploads", 0)
|
self.pref.set("max_number_uploads", 0)
|
||||||
self.pref.set("max_download_rate", 0)
|
self.pref.set("max_download_rate", 0)
|
||||||
self.pref.set("max_number_downloads", 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()
|
self.shutdown()
|
||||||
|
|
||||||
def shutdown(self):
|
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.plugins.shutdown_all_plugins()
|
||||||
self.manager.quit()
|
self.manager.quit()
|
||||||
gtk.main_quit()
|
gtk.main_quit()
|
||||||
|
|
|
@ -60,7 +60,6 @@ class PluginManager:
|
||||||
self.enabled_plugins.pop(name)
|
self.enabled_plugins.pop(name)
|
||||||
|
|
||||||
def configure_plugin(self, name):
|
def configure_plugin(self, name):
|
||||||
print "configuring", name
|
|
||||||
self.enabled_plugins[name].configure()
|
self.enabled_plugins[name].configure()
|
||||||
|
|
||||||
def update_active_plugins(self):
|
def update_active_plugins(self):
|
||||||
|
|
Loading…
Reference in New Issue