optional pixmap caching
authorFelix Domke <tmbinc@elitedvb.net>
Sat, 15 Mar 2008 10:50:29 +0000 (10:50 +0000)
committerFelix Domke <tmbinc@elitedvb.net>
Sat, 15 Mar 2008 10:50:29 +0000 (10:50 +0000)
lib/python/Tools/LoadPixmap.py
skin.py

index b7838a39c1f4a206e72e9d26024f6cfdedbebf55..53e04e54eca00e410406bb97ea2335c153eef91a 100644 (file)
@@ -1,6 +1,11 @@
 from enigma import loadPNG, loadJPG
 
-def LoadPixmap(path, desktop = None):
+pixmap_cache = {}
+
+def LoadPixmap(path, desktop = None, cached = False):
+       if path in pixmap_cache:
+               return pixmap_cache[path]
+
        if path[-4:] == ".png":
                ptr = loadPNG(path)
        elif path[-4:] == ".jpg":
@@ -12,4 +17,8 @@ def LoadPixmap(path, desktop = None):
                raise "neither .png nor .jpg, please fix file extension"
        if ptr and desktop:
                desktop.makeCompatiblePixmap(ptr)
+
+       if cached:
+               pixmap_cache[path] = ptr
+
        return ptr
diff --git a/skin.py b/skin.py
index 21ec62ae4cefbc733315480b117e3e64b7b96321..26c08207df24ed04d2ac96d4086e3e4af4984ca1 100644 (file)
--- a/skin.py
+++ b/skin.py
@@ -106,7 +106,13 @@ def collectAttributes(skinAttributes, node, skin_path_prefix=None, ignore=[]):
                        skinAttributes.append((attrib, value))
 
 def loadPixmap(path, desktop):
-       ptr = LoadPixmap(path, desktop)
+       cached = False
+       option = path.find("#")
+       if option != -1:
+               options = path[option+1:].split(',')
+               path = path[:option]
+               cached = "cached" in options
+       ptr = LoadPixmap(path, desktop, cached)
        if ptr is None:
                raise SkinError("pixmap file %s not found!" % (path))
        return ptr