recursively search for plugins
authorStefan Pluecken <stefan.pluecken@multimedia-labs.de>
Thu, 23 Feb 2006 00:09:17 +0000 (00:09 +0000)
committerStefan Pluecken <stefan.pluecken@multimedia-labs.de>
Thu, 23 Feb 2006 00:09:17 +0000 (00:09 +0000)
lib/python/Components/PluginComponent.py
lib/python/Plugins/DemoPlugins/Makefile.am
lib/python/Plugins/DemoPlugins/__init__.py [new file with mode: 0644]
lib/python/Plugins/Extensions/Makefile.am
lib/python/Plugins/Extensions/__init__.py [new file with mode: 0644]
lib/python/Plugins/SystemPlugins/Makefile.am
lib/python/Plugins/SystemPlugins/__init__.py [new file with mode: 0644]
mytest.py

index eeb2c97..ae06d77 100644 (file)
@@ -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"""
index 86e98ec..2d050dc 100644 (file)
@@ -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 (file)
index 0000000..e69de29
index a8998c1..656ca87 100644 (file)
@@ -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 (file)
index 0000000..e69de29
index 2b71624..aa71df9 100644 (file)
@@ -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 (file)
index 0000000..e69de29
index 522b9b3..4b6062a 100644 (file)
--- 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 *