diff options
| author | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2007-09-17 17:44:11 +0000 |
|---|---|---|
| committer | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2007-09-17 17:44:11 +0000 |
| commit | 811afbd21fa83b4000e85a6b2b9f180356ac78ee (patch) | |
| tree | 3c48a0544918e0e5bbd365d1c064a2b615180e36 /lib/python/Components/Renderer | |
| parent | 9eea8eab34e64901920309548a5c05e636b25625 (diff) | |
| download | enigma2-811afbd21fa83b4000e85a6b2b9f180356ac78ee.tar.gz enigma2-811afbd21fa83b4000e85a6b2b9f180356ac78ee.zip | |
add support for channellogos (picons)
Diffstat (limited to 'lib/python/Components/Renderer')
| -rw-r--r-- | lib/python/Components/Renderer/Makefile.am | 2 | ||||
| -rw-r--r-- | lib/python/Components/Renderer/Picon.py | 71 |
2 files changed, 72 insertions, 1 deletions
diff --git a/lib/python/Components/Renderer/Makefile.am b/lib/python/Components/Renderer/Makefile.am index 31439c7c..c711ed42 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 + FixedLabel.py PositionGauge.py Canvas.py Picon.py diff --git a/lib/python/Components/Renderer/Picon.py b/lib/python/Components/Renderer/Picon.py new file mode 100644 index 00000000..117e08dd --- /dev/null +++ b/lib/python/Components/Renderer/Picon.py @@ -0,0 +1,71 @@ +## +## Picon renderer by Gruffy .. some speedups by Ghost +## +from Renderer import Renderer +from enigma import ePixmap +from Tools.Directories import pathExists, fileExists, SCOPE_SKIN_IMAGE, resolveFilename + +from time import time + +class Picon(Renderer): + visible = True + pngname = "" + nameCache = { } + searchPaths = ['/etc/picon/', + '/media/cf/picon/', + '/media/usb/picon/', + '/media/hdd/picon/'] + + def __init__(self): + Renderer.__init__(self) + + GUI_WIDGET = ePixmap + + def changed(self, what): + if self.instance: + pngname = "" + if what[0] != self.CHANGED_CLEAR: + sname = self.source.text + pngname = self.nameCache.get(sname, "") + if pngname == "": + pngname = self.findPicon(self.source.text) + if pngname == "": + self.nameCache[sname] = pngname + else: + self.nameCache[sname] = pngname + if pngname == "": # no picon for service found + pngname = self.nameCache.get("default", "") + if pngname == "": # no default yet in cache.. + pngname = self.findPicon("picon_default") + self.nameCache[sname] = pngname + if pngname == "": # Fallback to enigma2 logo + pngname = resolveFilename(SCOPE_SKIN_IMAGE, "skin_default/enigma2.png") + self.nameCache["default"] = pngname + if pngname != "": + if self.pngname != pngname: + self.instance.setPixmapFromFile(pngname) + if not self.visible: + self.instance.show() + self.visible=True + elif self.visible: + self.instance.hide() + self.visible = False + self.pngname = pngname + + def findPicon(self, serviceName): + for path in self.searchPaths: + if pathExists(path): + png = self.findFile(path, serviceName) + if png != "": + return png + return "" + + def findFile(self, path, serviceName): + pngname = path + serviceName + ".png" + if fileExists(pngname): + return pngname + else: + for i in range(len(serviceName), 1, -1): + if fileExists(path + serviceName[0:i] + ".png"): + return path + serviceName[0:i] + ".png" + return "" |
