generic language update
[enigma2.git] / skin.py
diff --git a/skin.py b/skin.py
index baa53f74ddf5ba3de5eb3f3f504a548cf9a4df11..21ec62ae4cefbc733315480b117e3e64b7b96321 100644 (file)
--- a/skin.py
+++ b/skin.py
@@ -1,14 +1,19 @@
+from Tools.Profile import profile, profile_final
+
+profile("LOAD:minidom")
 import xml.dom.minidom
 from os import path
 
+profile("LOAD:enigma_skin")
 from enigma import eSize, ePoint, gFont, eWindow, eLabel, ePixmap, eWindowStyleManager, \
-       loadPNG, addFont, gRGB, eWindowStyleSkinned
+       addFont, gRGB, eWindowStyleSkinned
 
 from Components.config import ConfigSubsection, ConfigText, config
 from Components.Converter.Converter import Converter
 from Components.Sources.Source import Source, ObsoleteSource
 from Tools.Directories import resolveFilename, SCOPE_SKIN, SCOPE_SKIN_IMAGE, SCOPE_FONTS
 from Tools.Import import my_import
+from Tools.LoadPixmap import LoadPixmap
 
 from Tools.XMLTools import elementsWithTag, mergeText
 
@@ -51,13 +56,18 @@ def loadSkin(name):
 config.skin = ConfigSubsection()
 config.skin.primary_skin = ConfigText(default = "skin.xml")
 
+profile("LoadSkin")
 try:
        loadSkin(config.skin.primary_skin.value)
 except (SkinError, IOError, AssertionError), err:
        print "SKIN ERROR:", err
        print "defaulting to standard skin..."
+       config.skin.primary_skin.value = 'skin.xml'
        loadSkin('skin.xml')
+
+profile("LoadSkinDefault")
 loadSkin('skin_default.xml')
+profile("LoadSkinDefaultDone")
 
 def parsePosition(str):
        x, y = str.split(',')
@@ -95,8 +105,8 @@ def collectAttributes(skinAttributes, node, skin_path_prefix=None, ignore=[]):
                if attrib not in ignore:
                        skinAttributes.append((attrib, value))
 
-def loadPixmap(path):
-       ptr = loadPNG(path)
+def loadPixmap(path, desktop):
+       ptr = LoadPixmap(path, desktop)
        if ptr is None:
                raise SkinError("pixmap file %s not found!" % (path))
        return ptr
@@ -117,8 +127,7 @@ def applySingleAttribute(guiObject, desktop, attrib, value):
                elif attrib == 'zPosition':
                        guiObject.setZPosition(int(value))
                elif attrib in ["pixmap", "backgroundPixmap", "selectionPixmap"]:
-                       ptr = loadPixmap(value) # this should already have been filename-resolved.
-                       desktop.makeCompatiblePixmap(ptr)
+                       ptr = loadPixmap(value, desktop) # this should already have been filename-resolved.
                        if attrib == "pixmap":
                                guiObject.setPixmap(ptr)
                        elif attrib == "backgroundPixmap":
@@ -128,8 +137,9 @@ def applySingleAttribute(guiObject, desktop, attrib, value):
                        # guiObject.setPixmapFromFile(value)
                elif attrib == "alphatest": # used by ePixmap
                        guiObject.setAlphatest(
-                               { "on": True,
-                                 "off": False
+                               { "on": 1,
+                                 "off": 0,
+                                 "blend": 2,
                                }[value])
                elif attrib == "orientation": # used by eSlider
                        try:
@@ -195,8 +205,7 @@ def applySingleAttribute(guiObject, desktop, attrib, value):
                elif attrib == "pointer" or attrib == "seek_pointer":
                        (name, pos) = value.split(':')
                        pos = parsePosition(pos)
-                       ptr = loadPixmap(name)
-                       desktop.makeCompatiblePixmap(ptr)
+                       ptr = loadPixmap(name, desktop)
                        guiObject.setPointer({"pointer": 0, "seek_pointer": 1}[attrib], ptr, pos)
                elif attrib == 'shadowOffset':
                        guiObject.setShadowOffset(parsePosition(value))
@@ -273,10 +282,7 @@ def loadSingleSkinData(desktop, dom_skin, path_prefix):
                                bpName = str(pixmap.getAttribute("pos"))
                                filename = str(pixmap.getAttribute("filename"))
                                
-                               png = loadPixmap(resolveFilename(SCOPE_SKIN_IMAGE, filename, path_prefix=path_prefix))
-                               
-                               # adapt palette
-                               desktop.makeCompatiblePixmap(png)
+                               png = loadPixmap(resolveFilename(SCOPE_SKIN_IMAGE, filename, path_prefix=path_prefix), desktop)
                                style.setPixmap(eWindowStyleSkinned.__dict__[bsName], eWindowStyleSkinned.__dict__[bpName], png)
 
                for color in elementsWithTag(windowstyle.childNodes, "color"):