diff options
| author | Stefan Pluecken <stefan.pluecken@multimedia-labs.de> | 2008-10-08 14:52:52 +0000 |
|---|---|---|
| committer | Stefan Pluecken <stefan.pluecken@multimedia-labs.de> | 2008-10-08 14:52:52 +0000 |
| commit | db46f952f934ea8532527cbbdf21ef283cacda20 (patch) | |
| tree | d10dac3a25aa5f1c49d50ed9a15cd53878aec15e /lib/python | |
| parent | 32f2aee04a0b7dbdbe561b232f90ead5edf83a7e (diff) | |
| download | enigma2-db46f952f934ea8532527cbbdf21ef283cacda20.tar.gz enigma2-db46f952f934ea8532527cbbdf21ef283cacda20.zip | |
use external program (i.e. pluginx) to start tuxbox plugins
Diffstat (limited to 'lib/python')
| -rw-r--r-- | lib/python/Plugins/Extensions/TuxboxPlugins/plugin.py | 2 | ||||
| -rw-r--r-- | lib/python/Plugins/Extensions/TuxboxPlugins/pluginrunner.py | 37 |
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() |
