translate text attribute for skin objects
[enigma2.git] / skin.py
diff --git a/skin.py b/skin.py
index 5a6408f3dd6ffef61237d93b907afb707a833ac1..ecd4355e28eb04fb6446da48465282b6e14cc861 100644 (file)
--- a/skin.py
+++ b/skin.py
@@ -4,6 +4,10 @@ from xml.dom import EMPTY_NAMESPACE
 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()
@@ -44,7 +48,15 @@ def loadSkin(name):
 # 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):
@@ -99,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':
@@ -325,12 +337,23 @@ def readSkin(screen, skin, name, desktop):
                        
                        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)