refs bug #429
[enigma2.git] / lib / python / Components / Label.py
index c4efcda4753b3fd0165620d3196d8e34d2239140..49e94e6e34ed5c6e5b1f0936fd6c2d2ede0df3d5 100644 (file)
@@ -1,12 +1,12 @@
-from HTMLComponent import *
-from GUIComponent import *
-from VariableText import *
-
-from ConditionalWidget import *
+from HTMLComponent import HTMLComponent
+from GUIComponent import GUIComponent
+from VariableText import VariableText
+from skin import parseColor
+from ConditionalWidget import ConditionalWidget, BlinkingWidget, BlinkingWidgetConditional
 
 from enigma import eLabel
 
-class Label(HTMLComponent, GUIComponent, VariableText):
+class Label(VariableText, HTMLComponent, GUIComponent):
        def __init__(self, text=""):
                GUIComponent.__init__(self)
                VariableText.__init__(self)
@@ -17,20 +17,75 @@ class Label(HTMLComponent, GUIComponent, VariableText):
                return self.getText()
 
 # GUI:
-       def createWidget(self, parent):
-               return eLabel(parent)
-       
+       GUI_WIDGET = eLabel
+
        def getSize(self):
                s = self.instance.calculateSize()
                return (s.width(), s.height())
 
-       def show(self):
-               self.instance.show()
-
-       def hide(self):
-               self.instance.hide()
-
-class LabelConditional(ConditionalWidget, Label):
+class LabelConditional(Label, ConditionalWidget):
        def __init__(self, text = "", withTimer = True):
                ConditionalWidget.__init__(self, withTimer = withTimer)
-               Label.__init__(self, text = text)
\ No newline at end of file
+               Label.__init__(self, text = text)
+               
+class BlinkingLabel(Label, BlinkingWidget):
+       def __init__(self, text = ""):
+               Label.__init__(text = text)
+               BlinkingWidget.__init__()
+
+class BlinkingLabelConditional(BlinkingWidgetConditional, LabelConditional):
+       def __init__(self, text = ""):
+               LabelConditional.__init__(self, text = text)
+               BlinkingWidgetConditional.__init__(self)
+
+class MultiColorLabel(Label):
+       def __init__(self, text=""):
+               Label.__init__(self,text)
+               self.foreColors = []
+               self.backColors = []
+
+       def applySkin(self, desktop, screen):
+               if self.skinAttributes is not None:
+                       foregroundColor = None
+                       backgroundColor = None
+                       attribs = [ ]
+                       for (attrib, value) in self.skinAttributes:
+                               if attrib == "foregroundColors":
+                                       colors = value.split(',')
+                                       for color in colors:
+                                               self.foreColors.append(parseColor(color))
+                                       if not foregroundColor:
+                                               foregroundColor = colors[0]
+                               elif attrib == "backgroundColors":
+                                       colors = value.split(',')
+                                       for color in colors:
+                                               self.backColors.append(parseColor(color))
+                                       if not backgroundColor:
+                                               backgroundColor = colors[0]
+                               elif attrib == "backgroundColor":
+                                       backgroundColor = value
+                               elif attrib == "foregroundColor":
+                                       foregroundColor = value
+                               else:
+                                       attribs.append((attrib,value))
+                       if foregroundColor:
+                               attribs.append(("foregroundColor",foregroundColor))
+                       if backgroundColor:
+                               attribs.append(("backgroundColor",backgroundColor))
+                       self.skinAttributes = attribs
+               return GUIComponent.applySkin(self, desktop, screen)
+       
+       def setForegroundColorNum(self, x):
+               if self.instance:
+                       if len(self.foreColors) > x:
+                               self.instance.setForegroundColor(self.foreColors[x])
+                       else:
+                               print "setForegroundColorNum(%d) failed! defined colors:" %(x), self.foreColors
+
+       def setBackgroundColorNum(self, x):
+               if self.instance:
+                       if len(self.backColors) > x:
+                               self.instance.setBackgroundColor(self.backColors[x])
+                       else:
+                               print "setBackgroundColorNum(%d) failed! defined colors:" %(x), self.backColors
+