Fixed "PluginEnabledEvent" and "PluginDisabledEvent" the argument cannot be called name since that should contain the event name.

Ported plugins on deluge's git to this new event dispatching style.
This commit is contained in:
Pedro Algarvio 2010-12-11 05:42:45 +00:00
commit 078ed6ba71
15 changed files with 120 additions and 115 deletions

View file

@ -273,24 +273,24 @@ class PluginEnabledEvent(DelugeEvent):
"""
Emitted when a plugin is enabled in the Core.
"""
__slots__ = ('name',)
__slots__ = ('plugin_name',)
def __init__(self, name):
def __init__(self, plugin_name):
"""
:param name: the plugin name
:type name: string
:param plugin_name: the plugin name
:type plugin_name: string
"""
self.name = name
self.plugin_name = plugin_name
class PluginDisabledEvent(DelugeEvent):
"""
Emitted when a plugin is disabled in the Core.
"""
__slots__ = ('name',)
__slots__ = ('plugin_name',)
def __init__(self, name):
def __init__(self, plugin_name):
"""
:param name: the plugin name
:type name: string
:param plugin_name: the plugin name
:type plugin_name: string
"""
self.name = name
self.plugin_name = plugin_name

View file

@ -79,8 +79,6 @@ MAX_NUM_ATTEMPTS = 10
class AutoaddOptionsChangedEvent(DelugeEvent):
"""Emitted when the options for the plugin are changed."""
def __init__(self):
pass
def CheckInput(cond, message):
if not cond:

View file

@ -332,7 +332,7 @@ class GtkUI(GtkPluginBase):
def on_show_prefs(self):
client.autoadd.get_config().addCallback(self.cb_get_config)
def on_options_changed_event(self):
def on_options_changed_event(self, event):
client.autoadd.get_config().addCallback(self.cb_get_config)
def cb_get_config(self, config):

View file

@ -62,15 +62,19 @@ class ExecuteCommandAddedEvent(DelugeEvent):
"""
Emitted when a new command is added.
"""
__slots__ = ('command_id', 'event', 'command')
def __init__(self, command_id, event, command):
self._args = [command_id, event, command]
self.command_id = command_id
self.event = event
self.command = command
class ExecuteCommandRemovedEvent(DelugeEvent):
"""
Emitted when a command is removed.
"""
__slots__ = ('command_id',)
def __init__(self, command_id):
self._args = [command_id]
self.command_id = command_id
class Core(CorePluginBase):
def enable(self):
@ -80,17 +84,17 @@ class Core(CorePluginBase):
# Go through the commands list and register event handlers
for command in self.config["commands"]:
event = command[EXECUTE_EVENT]
if event in self.registered_events:
event_name = command[EXECUTE_EVENT]
if event_name in self.registered_events:
continue
def create_event_handler(event):
def event_handler(torrent_id):
self.execute_commands(torrent_id, event)
def create_event_handler(event_name):
def event_handler(event):
self.execute_commands(event.torrent_id, event_name)
return event_handler
event_handler = create_event_handler(event)
event_manager.register_event_handler(EVENT_MAP[event], event_handler)
self.registered_events[event] = event_handler
event_handler = create_event_handler(event_name)
event_manager.register_event_handler(EVENT_MAP[event_name], event_handler)
self.registered_events[event_name] = event_handler
log.debug("Execute core plugin enabled!")

View file

@ -159,13 +159,13 @@ class ExecutePreferences(object):
command = widget.get_text()
client.execute.save_command(command_id, event, command)
def on_command_added_event(self, command_id, event, command):
log.debug("Adding command %s: %s", event, command)
self.add_command(command_id, event, command)
def on_command_added_event(self, event):
log.debug("Adding command %s: %s", event.event, event.command)
self.add_command(event.command_id, event.event, event.command)
def on_command_removed_event(self, command_id):
log.debug("Removing command %s", command_id)
self.remove_command(command_id)
def on_command_removed_event(self, event):
log.debug("Removing command %s", event.command_id)
self.remove_command(event.command_id)
class GtkUI(GtkPluginBase):

View file

