+ for c in elementsWithTag(skin.childNodes, "colors"):
+ for color in elementsWithTag(c.childNodes, "color"):
+ name = str(color.getAttribute("name"))
+ color = str(color.getAttribute("value"))
+
+ if not len(color):
+ raise ("need color and name, got %s %s" % (name, color))
+
+ colorNames[name] = parseColor(color)
+
+ for windowstyle in elementsWithTag(skin.childNodes, "windowstyle"):
+ style = eWindowStyleSkinned()
+
+ style.setTitleFont(gFont("Regular", 20));
+ style.setTitleOffset(eSize(20, 5));
+
+ for borderset in elementsWithTag(windowstyle.childNodes, "borderset"):
+ bsName = str(borderset.getAttribute("name"))
+ for pixmap in elementsWithTag(borderset.childNodes, "pixmap"):
+ bpName = str(pixmap.getAttribute("pos"))
+ filename = str(pixmap.getAttribute("filename"))
+
+ png = loadPixmap(resolveFilename(SCOPE_SKIN_IMAGE, filename))
+
+ # adapt palette
+ desktop.makeCompatiblePixmap(png.__deref__())
+ style.setPixmap(eWindowStyleSkinned.__dict__[bsName], eWindowStyleSkinned.__dict__[bpName], png.__deref__())
+
+ for color in elementsWithTag(windowstyle.childNodes, "color"):
+ type = str(color.getAttribute("name"))
+ color = parseColor(color.getAttribute("color"))
+
+ try:
+ style.setColor(eWindowStyleSkinned.__dict__["col" + type], color)
+ except:
+ raise ("Unknown color %s" % (type))
+
+ x = eWindowStyleManagerPtr()
+ eWindowStyleManager.getInstance(x)
+ x.setStyle(style)
+
+def loadSkinData(desktop):
+ for dom_skin in dom_skins:
+ loadSingleSkinData(desktop, dom_skin)
+
+def lookupScreen(name):
+ for dom_skin in dom_skins:
+ # first, find the corresponding screen element
+ skin = dom_skin.childNodes[0]
+ for x in elementsWithTag(skin.childNodes, "screen"):
+ if x.getAttribute('name') == name:
+ return x
+ return None
+
+def readSkin(screen, skin, name, desktop):
+ myscreen = lookupScreen(name)
+
+ # otherwise try embedded skin
+ myscreen = myscreen or getattr(screen, "parsedSkin", None)