diff options
Diffstat (limited to 'lib/python/Components/Renderer/Picon.py')
| -rw-r--r-- | lib/python/Components/Renderer/Picon.py | 71 |
1 files changed, 71 insertions, 0 deletions
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 "" |
