try skindir/picon_default.png before use default enigma2.png
[vuplus_dvbapp] / lib / python / Components / Renderer / Picon.py
1 ##
2 ## Picon renderer by Gruffy .. some speedups by Ghost
3 ##
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
8
9 class Picon(Renderer):
10         searchPaths = ['/usr/share/enigma2/%s/',
11                                 '/media/cf/%s/',
12                                 '/media/usb/%s/']
13
14         def __init__(self):
15                 Renderer.__init__(self)
16                 self.path = "picon"
17                 self.nameCache = { }
18                 self.pngname = ""
19
20         def applySkin(self, desktop):
21                 attribs = [ ]
22                 for (attrib, value) in self.skinAttributes:
23                         if attrib == "path":
24                                 self.path = value
25                         else:
26                                 attribs.append((attrib,value))
27                 self.skinAttributes = attribs
28                 return Renderer.applySkin(self, desktop)
29
30         GUI_WIDGET = ePixmap
31
32         def changed(self, what):
33                 if self.instance:
34                         pngname = ""
35                         if what[0] != self.CHANGED_CLEAR:
36                                 sname = self.source.text
37                                 # strip all after last :
38                                 pos = sname.rfind(':')
39                                 if pos != -1:
40                                         sname = sname[:pos].rstrip(':').replace(':','_')
41                                 pngname = self.nameCache.get(sname, "")
42                                 if pngname == "":
43                                         pngname = self.findPicon(sname)
44                                         if pngname != "":
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")
50                                         if pngname == "":
51                                                 pos = config.skin.primary_skin.value.rfind('/')
52                                                 if pos != -1:
53                                                         str = config.skin.primary_skin.value[:pos+1]
54                                                         str += 'picon_default.png'
55                                                         if fileExists(str):
56                                                                 pngname = str
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
63
64         def findPicon(self, serviceName):
65                 for path in self.searchPaths:
66                         pngname = (path % self.path) + serviceName + ".png"
67                         if fileExists(pngname):
68                                 return pngname
69                 return ""