From: Andreas Monzner Date: Mon, 17 Sep 2007 17:44:11 +0000 (+0000) Subject: add support for channellogos (picons) X-Git-Tag: 2.6.0~1900 X-Git-Url: https://git.cweiske.de/enigma2.git/commitdiff_plain/811afbd21fa83b4000e85a6b2b9f180356ac78ee add support for channellogos (picons) --- diff --git a/data/skin.xml b/data/skin.xml index 82a67bdf..df8e3270 100644 --- a/data/skin.xml +++ b/data/skin.xml @@ -96,15 +96,15 @@ 36700,65536 - + BER - - + + + Name + Name 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 ""