except:
None
+from Tools.Directories import resolveFilename, SCOPE_SKIN
+
# read the skin
-try:
- # first we search in the current path
- skinfile = file('data/skin.xml', 'r')
-except:
- # if not found in the current path, we use the global datadir-path
- skinfile = file('/usr/share/enigma2/skin.xml', 'r')
+skinfile = file(resolveFilename(SCOPE_SKIN, 'skin.xml'), 'r')
dom = xml.dom.minidom.parseString(skinfile.read())
skinfile.close()
elif attrib == 'zPosition':
guiObject.setZPosition(int(value))
elif attrib == "pixmap":
- ptr = gPixmapPtr()
- if loadPNG(ptr, value):
- raise "loading PNG failed!"
- x = ptr
- ptr = ptr.__deref__()
- desktop.makeCompatiblePixmap(ptr)
- guiObject.setPixmap(ptr)
+ ptr = loadPNG(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(
guiObject.setBackgroundColor(parseColor(value))
elif attrib == "foregroundColor":
guiObject.setForegroundColor(parseColor(value))
+ elif attrib == "selectionDisabled":
+ guiObject.setSelectionEnable(0)
+ elif attrib == "transparent":
+ guiObject.setTransparent(int(value))
+ elif attrib == "borderColor":
+ guiObject.setBorderColor(parseColor(value))
+ elif attrib == "borderWidth":
+ guiObject.setBorderWidth(int(value))
+ elif attrib == "scrollbarMode":
+ guiObject.setScrollbarMode(
+ { "showOnDemand": guiObject.showOnDemand,
+ "showAlways": guiObject.showAlways,
+ "showNever": guiObject.showNever
+ }[value])
+ elif attrib == "enableWrapAround":
+ guiObject.setWrapAround(True)
+ elif attrib == "pointer":
+ (name, pos) = value.split(':')
+ pos = parsePosition(pos)
+ ptr = loadPNG(name)
+ desktop.makeCompatiblePixmap(ptr.__deref__())
+ guiObject.setPointer(ptr.__deref__(), pos)
elif attrib != 'name':
print "unsupported attribute " + attrib + "=" + value
except int:
def loadSkin(desktop):
print "loading skin..."
- def getPNG(x):
- g = gPixmapPtr()
- loadPNG(g, x)
- g = g.grabRef()
- return g
-
skin = dom.childNodes[0]
assert skin.tagName == "skin", "root element in skin must be 'skin'!"
for windowstyle in elementsWithTag(skin.childNodes, "windowstyle"):
style = eWindowStyleSkinned()
- style.setTitleFont(gFont("Arial", 20));
+ style.setTitleFont(gFont("Regular", 20));
style.setTitleOffset(eSize(20, 5));
for borderset in elementsWithTag(windowstyle.childNodes, "borderset"):
bpName = str(pixmap.getAttribute("pos"))
filename = str(pixmap.getAttribute("filename"))
- png = getPNG(filename)
+ png = loadPNG(filename)
# adapt palette
- desktop.makeCompatiblePixmap(png)
- style.setPixmap(eWindowStyleSkinned.__dict__[bsName], eWindowStyleSkinned.__dict__[bpName], png)
+ 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"))
myscreen = x
del skin
- if myscreen is None:
- # try embedded skin
- print screen.__dict__
- if "parsedSkin" in screen.__dict__:
- myscreen = screen.parsedSkin
- elif "skin" in screen.__dict__:
- myscreen = screen.parsedSkin = xml.dom.minidom.parseString(screen.skin).childNodes[0]
+ # try embedded skin
+ myscreen = myscreen or getattr(screen, "parsedSkin", None)
+
+ # try uncompiled embedded skin
+ if myscreen is None and getattr(screen, "skin", None):
+ myscreen = screen.parsedSkin = xml.dom.minidom.parseString(screen.skin).childNodes[0]
assert myscreen is not None, "no skin for screen '" + name + "' found!"