2 ## Picon renderer by Gruffy .. some speedups by Ghost
4 from Renderer import Renderer
5 from enigma import ePixmap
6 from Tools.Directories import pathExists, fileExists, SCOPE_SKIN_IMAGE, resolveFilename
10 class Picon(Renderer):
14 searchPaths = ['/etc/picon/',
20 Renderer.__init__(self)
24 def changed(self, what):
27 if what[0] != self.CHANGED_CLEAR:
28 sname = self.source.text
29 pngname = self.nameCache.get(sname, "")
31 pngname = self.findPicon(self.source.text)
33 self.nameCache[sname] = pngname
35 self.nameCache[sname] = pngname
36 if pngname == "": # no picon for service found
37 pngname = self.nameCache.get("default", "")
38 if pngname == "": # no default yet in cache..
39 pngname = self.findPicon("picon_default")
40 self.nameCache[sname] = pngname
41 if pngname == "": # Fallback to enigma2 logo
42 pngname = resolveFilename(SCOPE_SKIN_IMAGE, "skin_default/enigma2.png")
43 self.nameCache["default"] = pngname
45 if self.pngname != pngname:
46 self.instance.setPixmapFromFile(pngname)
53 self.pngname = pngname
55 def findPicon(self, serviceName):
56 for path in self.searchPaths:
58 png = self.findFile(path, serviceName)
63 def findFile(self, path, serviceName):
64 pngname = path + serviceName + ".png"
65 if fileExists(pngname):
68 for i in range(len(serviceName), 1, -1):
69 if fileExists(path + serviceName[0:i] + ".png"):
70 return path + serviceName[0:i] + ".png"