@ -75,14 +75,14 @@ class Core(CorePluginBase):
def update(self):
pass
def _on_torrent_finished(self, torrent_id):
def _on_torrent_finished(self, event):
"""
This is called when a torrent finishes. We need to check to see if there
are any files to extract.
"""
# Get the save path
save_path = component.get("TorrentManager")[torrent_id].get_status(["save_path"])["save_path"]
files = component.get("TorrentManager")[torrent_id].get_files()
save_path = component.get("TorrentManager")[event.torrent_id].get_status(["save_path"])["save_path"]
files = component.get("TorrentManager")[event.torrent_id].get_files()
for f in files:
ext = os.path.splitext(f["path"])
if ext[1] in (".gz", ".bz2", ".lzma"):
@ -102,7 +102,7 @@ class Core(CorePluginBase):
# Get the destination path
dest = self.config["extract_path"]
if self.config["use_name_folder"]:
name = component.get("TorrentManager")[torrent_id].get_status(["name"])["name"]
name = component.get("TorrentManager")[event.torrent_id].get_status(["name"])["name"]
dest = os.path.join(dest, name)
# Create the destination folder if it doesn't exist
@ -124,8 +124,8 @@ class Core(CorePluginBase):
# Run the command and add some callbacks
d = getProcessValue(cmd[0], cmd[1].split() + [str(fp)], {}, str(dest))
d.addCallback(on_extract_success, torrent_id)
d.addErrback(on_extract_failed, torrent_id)
d.addCallback(on_extract_success, event.torrent_id)
d.addErrback(on_extract_failed, event.torrent_id)
@export
def set_config(self, config):

View file

