X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/726a696a8d423d9f994767f2df01e135f07fca96..819285a4572823e343f0d1ab88e2c68c2caf2677:/skin.py diff --git a/skin.py b/skin.py index 378f4df1..97954715 100644 --- a/skin.py +++ b/skin.py @@ -1,4 +1,4 @@ -from Tools.Profile import profile, profile_final +from Tools.Profile import profile profile("LOAD:ElementTree") import xml.etree.cElementTree from os import path @@ -14,7 +14,7 @@ from Tools.Directories import resolveFilename, SCOPE_SKIN, SCOPE_SKIN_IMAGE, SCO from Tools.Import import my_import from Tools.LoadPixmap import LoadPixmap -from Tools.XMLTools import elementsWithTag, mergeText +from Tools.XMLTools import mergeText colorNames = dict() @@ -68,17 +68,17 @@ profile("LoadSkinDefault") loadSkin('skin_default.xml') profile("LoadSkinDefaultDone") -def parsePosition(str): +def parsePosition(str, scale): x, y = str.split(',') - return ePoint(int(x), int(y)) + return ePoint(int(x) * scale[0][0] / scale[0][1], int(y) * scale[1][0] / scale[1][1]) -def parseSize(str): +def parseSize(str, scale): x, y = str.split(',') - return eSize(int(x), int(y)) + return eSize(int(x) * scale[0][0] / scale[0][1], int(y) * scale[1][0] / scale[1][1]) -def parseFont(str): +def parseFont(str, scale): name, size = str.split(';') - return gFont(name, int(size)) + return gFont(name, int(size) * scale[0][0] / scale[0][1]) def parseColor(str): if str[0] != '#': @@ -113,19 +113,19 @@ def loadPixmap(path, desktop): raise SkinError("pixmap file %s not found!" % (path)) return ptr -def applySingleAttribute(guiObject, desktop, attrib, value): +def applySingleAttribute(guiObject, desktop, attrib, value, scale = ((1,1),(1,1))): # and set attributes try: if attrib == 'position': - guiObject.move(parsePosition(value)) + guiObject.move(parsePosition(value, scale)) elif attrib == 'size': - guiObject.resize(parseSize(value)) + guiObject.resize(parseSize(value, scale)) elif attrib == 'title': guiObject.setTitle(_(value)) elif attrib == 'text': guiObject.setText(_(value)) elif attrib == 'font': - guiObject.setFont(parseFont(value)) + guiObject.setFont(parseFont(value, scale)) elif attrib == 'zPosition': guiObject.setZPosition(int(value)) elif attrib in ["pixmap", "backgroundPixmap", "selectionPixmap"]: @@ -206,11 +206,11 @@ def applySingleAttribute(guiObject, desktop, attrib, value): guiObject.setWrapAround(True) elif attrib == "pointer" or attrib == "seek_pointer": (name, pos) = value.split(':') - pos = parsePosition(pos) + pos = parsePosition(pos, scale) ptr = loadPixmap(name, desktop) guiObject.setPointer({"pointer": 0, "seek_pointer": 1}[attrib], ptr, pos) elif attrib == 'shadowOffset': - guiObject.setShadowOffset(parsePosition(value)) + guiObject.setShadowOffset(parsePosition(value, scale)) elif attrib == 'noWrap': guiObject.setNoWrap(1) else: @@ -219,9 +219,9 @@ def applySingleAttribute(guiObject, desktop, attrib, value): # AttributeError: print "widget %s (%s) doesn't support attribute %s!" % ("", guiObject.__class__.__name__, attrib) -def applyAllAttributes(guiObject, desktop, attributes): +def applyAllAttributes(guiObject, desktop, attributes, scale): for (attrib, value) in attributes: - applySingleAttribute(guiObject, desktop, attrib, value) + applySingleAttribute(guiObject, desktop, attrib, value, scale) def loadSingleSkinData(desktop, skin, path_prefix): """loads skin data like colors, windowstyle etc.""" @@ -237,7 +237,7 @@ def loadSingleSkinData(desktop, skin, path_prefix): id = 0 if id == 0: # framebuffer for res in c.findall("resolution"): - get_attr = c.attrib.get + get_attr = res.attrib.get xres = get_attr("xres") if xres: xres = int(xres) @@ -255,8 +255,8 @@ def loadSingleSkinData(desktop, skin, path_prefix): bpp = 32 #print "Resolution:", xres,yres,bpp from enigma import gFBDC - i = gFBDC.getInstance() - i.setResolution(xres, yres) + gFBDC.getInstance().setResolution(xres, yres) + desktop.resize(eSize(xres, yres)) if bpp != 32: # load palette (not yet implemented) pass @@ -266,7 +266,6 @@ def loadSingleSkinData(desktop, skin, path_prefix): get_attr = color.attrib.get name = get_attr("name") color = get_attr("value") - if name and color: colorNames[name] = parseColor(color) #print "Color:", name, color @@ -307,8 +306,8 @@ def loadSingleSkinData(desktop, skin, path_prefix): for title in windowstyle.findall("title"): get_attr = title.attrib.get - offset = parseSize(get_attr("offset")) - font = parseFont(get_attr("font")) + offset = parseSize(get_attr("offset"), ((1,1),(1,1))) + font = parseFont(get_attr("font"), ((1,1),(1,1))) style.setTitleFont(font); style.setTitleOffset(offset) @@ -372,7 +371,8 @@ def readSkin(screen, skin, names, desktop): break # otherwise try embedded skin - myscreen = myscreen or getattr(screen, "parsedSkin", None) + if myscreen is None: + myscreen = getattr(screen, "parsedSkin", None) # try uncompiled embedded skin if myscreen is None and getattr(screen, "skin", None):