from Tools.Import import my_import
import os
+from Components.config import ConfigSubsection, configElement, configText, config
+from Components.Element import Element
+from Components.Converter.Converter import Converter
+
from Tools.XMLTools import elementsWithTag, mergeText
colorNames = dict()
from Tools.Directories import resolveFilename, SCOPE_SKIN, SCOPE_SKIN_IMAGE, SCOPE_FONTS
-class SkinError(str):
- pass
+class SkinError(Exception):
+ def __init__(self, message):
+ self.message = message
+
+ def __str__(self):
+ return self.message
dom_skins = [ ]
# so the first screen found will be used.
# example: loadSkin("nemesis_greenline/skin.xml")
-loadSkin('skin.xml')
+config.skin = ConfigSubsection()
+config.skin.primary_skin = configElement("config.skin.primary_skin", configText, "skin.xml", 0)
+
+try:
+ loadSkin(config.skin.primary_skin.value)
+except SkinError, err:
+ print "SKIN ERROR:", err
+ print "defaulting to standard skin..."
+ loadSkin('skin.xml')
loadSkin('skin_default.xml')
def parsePosition(str):
elif attrib == 'title':
guiObject.setTitle(_(value))
elif attrib == 'text':
- guiObject.setText(value)
+ guiObject.setText(_(value))
elif attrib == 'font':
guiObject.setFont(parseFont(value))
elif attrib == 'zPosition':
for windowstyle in elementsWithTag(skin.childNodes, "windowstyle"):
style = eWindowStyleSkinned()
+ id = int(windowstyle.getAttribute("id") or "0")
# defaults
font = gFont("Regular", 20)
x = eWindowStyleManagerPtr()
eWindowStyleManager.getInstance(x)
- x.setStyle(style)
+ x.setStyle(id, style)
def loadSkinData(desktop):
skins = dom_skins[:]
for converter in elementsWithTag(widget.childNodes, "convert"):
ctype = converter.getAttribute('type')
- assert ctype
- converter_class = my_import('.'.join(["Components", "Converter", ctype])).__dict__.get(ctype)
+ assert ctype, "'convert'-tag needs a 'type'-attribute"
parms = mergeText(converter.childNodes).strip()
- c = converter_class(parms)
+ converter_class = my_import('.'.join(["Components", "Converter", ctype])).__dict__.get(ctype)
+
+ c = None
- c.connect(source)
+ for i in source.downstream_elements:
+ if isinstance(i, converter_class) and i.converter_arguments == parms:
+ c = i
+
+ if c is None:
+ print "allocating new converter!"
+ c = converter_class(parms)
+ c.connect(source)
+ else:
+ print "reused conveter!"
+
source = c
renderer_class = my_import('.'.join(["Components", "Renderer", wrender])).__dict__.get(wrender)