[kupfer] core: Allow loading plugins at runtime
- From: Ulrik Sverdrup <usverdrup src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [kupfer] core: Allow loading plugins at runtime
- Date: Thu, 4 Feb 2010 09:57:12 +0000 (UTC)
commit 9431a467f1473ca09f0b21e4ecdc8c756224b9c7
Author: Ulrik Sverdrup <ulrik sverdrup gmail com>
Date: Thu Feb 4 00:16:17 2010 +0100
core: Allow loading plugins at runtime
Listen to the settings controller signal for enabled plugin and load
plugins in the DataController.
We initialize plugins when loaded late with SourceController and
recalculate the source catalog and root.
kupfer/core/data.py | 16 ++++++++++++++++
1 files changed, 16 insertions(+), 0 deletions(-)
---
diff --git a/kupfer/core/data.py b/kupfer/core/data.py
index 17dd628..03fd907 100644
--- a/kupfer/core/data.py
+++ b/kupfer/core/data.py
@@ -533,6 +533,7 @@ class DataController (gobject.GObject, pretty.OutputMixin):
S_sources = []
setctl = settings.GetSettingsController()
+ setctl.connect("plugin-enabled-changed", self._plugin_enabled)
for item in plugins.get_plugin_ids():
if not setctl.get_plugin_enabled(item):
@@ -562,6 +563,21 @@ class DataController (gobject.GObject, pretty.OutputMixin):
self.register_content_decorators(plugin.content_decorators)
return set(plugin.sources)
+ def _plugin_enabled(self, setctl, plugin_id, enabled):
+ from kupfer.core import plugins
+ if enabled and not plugins.is_plugin_loaded(plugin_id):
+ sources = self._load_plugin(plugin_id)
+ self._insert_sources(plugin_id, sources)
+
+ def _insert_sources(self, plugin_id, sources):
+ if not sources:
+ return
+ setctl = settings.GetSettingsController()
+ is_toplevel = setctl.get_plugin_is_toplevel(plugin_id)
+ sc = GetSourceController()
+ sc.add(sources, toplevel=is_toplevel, initialize=True)
+ self.source_pane.source_rebase(sc.root)
+
def _finish(self, sched):
self.output_info("Saving data...")
learn.finish()
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]