diff options
| author | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2007-09-21 20:15:18 +0000 |
|---|---|---|
| committer | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2007-09-21 20:15:18 +0000 |
| commit | 79cab0403882bf14a34828b75f50a34d445851a6 (patch) | |
| tree | 074699a60974a491f5e7e3b6eba9dc2980ddf26d | |
| parent | d42c6cf196f659537b9da28049c90eccd9d7506e (diff) | |
| download | enigma2-79cab0403882bf14a34828b75f50a34d445851a6.tar.gz enigma2-79cab0403882bf14a34828b75f50a34d445851a6.zip | |
add a "Picture in Graphics" source.. its usable to show a small embedded tv
picture in every screen.. simply by add a line like "<widget source="fake"
render="Pig" backgroundColor="transparent" size="160,120" position="50,50"
/>
| -rw-r--r-- | lib/python/Components/GUISkin.py | 5 | ||||
| -rw-r--r-- | lib/python/Components/Renderer/Makefile.am | 2 | ||||
| -rw-r--r-- | lib/python/Components/Renderer/Pig.py | 37 | ||||
| -rw-r--r-- | skin.py | 8 |
4 files changed, 50 insertions, 2 deletions
diff --git a/lib/python/Components/GUISkin.py b/lib/python/Components/GUISkin.py index 39499c77..0cf4d027 100644 --- a/lib/python/Components/GUISkin.py +++ b/lib/python/Components/GUISkin.py @@ -35,9 +35,14 @@ class GUISkin: f() def deleteGUIScreen(self): + seenFakeSource = False for (name, val) in self.items(): + if name == "fake": + seenFakeSource = True if isinstance(val, GUIComponent): val.GUIdelete() + if seenFakeSource: + del self["fake"] def close(self): self.deleteGUIScreen() diff --git a/lib/python/Components/Renderer/Makefile.am b/lib/python/Components/Renderer/Makefile.am index c711ed42..eb55ad62 100644 --- a/lib/python/Components/Renderer/Makefile.am +++ b/lib/python/Components/Renderer/Makefile.am @@ -2,4 +2,4 @@ installdir = $(LIBDIR)/enigma2/python/Components/Renderer install_PYTHON = \ __init__.py Label.py Progress.py Listbox.py Renderer.py Pixmap.py \ - FixedLabel.py PositionGauge.py Canvas.py Picon.py + FixedLabel.py PositionGauge.py Canvas.py Picon.py Pig.py diff --git a/lib/python/Components/Renderer/Pig.py b/lib/python/Components/Renderer/Pig.py new file mode 100644 index 00000000..99488e4a --- /dev/null +++ b/lib/python/Components/Renderer/Pig.py @@ -0,0 +1,37 @@ +## +## P(icture)i(n)g(raphics) renderer +## +from Renderer import Renderer +from enigma import eVideoWidget, eSize, ePoint + +class Pig(Renderer): + def __init__(self): + Renderer.__init__(self) + self.Position = self.Size = None + + GUI_WIDGET = eVideoWidget + + def postWidgetCreate(self, instance): + instance.setDecoder(0) + + def applySkin(self, desktop): + ret = Renderer.applySkin(self, desktop) + if ret: + self.Position = self.instance.position() + self.Size = self.instance.size() + return ret + + def preWidgetRemove(self, instance): + instance.resize(eSize(720,576)) + instance.move(ePoint(0,0)) + + def onShow(self): + if self.instance: + if self.Size: + self.instance.resize(self.Size) + if self.Position: + self.instance.move(self.Position) + + def onHide(self): + if self.instance: + self.preWidgetRemove(self.instance) @@ -348,7 +348,13 @@ def readSkin(screen, skin, name, desktop): # get corresponding source source = screen.get(wsource) if source is None: - raise SkinError("source '" + wsource + "' was not found in screen '" + name + "'!") + if wsource == "fake": + if screen.get("fake"): + raise SkinError("screen '" + name + "has a element named 'fake' but its not a Source!!") + source = Source() + screen["fake"] = source + else: + raise SkinError("source '" + wsource + "' was not found in screen '" + name + "'!") wrender = widget.getAttribute('render') |