@ -53,12 +53,14 @@ class LowDiskSpaceEvent(DelugeEvent):
"""Triggered when the available space for a specific path is getting
too low.
"""
__slots__ = ('percents_dict',)
def __init__(self, percents_dict):
"""
:param percents: dictionary of path keys with their respecive
occupation percentages.
"""
self._args = [percents_dict]
self.percents_dict = percents_dict
DEFAULT_PREFS = {
"enabled": False,
@ -170,25 +172,25 @@ class Core(CorePluginBase):
free_percent = free_blocks * 100 / total_blocks
return free_percent
def __custom_email_notification(self, ocupied_percents):
def __custom_email_notification(self, event):
subject = _("Low Disk Space Warning")
message = _("You're running low on disk space:\n")
for path, ocupied_percent in ocupied_percents.iteritems():
for path, ocupied_percent in event.percents_dict.iteritems():
message += _(' %s%% ocupation in %s\n') % (ocupied_percent, path)
# "\"%s\"%% space occupation on %s") % (ocupied_percent, path)
return subject, message
def __on_plugin_enabled(self, plugin_name):
if plugin_name == 'Notifications':
def __on_plugin_enabled(self, event):
if event.plugin_name == 'Notifications':
component.get("CorePlugin.Notifications"). \
register_custom_email_notification(
"LowDiskSpaceEvent", self.__custom_email_notification
)
def __on_plugin_disabled(self, plugin_name):
if plugin_name == 'Notifications':
def __on_plugin_disabled(self, event):
if event.plugin_name == 'Notifications':
component.get("CorePlugin.Notifications"). \
deregister_custom_email_notification("LowDiskSpaceEvent")

View file

@ -132,22 +132,22 @@ class GtkUI(GtkPluginBase):
self.glade.get_widget('enabled').set_active(config['enabled'])
self.glade.get_widget('percent').set_value(config['percent'])
def __custom_popup_notification(self, ocupied_percents):
def __custom_popup_notification(self, event):
title = _("Low Free Space")
message = ''
for path, percent in ocupied_percents.iteritems():
for path, percent in event.percents_dict.iteritems():
message += '%s%% %s\n' % (percent, path)
message += '\n'
return title, message
def __custom_blink_notification(self, ocupied_percents):
def __custom_blink_notification(self, event):
return True # Yes, do blink
def __custom_sound_notification(self, ocupied_percents):
def __custom_sound_notification(self, event):
return '' # Use default sound
def __on_plugin_enabled(self, plugin_name):
if plugin_name == 'Notifications':
def __on_plugin_enabled(self, event):
if event.plugin_name == 'Notifications':
notifications = component.get("GtkPlugin.Notifications")
notifications.register_custom_popup_notification(
"LowDiskSpaceEvent", self.__custom_popup_notification
@ -159,7 +159,7 @@ class GtkUI(GtkPluginBase):
"LowDiskSpaceEvent", self.__custom_sound_notification
)
def __on_plugin_disabled(self, plugin_name):
def __on_plugin_disabled(self, event):
pass
# if plugin_name == 'Notifications':
# notifications = component.get("GtkPlugin.Notifications")

View file

@ -131,20 +131,20 @@ class Core(CorePluginBase):
return dict( [(label, 0) for label in self.labels.keys()])
## Plugin hooks ##
def post_torrent_add(self, torrent_id, from_state):
def post_torrent_add(self, event):
log.debug("post_torrent_add")
torrent = self.torrents[torrent_id]
torrent = self.torrents[event.torrent_id]
for label_id, options in self.labels.iteritems():
if options["auto_add"]:
if self._has_auto_match(torrent, options):
self.set_torrent(torrent_id, label_id)
self.set_torrent(event.torrent_id, label_id)
return
def post_torrent_remove(self, torrent_id):
def post_torrent_remove(self, event):
log.debug("post_torrent_remove")
if torrent_id in self.torrent_labels:
del self.torrent_labels[torrent_id]
if event.torrent_id in self.torrent_labels:
del self.torrent_labels[event.torrent_id]
## Utils ##
def clean_config(self):

View file

@ -186,9 +186,9 @@ Subject: %(subject)s
return _("Notification email sent.")
def _on_torrent_finished_event(self, torrent_id):
def _on_torrent_finished_event(self, event):
log.debug("Handler for TorrentFinishedEvent called for CORE")
torrent = component.get("TorrentManager")[torrent_id]
torrent = component.get("TorrentManager")[event.torrent_id]
torrent_status = torrent.get_status({})
# Email
subject = _("Finished Torrent \"%(name)s\"") % torrent_status

View file

@ -74,11 +74,12 @@ class SchedulerEvent(DelugeEvent):
"""
Emitted when a schedule state changes.
"""
__slots__ = ('colour',)
def __init__(self, colour):
"""
:param colour: str, the current scheduler state
"""
self._args = [colour]
self.colour = colour
class Core(CorePluginBase):
def enable(self):
@ -117,8 +118,8 @@ class Core(CorePluginBase):
pass
def on_config_value_changed(self, key, value):
if key in CONTROLLED_SETTINGS:
def on_config_value_changed(self, event):
if event.key in CONTROLLED_SETTINGS:
self.do_schedule(False)
def __apply_set_functions(self):

View file

@ -201,9 +201,9 @@ class GtkUI(GtkPluginBase):
client.scheduler.get_config().addCallback(on_get_config)
def on_scheduler_event(self, state):
def on_scheduler_event(self, event):
def on_state_deferred(s):
self.status_item.set_image_from_file(get_resource(state.lower() + ".png"))
self.status_item.set_image_from_file(get_resource(event.colour.lower() + ".png"))
self.state_deferred.addCallback(on_state_deferred)

View file

@ -107,7 +107,7 @@ class EventLog(component.Component):
(event.key, color, event.value))
def on_plugin_enabled_event(self, event):
self.console.write(self.prefix + "PluginEnabled: {!info!}%s" % event.name)
self.console.write(self.prefix + "PluginEnabled: {!info!}%s" % event.plugin_name)
def on_plugin_disabled_event(self, event):
self.console.write(self.prefix + "PluginDisabled: {!info!}%s" % event.name)
self.console.write(self.prefix + "PluginDisabled: {!info!}%s" % event.plugin_name)

View file

@ -90,10 +90,10 @@ class PluginManager(deluge.pluginmanagerbase.PluginManagerBase,
self.enable_plugin(plugin)
def _on_plugin_enabled_event(self, event):
self.enable_plugin(event.name)
self.enable_plugin(event.plugin_name)
def _on_plugin_disabled_event(self, event):
self.disable_plugin(event.name)
self.disable_plugin(event.plugin_name)
## Hook functions
def run_on_show_prefs(self):

View file

@ -73,10 +73,10 @@ class PluginManager(PluginManagerBase, component.Component):
self.enable_plugin(plugin)
def _on_plugin_enabled_event(self, event):
self.enable_plugin(event.name)
self.enable_plugin(event.plugin_name)
def _on_plugin_disabled_event(self, event):
self.disable_plugin(event.name)
self.disable_plugin(event.plugin_name)
def disable_plugin(self, name):
# Get the plugin instance