from enigma import ePixmap
from Tools.Directories import pathExists, fileExists, SCOPE_SKIN_IMAGE, resolveFilename
-from time import time
-
class Picon(Renderer):
- visible = True
pngname = ""
nameCache = { }
- searchPaths = ['/etc/picon/',
+ searchPaths = ['/usr/share/enigma2/picon/',
'/media/cf/picon/',
'/media/usb/picon/',
'/media/hdd/picon/']
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(self.source.text)
- if pngname == "":
- self.nameCache[sname] = pngname
- else:
+ 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")
- self.nameCache[sname] = pngname
if pngname == "": # Fallback to enigma2 logo
pngname = resolveFilename(SCOPE_SKIN_IMAGE, "skin_default/enigma2.png")
self.nameCache["default"] = pngname
- if pngname != "":
- if self.pngname != pngname:
- self.instance.setPixmapFromFile(pngname)
- if not self.visible:
- self.instance.show()
- self.visible=True
- elif self.visible:
- self.instance.hide()
- self.visible = False
- self.pngname = pngname
+ if self.pngname != pngname:
+ self.instance.setPixmapFromFile(pngname)
+ self.pngname = pngname
def findPicon(self, serviceName):
for path in self.searchPaths:
- if pathExists(path):
- png = self.findFile(path, serviceName)
- if png != "":
- return png
+ pngname = path + serviceName + ".png"
+ if fileExists(pngname):
+ return pngname
return ""
-
- def findFile(self, path, serviceName):
- pngname = path + serviceName + ".png"
- if fileExists(pngname):
- return pngname
- else:
- for i in range(len(serviceName), 1, -1):
- if fileExists(path + serviceName[0:i] + ".png"):
- return path + serviceName[0:i] + ".png"
- return ""