diff options
author | Florent Le Coz <louiz@louiz.org> | 2011-09-23 17:43:01 +0200 |
---|---|---|
committer | Florent Le Coz <louiz@louiz.org> | 2011-09-23 17:43:01 +0200 |
commit | e3b933445fe4b18af6ec462fc40da5f482e447a0 (patch) | |
tree | 7f5c4060cd913d53000e22f269efce603e323cdc /src/core.py | |
parent | f34d3172a11190ebfd8030deb5771a55fdb57476 (diff) | |
download | poezio-e3b933445fe4b18af6ec462fc40da5f482e447a0.tar.gz poezio-e3b933445fe4b18af6ec462fc40da5f482e447a0.tar.bz2 poezio-e3b933445fe4b18af6ec462fc40da5f482e447a0.tar.xz poezio-e3b933445fe4b18af6ec462fc40da5f482e447a0.zip |
[teisenbe] first attempt at a plugin system.
Diffstat (limited to 'src/core.py')
-rw-r--r-- | src/core.py | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/src/core.py b/src/core.py index 3cdc7592..d644c19b 100644 --- a/src/core.py +++ b/src/core.py @@ -36,6 +36,8 @@ import windows import connection import timed_events +from plugin_manager import PluginManager + from data_forms import DataFormsTab from config import config, options from logger import logger @@ -125,6 +127,8 @@ class Core(object): 'server_cycle': (self.command_server_cycle, _('Usage: /server_cycle [domain] [message]\nServer Cycle: disconnect and reconnects in all the rooms in domain.'), None), 'bind': (self.command_bind, _('Usage: /bind <key> <equ>\nBind: bind a key to an other key or to a “command”. For example "/bind ^H KEY_UP" makes Control + h do the same same than the Up key.'), None), 'pubsub': (self.command_pubsub, _('Usage: /pubsub <domain>\nPubsub: Open a pubsub browser on the given domain'), None), + 'load': (self.command_load, _('Usage: /load <script.py>\nLoad: Load the specified python script'), None), + 'unload': (self.command_unload, _('Usage: /unload <script.py>\nUnload: Unload the specified python script'), None), } self.key_func = { @@ -169,6 +173,7 @@ class Core(object): self.xmpp.add_event_handler("chatstate_inactive", self.on_chatstate_inactive) self.timed_events = set() + self.plugin_manager = PluginManager(self) def coucou(self): self.command_pubsub('pubsub.louiz.org') @@ -1121,6 +1126,28 @@ class Core(object): def completion_status(self, the_input): return the_input.auto_completion([status for status in possible_show], ' ') + def command_load(self, arg): + """ + /load <script.py> + """ + args = arg.split() + if len(args) != 1: + self.command_help('load') + return + filename = args[0] + self.plugin_manager.load(filename) + + def command_unload(self, arg): + """ + /unload <script.py> + """ + args = arg.split() + if len(args) != 1: + self.command_help('unload') + return + filename = args[0] + self.plugin_manager.unload(filename) + def command_message(self, arg): """ /message <jid> [message] |