- # and set attributes
- try:
- if attrib == 'position':
- guiObject.move(parsePosition(value))
- elif attrib == 'size':
- guiObject.resize(parseSize(value))
- elif attrib == 'title':
- guiObject.setTitle(value)
- elif attrib == 'font':
- guiObject.setFont(parseFont(value))
- elif attrib == "valign":
- try:
- guiObject.setVAlign(
- { "top": guiObject.alignTop,
- "center": guiObject.alignCenter,
- "bottom": guiObject.alignBottom
- }[value])
- except KeyError:
- print "valign must be either top, center or bottom!"
- elif attrib == "halign":
+ if skin_path_prefix and attrib in ["pixmap", "pointer"] and len(value) and value[0:2] == "~/":
+ value = skin_path_prefix + value[1:]
+
+ skinAttributes.append((attrib, value))
+
+def loadPixmap(path):
+ ptr = loadPNG(path)
+ if ptr is None:
+ raise "pixmap file %s not found!" % (path)
+ return ptr
+
+def applySingleAttribute(guiObject, desktop, attrib, value):
+ # and set attributes
+ try:
+ if attrib == 'position':
+ guiObject.move(parsePosition(value))
+ elif attrib == 'size':
+ guiObject.resize(parseSize(value))
+ elif attrib == 'title':
+ guiObject.setTitle(_(value))
+ elif attrib == 'text':
+ guiObject.setText(value)
+ elif attrib == 'font':
+ guiObject.setFont(parseFont(value))
+ elif attrib == 'zPosition':
+ guiObject.setZPosition(int(value))
+ elif attrib == "pixmap":
+ ptr = loadPixmap(resolveFilename(SCOPE_SKIN_IMAGE, value))
+ # that __deref__ still scares me!
+ desktop.makeCompatiblePixmap(ptr.__deref__())
+ guiObject.setPixmap(ptr.__deref__())
+ # guiObject.setPixmapFromFile(value)
+ elif attrib == "alphatest": # used by ePixmap
+ guiObject.setAlphatest(
+ { "on": True,
+ "off": False
+ }[value])
+ elif attrib == "orientation": # used by eSlider
+ try:
+ guiObject.setOrientation(
+ { "orVertical": guiObject.orVertical,
+ "orHorizontal": guiObject.orHorizontal
+ }[value])
+ except KeyError:
+ print "oprientation must be either orVertical or orHorizontal!"
+ elif attrib == "valign":
+ try:
+ guiObject.setVAlign(
+ { "top": guiObject.alignTop,
+ "center": guiObject.alignCenter,
+ "bottom": guiObject.alignBottom
+ }[value])
+ except KeyError:
+ print "valign must be either top, center or bottom!"
+ elif attrib == "halign":
+ try:
+ guiObject.setHAlign(
+ { "left": guiObject.alignLeft,
+ "center": guiObject.alignCenter,
+ "right": guiObject.alignRight,
+ "block": guiObject.alignBlock
+ }[value])
+ except KeyError:
+ print "halign must be either left, center, right or block!"
+ elif attrib == "flags":
+ flags = value.split(',')
+ for f in flags: