re-add autostart plugins
authorFelix Domke <tmbinc@elitedvb.net>
Sun, 19 Feb 2006 20:47:23 +0000 (20:47 +0000)
committerFelix Domke <tmbinc@elitedvb.net>
Sun, 19 Feb 2006 20:47:23 +0000 (20:47 +0000)
doc/PLUGINS
lib/python/Components/PluginComponent.py
mytest.py

index fab701c..9655877 100644 (file)
@@ -68,3 +68,18 @@ def main(session):
 
 with MyScreen being a GUI screen.
 
 
 with MyScreen being a GUI screen.
 
+
+autostarting plugins
+====================
+
+you can configure your plugin to automatically start on enigma startup, and
+end on shutdown.
+
+you just have to use "WHERE_AUTOSTART". your entry point must (fnc) look 
+like:
+
+def autostartEntry(raeson):
+       if reason == 0: # startup
+               print "startup"
+       elif reason == 1:
+               print "shutdown"
index cfdbc4d..bd8a6d0 100644 (file)
@@ -1,6 +1,7 @@
 import os
 
 from Tools.Directories import *
 import os
 
 from Tools.Directories import *
+from Plugins.Plugin import PluginDescriptor
 
 def my_import(name):
        mod = __import__(name)
 
 def my_import(name):
        mod = __import__(name)
@@ -12,12 +13,27 @@ def my_import(name):
 class PluginComponent:
        def __init__(self):
                self.plugins = {}
 class PluginComponent:
        def __init__(self):
                self.plugins = {}
+               self.pluginList = [ ]
                self.setPluginPrefix("Plugins.")
                
        def setPluginPrefix(self, prefix):
                self.prefix = prefix
                self.setPluginPrefix("Plugins.")
                
        def setPluginPrefix(self, prefix):
                self.prefix = prefix
-
-       def readPluginList(self, runAutostartPlugins=False, runAutoendPlugins=False):
+       
+       def addPlugin(self, plugin):
+               self.pluginList.append(plugin)
+               for x in plugin.where:
+                       self.plugins.setdefault(x, []).append(plugin)
+                       if x == PluginDescriptor.WHERE_AUTOSTART:
+                               plugin(reason=0)
+       
+       def removePlugin(self, plugin):
+               self.pluginList.remove(plugin)
+               for x in plugin.where:
+                       self.plugins[x].remove(plugin)
+                       if x == PluginDescriptor.WHERE_AUTOSTART:
+                               plugin(reason=1)
+       
+       def readPluginList(self):
                """enumerates plugins"""
 
                directories = os.listdir(resolveFilename(SCOPE_PLUGINS))
                """enumerates plugins"""
 
                directories = os.listdir(resolveFilename(SCOPE_PLUGINS))
@@ -40,10 +56,7 @@ class PluginComponent:
                                                plugins = [ plugins ]
                                        
                                        for p in plugins:
                                                plugins = [ plugins ]
                                        
                                        for p in plugins:
-                                               print "imported plugin %s" % (p.name)
-                                               
-                                               for x in p.where:
-                                                       self.plugins.setdefault(x, []).append(p)
+                                               self.addPlugin(p);
 
        def getPlugins(self, where):
                """Get list of plugins in a specific category"""
 
        def getPlugins(self, where):
                """Get list of plugins in a specific category"""
@@ -56,4 +69,8 @@ class PluginComponent:
                                res.append(p)
                return res
 
                                res.append(p)
                return res
 
+       def shutdown(self):
+               for p in self.pluginList[:]:
+                       self.removePlugin(p)
+
 plugins = PluginComponent()
 plugins = PluginComponent()
index dda2c87..91cb9f9 100644 (file)
--- a/mytest.py
+++ b/mytest.py
@@ -35,7 +35,7 @@ except:
 
 # initialize autorun plugins and plugin menu entries
 from Components.PluginComponent import plugins
 
 # initialize autorun plugins and plugin menu entries
 from Components.PluginComponent import plugins
-plugins.readPluginList(runAutostartPlugins=True)
+plugins.readPluginList()
 
 from Screens.Wizard import wizardManager
 from Screens.StartWizard import *
 
 from Screens.Wizard import wizardManager
 from Screens.StartWizard import *
@@ -331,7 +331,7 @@ import Components.NimManager
 # first, setup a screen
 try:
        runScreenTest()
 # first, setup a screen
 try:
        runScreenTest()
-#      plugins.getPluginList(runAutoendPlugins=True)
+       plugins.shutdown()
 except:
        print 'EXCEPTION IN PYTHON STARTUP CODE:'
        print '-'*60
 except:
        print 'EXCEPTION IN PYTHON STARTUP CODE:'
        print '-'*60