added initial revision of letterbox zoom-in plugin
authorGeorg Lukas <ge0rg@users.schwerkraft.elitedvb.net>
Mon, 11 Aug 2008 20:12:30 +0000 (20:12 +0000)
committerGeorg Lukas <ge0rg@users.schwerkraft.elitedvb.net>
Mon, 11 Aug 2008 20:12:30 +0000 (20:12 +0000)
letterbox/CONTROL/control [new file with mode: 0644]
letterbox/Makefile.am [new file with mode: 0644]
letterbox/src/Makefile.am [new file with mode: 0755]
letterbox/src/__init__.py [new file with mode: 0644]
letterbox/src/plugin.py [new file with mode: 0644]

diff --git a/letterbox/CONTROL/control b/letterbox/CONTROL/control
new file mode 100644 (file)
index 0000000..787c2a6
--- /dev/null
@@ -0,0 +1,8 @@
+Package: enigma2-plugin-extensions-letterbox
+Version: 1.0-20080811
+Description: Zoom into letterboxed/anamorph movies
+Section: extra
+Priority: optional
+Architecture: mipsel
+Maintainer: Georg Lukas <georg@op-co.de>
+Depends: enigma2(>2.5cvs20080628)
diff --git a/letterbox/Makefile.am b/letterbox/Makefile.am
new file mode 100644 (file)
index 0000000..af437a6
--- /dev/null
@@ -0,0 +1 @@
+SUBDIRS = src
diff --git a/letterbox/src/Makefile.am b/letterbox/src/Makefile.am
new file mode 100755 (executable)
index 0000000..84b6bb6
--- /dev/null
@@ -0,0 +1,3 @@
+installdir = /usr/lib/enigma2/python/Plugins/Extensions/LetterBox
+
+install_PYTHON = __init__.py plugin.py
diff --git a/letterbox/src/__init__.py b/letterbox/src/__init__.py
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/letterbox/src/plugin.py b/letterbox/src/plugin.py
new file mode 100644 (file)
index 0000000..5e27b85
--- /dev/null
@@ -0,0 +1,65 @@
+from Plugins.Plugin import PluginDescriptor
+from Components.ServiceEventTracker import ServiceEventTracker
+from Screens.Screen import Screen
+from enigma import iPlayableService
+
+# config file to read/write state
+POLICY = "/proc/stb/video/policy"
+
+# list of mode choices to cycle through
+MODE_CHOICES = ["letterbox", "panscan"]
+
+def get_mode():
+       f = open(POLICY, "r")
+       mode = f.read().strip("\n")
+       f.close()
+       return mode
+
+def set_mode(mode):
+       f = open(POLICY, "w")
+       f.write(mode + "\n")
+       f.close()
+
+
+class LetterBox(Screen):
+       def __init__(self, session):
+               Screen.__init__(self, session)
+               self.default = None
+               self.tracker = ServiceEventTracker(screen=self, eventmap=
+                               { iPlayableService.evStart: self.reset, })
+               self.used = False
+
+       def reset(self):
+               if self.used:
+                       set_mode(self.default)
+                       self.used = False
+               else:
+                       self.default = get_mode()
+
+       def toggle(self):
+               modeidx = MODE_CHOICES.index(get_mode())
+               modeidx = (modeidx + 1) % len(MODE_CHOICES)
+               set_mode(MODE_CHOICES[modeidx])
+               self.used = True
+
+letterbox = None
+
+def zoom_init(reason, **kwargs):
+       global letterbox
+       letterbox = LetterBox(kwargs["session"])
+       #letterbox.session = kwargs["session"]
+       #letterbox.default = get_mode()
+
+def zoom_toggle(session, **kwargs):
+       global letterbox
+       letterbox.toggle()
+
+def Plugins(**kwargs):
+       plname = "LetterBox Zoom"
+       return [PluginDescriptor(name=plname,
+                       description="Zoom into letterboxed movies",
+                       where=PluginDescriptor.WHERE_EXTENSIONSMENU,
+                       fnc=zoom_toggle),
+               PluginDescriptor(where=PluginDescriptor.WHERE_SESSIONSTART,
+                       fnc=zoom_init)]
+