<convert type="ValueRange">36700,65536</convert>
<convert type="ConditionalShowHide" />
</widget>
- <ePixmap pixmap="skin_default/led_green.png" position="528,4" zPosition="2" size="15,15" alphatest="on" />
+ <ePixmap pixmap="skin_default/led_green.png" position="528,4" zPosition="2" size="15,15" alphatest="on" />
<widget source="FrontendStatus" render="Pixmap" pixmap="skin_default/led_red.png" position="528,4" zPosition="3" size="15,15" transparent="1" alphatest="on" >
<convert type="FrontendInfo">BER</convert>
<convert type="ConditionalShowHide" />
</widget>
- <ePixmap position="47,2" zPosition="1" size="74,57" pixmap="skin_default/enigma2.png" alphatest="on" />
- <!-- Uncomment for Picon use
- <widget name="picon" position="76,69" zPosition="2" size="70,53" pixmap="skin_default/enigma2.png" />
- -->
+ <!-- Channellogo (Picon) -->
+ <widget source="CurrentService" render="Picon" position="47,2" zPosition="2" size="74,57" >
+ <convert type="ServiceName">Name</convert>
+ </widget>
<!-- Service name -->
<widget source="CurrentService" render="Label" position="130,30" size="360,27" font="Regular;21" valign="center" halign="right" noWrap="1" backgroundColor="#263c59" shadowColor="#1d354c" shadowOffset="-1,-1" transparent="1" >
<convert type="ServiceName">Name</convert>
--- /dev/null
+##
+## Picon renderer by Gruffy .. some speedups by Ghost
+##
+from Renderer import Renderer
+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/',
+ '/media/cf/picon/',
+ '/media/usb/picon/',
+ '/media/hdd/picon/']
+
+ def __init__(self):
+ Renderer.__init__(self)
+
+ GUI_WIDGET = ePixmap
+
+ def changed(self, what):
+ if self.instance:
+ pngname = ""
+ if what[0] != self.CHANGED_CLEAR:
+ sname = self.source.text
+ pngname = self.nameCache.get(sname, "")
+ if pngname == "":
+ pngname = self.findPicon(self.source.text)
+ if pngname == "":
+ self.nameCache[sname] = pngname
+ else:
+ 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
+
+ def findPicon(self, serviceName):
+ for path in self.searchPaths:
+ if pathExists(path):
+ png = self.findFile(path, serviceName)
+ if png != "":
+ return png
+ 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 ""