Add PluginDisabledEvent
Add...
Content-type: text/plain

Author: andar

Revision: 5706

Log:
        Add PluginEnabledEvent
Add PluginDisabledEvent
Add event handlers to enable/disable plugins on events

Diff:
Modified: trunk/deluge/core/pluginmanager.py
===================================================================
--- trunk/deluge/core/pluginmanager.py  2009-08-26 08:53:58 UTC (rev 5705)
+++ trunk/deluge/core/pluginmanager.py  2009-08-26 16:59:29 UTC (rev 5706)
@@ -39,6 +39,7 @@
 from twisted.internet import reactor
 from twisted.internet.task import LoopingCall
 
+from deluge.event import PluginEnabledEvent, PluginDisabledEvent
 import deluge.pluginmanagerbase
 import deluge.component as component
 from deluge.log import LOG as log
@@ -76,6 +77,18 @@
                 except Exception, e:
                     log.exception(e)
 
+    def enable_plugin(self, name):
+        if name not in self.plugins:
+            super(PluginManager, self).enable_plugin(name)
+            if name in self.plugins:
+                component.get("EventManager").emit(PluginEnabledEvent(name))
+
+    def disable_plugin(self, name):
+        if name in self.plugins:
+            super(PluginManager, self).disable_plugin(name)
+            if name not in self.plugins:
+                component.get("EventManager").emit(PluginDisabledEvent(name))
+
     def get_status(self, torrent_id, fields):
         """Return the value of status fields for the selected torrent_id."""
         status = {}

Modified: trunk/deluge/event.py
===================================================================
--- trunk/deluge/event.py       2009-08-26 08:53:58 UTC (rev 5705)
+++ trunk/deluge/event.py       2009-08-26 16:59:29 UTC (rev 5706)
@@ -190,3 +190,25 @@
         :param value: the new value of the `:param:key`
         """
         self._args = [key, value]
+
+class PluginEnabledEvent(DelugeEvent):
+    """
+    Emitted when a plugin is enabled in the Core.
+    """
+    def __init__(self, name):
+        """
+        :param name: the plugin name
+        :type name: string
+        """
+        self._args = [name]
+
+class PluginDisabledEvent(DelugeEvent):
+    """
+    Emitted when a plugin is disabled in the Core.
+    """
+    def __init__(self, name):
+        """
+        :param name: the plugin name
+        :type name: string
+        """
+        self._args = [name]

Modified: trunk/deluge/ui/console/eventlog.py
===================================================================
--- trunk/deluge/ui/console/eventlog.py 2009-08-26 08:53:58 UTC (rev 5705)
+++ trunk/deluge/ui/console/eventlog.py 2009-08-26 16:59:29 UTC (rev 5706)
@@ -58,6 +58,8 @@
         client.register_event_handler("SessionPausedEvent", 
self.on_session_paused_event)
         client.register_event_handler("SessionResumedEvent", 
self.on_session_resumed_event)
         client.register_event_handler("ConfigValueChangedEvent", 
self.on_config_value_changed_event)
+        client.register_event_handler("PluginEnabledEvent", 
self.on_plugin_enabled_event)
+        client.register_event_handler("PluginDisabledEvent", 
self.on_plugin_disabled_event)
 
     def on_torrent_added_event(self, torrent_id):
         def on_torrent_status(status):
@@ -101,3 +103,9 @@
 
         self.console.write(self.prefix + "ConfigValueChanged: {!input!}%s: 
%s%s" %
             (key, color, value))
+
+    def on_plugin_enabled_event(self, name):
+        self.console.write(self.prefix + "PluginEnabled: {!info!}%s" % name)
+
+    def on_plugin_disabled_event(self, name):
+        self.console.write(self.prefix + "PluginDisabled: {!info!}%s" % name)

Modified: trunk/deluge/ui/gtkui/pluginmanager.py
===================================================================
--- trunk/deluge/ui/gtkui/pluginmanager.py      2009-08-26 08:53:58 UTC (rev 
5705)
+++ trunk/deluge/ui/gtkui/pluginmanager.py      2009-08-26 16:59:29 UTC (rev 
5706)
@@ -53,6 +53,9 @@
             "on_show_prefs": []
         }
 
+        client.register_event_handler("PluginEnabledEvent", 
self._on_plugin_enabled_event)
+        client.register_event_handler("PluginDisabledEvent", 
self._on_plugin_disabled_event)
+
     def register_hook(self, hook, function):
         """Register a hook function with the plugin manager"""
         try:
@@ -84,6 +87,12 @@
         for plugin in enabled_plugins:
             self.enable_plugin(plugin)
 
+    def _on_plugin_enabled_event(self, name):
+        self.enable_plugin(name)
+
+    def _on_plugin_disabled_event(self, name):
+        self.disable_plugin(name)
+
     ## Hook functions
     def run_on_show_prefs(self):
         """This hook is run before the user is shown the preferences dialog.



--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"deluge-commit" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/deluge-commit?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to