From 4b0a216bcf413989b5a7e6c1ad0275247fabca9c Mon Sep 17 00:00:00 2001 From: Stefan Pluecken Date: Thu, 23 Feb 2006 00:09:17 +0000 Subject: [PATCH] recursively search for plugins --- lib/python/Components/PluginComponent.py | 16 +++++++++------- lib/python/Plugins/DemoPlugins/Makefile.am | 6 ++++++ lib/python/Plugins/DemoPlugins/__init__.py | 0 lib/python/Plugins/Extensions/Makefile.am | 6 ++++++ lib/python/Plugins/Extensions/__init__.py | 0 lib/python/Plugins/SystemPlugins/Makefile.am | 6 ++++++ lib/python/Plugins/SystemPlugins/__init__.py | 0 mytest.py | 4 ++-- 8 files changed, 29 insertions(+), 9 deletions(-) create mode 100644 lib/python/Plugins/DemoPlugins/__init__.py create mode 100644 lib/python/Plugins/Extensions/__init__.py create mode 100644 lib/python/Plugins/SystemPlugins/__init__.py diff --git a/lib/python/Components/PluginComponent.py b/lib/python/Components/PluginComponent.py index eeb2c97..ae06d77 100644 --- a/lib/python/Components/PluginComponent.py +++ b/lib/python/Components/PluginComponent.py @@ -4,6 +4,7 @@ from Tools.Directories import * from Plugins.Plugin import PluginDescriptor def my_import(name): + print name mod = __import__(name) components = name.split('.') for comp in components[1:]: @@ -33,22 +34,21 @@ class PluginComponent: if x == PluginDescriptor.WHERE_AUTOSTART: plugin(reason=1) - def readPluginList(self): + def readPluginList(self, directory, modules = [], depth = 1): """enumerates plugins""" - - directories = os.listdir(resolveFilename(SCOPE_PLUGINS)) + + directories = os.listdir(directory) for x in directories: - path = resolveFilename(SCOPE_PLUGINS, x) + "/" - if os.path.exists(path): + path = directory + x + "/" + if os.path.isdir(path): if fileExists(path + "plugin.py"): - plugin = my_import('.'.join(("Plugins", x, "plugin"))) + plugin = my_import('.'.join(["Plugins"] + modules + [x, "plugin"])) if not plugin.__dict__.has_key("Plugins"): print "Plugin %s doesn't have 'Plugin'-call." % (x) continue - print "plugin", plugin plugins = plugin.Plugins() # allow single entry not to be a list @@ -58,6 +58,8 @@ class PluginComponent: for p in plugins: p.updateIcon(path) self.addPlugin(p); + else: + self.readPluginList(path, modules + [x], depth - 1) def getPlugins(self, where): """Get list of plugins in a specific category""" diff --git a/lib/python/Plugins/DemoPlugins/Makefile.am b/lib/python/Plugins/DemoPlugins/Makefile.am index 86e98ec..2d050dc 100644 --- a/lib/python/Plugins/DemoPlugins/Makefile.am +++ b/lib/python/Plugins/DemoPlugins/Makefile.am @@ -1 +1,7 @@ SUBDIRS = TestPlugin + +installdir = $(LIBDIR)/enigma2/python/Plugins/DemoPlugins + +install_PYTHON = \ + __init__.py + diff --git a/lib/python/Plugins/DemoPlugins/__init__.py b/lib/python/Plugins/DemoPlugins/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/lib/python/Plugins/Extensions/Makefile.am b/lib/python/Plugins/Extensions/Makefile.am index a8998c1..656ca87 100644 --- a/lib/python/Plugins/Extensions/Makefile.am +++ b/lib/python/Plugins/Extensions/Makefile.am @@ -1 +1,7 @@ SUBDIRS = TuxboxPlugins WebInterface FileManager + +installdir = $(LIBDIR)/enigma2/python/Plugins/Extensions + +install_PYTHON = \ + __init__.py + diff --git a/lib/python/Plugins/Extensions/__init__.py b/lib/python/Plugins/Extensions/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/lib/python/Plugins/SystemPlugins/Makefile.am b/lib/python/Plugins/SystemPlugins/Makefile.am index 2b71624..aa71df9 100644 --- a/lib/python/Plugins/SystemPlugins/Makefile.am +++ b/lib/python/Plugins/SystemPlugins/Makefile.am @@ -1 +1,7 @@ SUBDIRS = SoftwareUpdate FrontprocessorUpgrade + +installdir = $(LIBDIR)/enigma2/python/Plugins/SystemPlugins + +install_PYTHON = \ + __init__.py + diff --git a/lib/python/Plugins/SystemPlugins/__init__.py b/lib/python/Plugins/SystemPlugins/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/mytest.py b/mytest.py index 522b9b3..4b6062a 100644 --- a/mytest.py +++ b/mytest.py @@ -17,7 +17,7 @@ from Navigation import Navigation from skin import readSkin, applyAllAttributes from Components.config import configfile -from Tools.Directories import InitFallbackFiles +from Tools.Directories import InitFallbackFiles, resolveFilename, SCOPE_PLUGINS InitFallbackFiles() eDVBDB.getInstance().reloadBouquets() @@ -36,7 +36,7 @@ except ImportError: # initialize autorun plugins and plugin menu entries from Components.PluginComponent import plugins -plugins.readPluginList() +plugins.readPluginList(resolveFilename(SCOPE_PLUGINS)) from Screens.Wizard import wizardManager from Screens.StartWizard import * -- 2.7.4