From 603da6ec167a22270606ef4f7366ac26e5b242e4 Mon Sep 17 00:00:00 2001 From: Chris Jones Date: Thu, 17 Dec 2009 23:16:42 +0000 Subject: [PATCH] Since PluginRegistry is a borg we can easily track if we have been loaded before and if so, not load plugins again. --- terminatorlib/plugin.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/terminatorlib/plugin.py b/terminatorlib/plugin.py index 639d3e57..4f6f4a3e 100755 --- a/terminatorlib/plugin.py +++ b/terminatorlib/plugin.py @@ -36,6 +36,7 @@ class PluginRegistry(borg.Borg): """Definition of a class to store plugin instances""" instances = None path = None + done = None def __init__(self): """Class initialiser""" @@ -51,9 +52,15 @@ class PluginRegistry(borg.Borg): self.path = os.path.join(head, 'plugins') dbg('PluginRegistry::prepare_attributes: Plugin path: %s' % self.path) + if not self.done: + self.done = False def load_plugins(self): """Load all plugins present in the plugins/ directory in our module""" + if self.done: + dbg('PluginRegistry::load_plugins: Already loaded') + return + sys.path.insert(0, self.path) files = os.listdir(self.path) for plugin in files: @@ -71,6 +78,8 @@ class PluginRegistry(borg.Borg): err('PluginRegistry::load_plugins: Importing plugin %s \ failed: %s' % (plugin, e)) + self.done = True + def get_plugins_by_capability(self, capability): """Return a list of plugins with a particular capability""" result = []