aboutsummaryrefslogtreecommitdiff
path: root/lib/python/Components/Renderer
diff options
context:
space:
mode:
authorAndreas Monzner <andreas.monzner@multimedia-labs.de>2007-09-17 17:44:11 +0000
committerAndreas Monzner <andreas.monzner@multimedia-labs.de>2007-09-17 17:44:11 +0000
commit811afbd21fa83b4000e85a6b2b9f180356ac78ee (patch)
tree3c48a0544918e0e5bbd365d1c064a2b615180e36 /lib/python/Components/Renderer
parent9eea8eab34e64901920309548a5c05e636b25625 (diff)
downloadenigma2-811afbd21fa83b4000e85a6b2b9f180356ac78ee.tar.gz
enigma2-811afbd21fa83b4000e85a6b2b9f180356ac78ee.zip
add support for channellogos (picons)
Diffstat (limited to 'lib/python/Components/Renderer')
-rw-r--r--lib/python/Components/Renderer/Makefile.am2
-rw-r--r--lib/python/Components/Renderer/Picon.py71
2 files changed, 72 insertions, 1 deletions
diff --git a/lib/python/Components/Renderer/Makefile.am b/lib/python/Components/Renderer/Makefile.am
index 31439c7c..c711ed42 100644
--- a/lib/python/Components/Renderer/Makefile.am
+++ b/lib/python/Components/Renderer/Makefile.am
@@ -2,4 +2,4 @@ installdir = $(LIBDIR)/enigma2/python/Components/Renderer
install_PYTHON = \
__init__.py Label.py Progress.py Listbox.py Renderer.py Pixmap.py \
- FixedLabel.py PositionGauge.py Canvas.py
+ FixedLabel.py PositionGauge.py Canvas.py Picon.py
diff --git a/lib/python/Components/Renderer/Picon.py b/lib/python/Components/Renderer/Picon.py
new file mode 100644
index 00000000..117e08dd
--- /dev/null
+++ b/lib/python/Components/Renderer/Picon.py
@@ -0,0 +1,71 @@
+##
+## 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 ""