aboutsummaryrefslogtreecommitdiff
path: root/lib/python/Plugins/Extensions/TuxboxPlugins
diff options
context:
space:
mode:
authorStefan Pluecken <stefan.pluecken@multimedia-labs.de>2008-10-08 14:52:52 +0000
committerStefan Pluecken <stefan.pluecken@multimedia-labs.de>2008-10-08 14:52:52 +0000
commitdb46f952f934ea8532527cbbdf21ef283cacda20 (patch)
treed10dac3a25aa5f1c49d50ed9a15cd53878aec15e /lib/python/Plugins/Extensions/TuxboxPlugins
parent32f2aee04a0b7dbdbe561b232f90ead5edf83a7e (diff)
downloadenigma2-db46f952f934ea8532527cbbdf21ef283cacda20.tar.gz
enigma2-db46f952f934ea8532527cbbdf21ef283cacda20.zip
use external program (i.e. pluginx) to start tuxbox plugins
Diffstat (limited to 'lib/python/Plugins/Extensions/TuxboxPlugins')
-rw-r--r--lib/python/Plugins/Extensions/TuxboxPlugins/plugin.py2
-rw-r--r--lib/python/Plugins/Extensions/TuxboxPlugins/pluginrunner.py37
2 files changed, 39 insertions, 0 deletions
diff --git a/lib/python/Plugins/Extensions/TuxboxPlugins/plugin.py b/lib/python/Plugins/Extensions/TuxboxPlugins/plugin.py
index 5142d16b..05085ead 100644
--- a/lib/python/Plugins/Extensions/TuxboxPlugins/plugin.py
+++ b/lib/python/Plugins/Extensions/TuxboxPlugins/plugin.py
@@ -2,6 +2,7 @@
from Tools.BoundFunction import boundFunction
from Tools.Directories import pathExists
from Plugins.Plugin import PluginDescriptor
+from pluginrunner import PluginRunner
from os import listdir
@@ -36,6 +37,7 @@ def getPluginParams(file):
def main(session, plugin, **kwargs):
print "Running plugin " + plugin[:-4] + ".so with config file", plugin
print getPluginParams(plugin)
+ session.open(PluginRunner, plugin[:-4].split(".so")[0])
def Plugins(**kwargs):
return getPlugins()
diff --git a/lib/python/Plugins/Extensions/TuxboxPlugins/pluginrunner.py b/lib/python/Plugins/Extensions/TuxboxPlugins/pluginrunner.py
new file mode 100644
index 00000000..71f935cd
--- /dev/null
+++ b/lib/python/Plugins/Extensions/TuxboxPlugins/pluginrunner.py
@@ -0,0 +1,37 @@
+from enigma import eDBoxLCD, eRCInput, fbClass, eConsoleAppContainer
+from Screens.Screen import Screen
+from Screens.MessageBox import MessageBox
+
+class PluginRunner(Screen):
+ skin = """
+ <screen position="1,1" size="1,1" title="Plugin" >
+ </screen>"""
+ def __init__(self, session, pluginname, args = None):
+ self.skin = PluginRunner.skin
+ Screen.__init__(self, session)
+ self.container = eConsoleAppContainer()
+ self.container.appClosed.get().append(self.finishedExecution)
+ self.runPlugin(pluginname)
+
+ def runPlugin(self, pluginname):
+ eDBoxLCD.getInstance().lock()
+ eRCInput.getInstance().lock()
+ fbClass.getInstance().lock()
+ print "executing:", ("pluginlauncher -x %s" % pluginname)
+ if self.container.execute("pluginlauncher -x %s" % pluginname):
+ self.finishedExecution(None)
+
+ def finishedExecution(self, retval = 1):
+ print "PluginRunner retval:", retval
+ fbClass.getInstance().unlock()
+ eRCInput.getInstance().unlock()
+ eDBoxLCD.getInstance().unlock()
+
+ if retval is None or retval != 1:
+ self.session.openWithCallback(
+ self.finishedExecution,
+ MessageBox,
+ _("Error executing plugin") % (param)
+ )
+ else:
+ self.close()