X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/2d56db2bf96ca3ca320a5c25c0e2ee6f3435ab43..82ea06047ff217e5f60959f9982ce0337483e5a5:/skin.py diff --git a/skin.py b/skin.py index baa53f74..21ec62ae 100644 --- 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"):