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
11 searchPaths = ['/etc/picon/',
17 Renderer.__init__(self)
21 def changed(self, what):
24 if what[0] != self.CHANGED_CLEAR:
25 sname = self.source.text
26 pngname = self.nameCache.get(sname, "")
28 pngname = self.findPicon(self.source.text)
30 self.nameCache[sname] = pngname
32 self.nameCache[sname] = pngname
33 if pngname == "": # no picon for service found
34 pngname = self.nameCache.get("default", "")
35 if pngname == "": # no default yet in cache..
36 pngname = self.findPicon("picon_default")
37 self.nameCache[sname] = pngname
38 if pngname == "": # Fallback to enigma2 logo
39 pngname = resolveFilename(SCOPE_SKIN_IMAGE, "skin_default/enigma2.png")
40 self.nameCache["default"] = pngname
41 if self.pngname != pngname:
42 self.instance.setPixmapFromFile(pngname)
43 self.pngname = pngname
45 def findPicon(self, serviceName):
46 for path in self.searchPaths:
48 png = self.findFile(path, serviceName)
53 def findFile(self, path, serviceName):
54 pngname = path + serviceName + ".png"
55 if fileExists(pngname):
58 for i in range(len(serviceName), 1, -1):
59 if fileExists(path + serviceName[0:i] + ".png"):
60 return path + serviceName[0:i] + ".png"