+ print "illegal flag %s!" % f
+ def backgroundColor(self, value):
+ self.guiObject.setBackgroundColor(parseColor(value))
+ def backgroundColorSelected(self, value):
+ self.guiObject.setBackgroundColorSelected(parseColor(value))
+ def foregroundColor(self, value):
+ self.guiObject.setForegroundColor(parseColor(value))
+ def foregroundColorSelected(self, value):
+ self.guiObject.setForegroundColorSelected(parseColor(value))
+ def shadowColor(self, value):
+ self.guiObject.setShadowColor(parseColor(value))
+ def selectionDisabled(self, value):
+ self.guiObject.setSelectionEnable(0)
+ def transparent(self, value):
+ self.guiObject.setTransparent(int(value))
+ def borderColor(self, value):
+ self.guiObject.setBorderColor(parseColor(value))
+ def borderWidth(self, value):
+ self.guiObject.setBorderWidth(int(value))
+ def scrollbarMode(self, value):
+ self.guiObject.setScrollbarMode(
+ { "showOnDemand": self.guiObject.showOnDemand,
+ "showAlways": self.guiObject.showAlways,
+ "showNever": self.guiObject.showNever
+ }[value])
+ def enableWrapAround(self, value):
+ self.guiObject.setWrapAround(True)
+ def pointer(self, value):
+ (name, pos) = value.split(':')
+ pos = parsePosition(pos, self.scale)
+ ptr = loadPixmap(name, self.desktop)
+ self.guiObject.setPointer(0, ptr, pos)
+ def seek_pointer(self, value):
+ (name, pos) = value.split(':')
+ pos = parsePosition(pos, self.scale)
+ ptr = loadPixmap(name, self.desktop)
+ self.guiObject.setPointer(1, ptr, pos)
+ def shadowOffset(self, value):
+ self.guiObject.setShadowOffset(parsePosition(value, self.scale))
+ def noWrap(self, value):
+ self.guiObject.setNoWrap(1)
+ def id(self, value):
+ pass
+
+def applySingleAttribute(guiObject, desktop, attrib, value, scale = ((1,1),(1,1))):
+ # Someone still using applySingleAttribute?
+ AttributeParser(guiObject, desktop, scale).applyOne(attrib, value)
+
+def applyAllAttributes(guiObject, desktop, attributes, scale):
+ AttributeParser(guiObject, desktop, scale).applyAll(attributes)
+
+def loadSingleSkinData(desktop, skin, path_prefix):
+ """loads skin data like colors, windowstyle etc."""
+ assert skin.tag == "skin", "root element in skin must be 'skin'!"
+
+ #print "***SKIN: ", path_prefix
+
+ for c in skin.findall("output"):
+ id = c.attrib.get('id')
+ if id:
+ id = int(id)
+ else:
+ id = 0
+ if id == 0: # framebuffer
+ for res in c.findall("resolution"):
+ get_attr = res.attrib.get
+ xres = get_attr("xres")
+ if xres:
+ xres = int(xres)
+ else:
+ xres = 720
+ yres = get_attr("yres")
+ if yres:
+ yres = int(yres)
+ else:
+ yres = 576
+ bpp = get_attr("bpp")
+ if bpp:
+ bpp = int(bpp)
+ else:
+ bpp = 32
+ #print "Resolution:", xres,yres,bpp
+ from enigma import gMainDC
+ gMainDC.getInstance().setResolution(xres, yres)
+ desktop.resize(eSize(xres, yres))
+ if bpp != 32:
+ # load palette (not yet implemented)
+ pass
+
+ for c in skin.findall("colors"):
+ for color in c.findall("color"):
+ 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
+ else:
+ raise SkinError("need color and name, got %s %s" % (name, color))
+
+ for c in skin.findall("fonts"):
+ for font in c.findall("font"):
+ get_attr = font.attrib.get
+ filename = get_attr("filename", "<NONAME>")
+ name = get_attr("name", "Regular")
+ scale = get_attr("scale")
+ if scale:
+ scale = int(scale)
+ else:
+ scale = 100
+ is_replacement = get_attr("replacement") and True or False
+ resolved_font = resolveFilename(SCOPE_FONTS, filename, path_prefix=path_prefix)
+ if not fileExists(resolved_font): #when font is not available look at current skin path
+ skin_path = resolveFilename(SCOPE_CURRENT_SKIN, filename)
+ if fileExists(skin_path):
+ resolved_font = skin_path
+ addFont(resolved_font, name, scale, is_replacement)
+ #print "Font: ", resolved_font, name, scale, is_replacement
+
+ for alias in c.findall("alias"):
+ get = alias.attrib.get