From 3e67da39c881d9afc392162d802bc2ea4b0ec337 Mon Sep 17 00:00:00 2001 From: Felix Domke Date: Tue, 25 Jul 2006 00:02:23 +0000 Subject: [PATCH] try to reuse available converter --- skin.py | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/skin.py b/skin.py index 1aced44c..f13ec9ca 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 @@ -336,11 +338,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) -- 2.30.2