relocate packages on recipes-base/recipes-enigma2/recipes-wlan.
[vuplus_openvuplus_3.0] / meta-openvuplus / recipes-vuplus / tuxtxt / tuxbox-tuxtxt-32bpp / plugin.py
diff --git a/meta-openvuplus/recipes-vuplus/tuxtxt/tuxbox-tuxtxt-32bpp/plugin.py b/meta-openvuplus/recipes-vuplus/tuxtxt/tuxbox-tuxtxt-32bpp/plugin.py
new file mode 100644 (file)
index 0000000..dad428b
--- /dev/null
@@ -0,0 +1,60 @@
+from enigma import eConsoleAppContainer, iServiceInformation, fbClass, eRCInput, eDBoxLCD, getDesktop
+from Screens.Screen import Screen
+from Plugins.Plugin import PluginDescriptor
+from os import symlink, mkdir, remove, rmdir, path
+
+class ShellStarter(Screen):
+       skin = """
+               <screen position="1,1" size="1,1" title="TuxTXT" >
+                </screen>"""
+       faked_lcd = False
+
+       def __init__(self, session, args = None):
+               self.skin = ShellStarter.skin
+               Screen.__init__(self, session)
+               self.container=eConsoleAppContainer()
+               self.container.appClosed.append(self.finished)
+               self.runapp()
+
+       def runapp(self):
+               service = self.session.nav.getCurrentService()
+               info = service and service.info()
+               txtpid = info and "%d" %(info.getInfo(iServiceInformation.sTXTPID)) or ""
+
+               stream = service and service.stream()
+               demux = stream and stream.getStreamingData()
+               demux = demux and demux.get("demux", -1)
+               demux = demux > -1 and "%d" %(demux) or ""
+
+               eDBoxLCD.getInstance().lock()
+               eRCInput.getInstance().lock()
+               fbClass.getInstance().lock()
+
+               self.faked_lcd = not path.exists("/dev/dbox")
+               if self.faked_lcd:
+                       mkdir("/dev/dbox")
+                       symlink("/dev/null", "/dev/dbox/lcd0")
+
+               if self.container.execute("/usr/bin/tuxtxt " + demux + " " + txtpid):
+                       self.finished(-1)
+
+       def finished(self,retval):
+               fbClass.getInstance().unlock()
+               eRCInput.getInstance().unlock()
+               eDBoxLCD.getInstance().unlock()
+
+               if self.faked_lcd:
+                       remove("/dev/dbox/lcd0")
+                       rmdir("/dev/dbox")
+
+               #force redraw
+               dsk = getDesktop(0)
+               dsk.resize(dsk.size())
+
+               self.close()
+
+def main(session, **kwargs):
+       session.open(ShellStarter)
+
+def Plugins(**kwargs):
+       return PluginDescriptor(name="TuxTXT", description="Videotext", where = PluginDescriptor.WHERE_TELETEXT, fnc=main)