+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
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(',')
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
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":
# 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:
print "illegal flag %s!" % f
elif attrib == "backgroundColor":
guiObject.setBackgroundColor(parseColor(value))
+ elif attrib == "backgroundColorSelected":
+ guiObject.setBackgroundColorSelected(parseColor(value))
elif attrib == "foregroundColor":
guiObject.setForegroundColor(parseColor(value))
+ elif attrib == "foregroundColorSelected":
+ guiObject.setForegroundColorSelected(parseColor(value))
elif attrib == "shadowColor":
guiObject.setShadowColor(parseColor(value))
elif attrib == "selectionDisabled":
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))
skin = dom_skin.childNodes[0]
assert skin.tagName == "skin", "root element in skin must be 'skin'!"
-
+
+ for c in elementsWithTag(skin.childNodes, "output"):
+ id = int(c.getAttribute("id") or "0")
+ if id == 0: # framebuffer
+ for res in elementsWithTag(c.childNodes, "resolution"):
+ xres = int(res.getAttribute("xres" or "720"))
+ yres = int(res.getAttribute("yres" or "576"))
+ bpp = int(res.getAttribute("bpp" or "32"))
+
+ from enigma import gFBDC
+ i = gFBDC.getInstance()
+ i.setResolution(xres, yres)
+
+ if bpp != 32:
+ # load palette (not yet implemented)
+ pass
+
for c in elementsWithTag(skin.childNodes, "colors"):
for color in elementsWithTag(c.childNodes, "color"):
name = str(color.getAttribute("name"))
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"):