X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/8e22df3af4a9ba076869de89f25b6f8adde29b49..51c90bed6c2721d067e9b577e5c42bd8094a401d:/skin.py diff --git a/skin.py b/skin.py index 1aced44c..c95d049d 100644 --- a/skin.py +++ b/skin.py @@ -5,6 +5,8 @@ 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 @@ -109,7 +111,7 @@ def applySingleAttribute(guiObject, desktop, attrib, value): 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': @@ -226,6 +228,7 @@ def loadSingleSkinData(desktop, dom_skin, path_prefix): for windowstyle in elementsWithTag(skin.childNodes, "windowstyle"): style = eWindowStyleSkinned() + id = int(windowstyle.getAttribute("id") or "0") # defaults font = gFont("Regular", 20) @@ -261,7 +264,7 @@ def loadSingleSkinData(desktop, dom_skin, path_prefix): x = eWindowStyleManagerPtr() eWindowStyleManager.getInstance(x) - x.setStyle(style) + x.setStyle(id, style) def loadSkinData(desktop): skins = dom_skins[:] @@ -336,11 +339,22 @@ def readSkin(screen, skin, name, desktop): for converter in elementsWithTag(widget.childNodes, "convert"): ctype = converter.getAttribute('type') assert ctype, "'convert'-tag needs a 'type'-attribute" - converter_class = my_import('.'.join(["Components", "Converter", ctype])).__dict__.get(ctype) 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)