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()
# 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):
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.connect(source)
+ c = None
+
+ 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)