## ## Picon renderer by Gruffy .. some speedups by Ghost ## from Renderer import Renderer from enigma import ePixmap from Tools.Directories import fileExists, SCOPE_SKIN_IMAGE, resolveFilename class Picon(Renderer): searchPaths = ['/usr/share/enigma2/%s/', '/media/cf/%s/', '/media/usb/%s/'] def __init__(self): Renderer.__init__(self) self.path = "picon" self.nameCache = { } self.pngname = "" def applySkin(self, desktop): attribs = [ ] for (attrib, value) in self.skinAttributes: if attrib == "path": self.path = value else: attribs.append((attrib,value)) self.skinAttributes = attribs return Renderer.applySkin(self, desktop) GUI_WIDGET = ePixmap def changed(self, what): if self.instance: pngname = "" if what[0] != self.CHANGED_CLEAR: sname = self.source.text # strip all after last : pos = sname.rfind(':') if pos != -1: sname = sname[:pos].rstrip(':').replace(':','_') pngname = self.nameCache.get(sname, "") if pngname == "": pngname = self.findPicon(sname) if pngname != "": 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") if pngname == "": # Fallback to enigma2 logo pngname = resolveFilename(SCOPE_SKIN_IMAGE, "skin_default/enigma2.png") self.nameCache["default"] = pngname if self.pngname != pngname: self.instance.setPixmapFromFile(pngname) self.pngname = pngname def findPicon(self, serviceName): for path in self.searchPaths: pngname = (path % self.path) + serviceName + ".png" if fileExists(pngname): return pngname return ""