2 ## Picon renderer by Gruffy .. some speedups by Ghost
4 from Renderer import Renderer
5 from enigma import ePixmap
6 from Components.config import config
7 from Tools.Directories import fileExists, SCOPE_SKIN_IMAGE, resolveFilename
10 searchPaths = ['/usr/share/enigma2/%s/',
15 Renderer.__init__(self)
20 def applySkin(self, desktop):
22 for (attrib, value) in self.skinAttributes:
26 attribs.append((attrib,value))
27 self.skinAttributes = attribs
28 return Renderer.applySkin(self, desktop)
32 def changed(self, what):
35 if what[0] != self.CHANGED_CLEAR:
36 sname = self.source.text
37 # strip all after last :
38 pos = sname.rfind(':')
40 sname = sname[:pos].rstrip(':').replace(':','_')
41 pngname = self.nameCache.get(sname, "")
43 pngname = self.findPicon(sname)
45 self.nameCache[sname] = pngname
46 if pngname == "": # no picon for service found
47 pngname = self.nameCache.get("default", "")
48 if pngname == "": # no default yet in cache..
49 pngname = self.findPicon("picon_default")
51 pos = config.skin.primary_skin.value.rfind('/')
53 str = config.skin.primary_skin.value[:pos+1]
54 str += 'picon_default.png'
57 if pngname == "": # Fallback to enigma2 logo
58 pngname = resolveFilename(SCOPE_SKIN_IMAGE, "skin_default/enigma2.png")
59 self.nameCache["default"] = pngname
60 if self.pngname != pngname:
61 self.instance.setPixmapFromFile(pngname)
62 self.pngname = pngname
64 def findPicon(self, serviceName):
65 for path in self.searchPaths:
66 pngname = (path % self.path) + serviceName + ".png"
67 if fileExists(pngname):