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(VariableText, HTMLComponent, GUIComponent):
def __init__(self, text=""):
GUIComponent.__init__(self)
VariableText.__init__(self)
self.setText(text)
# html:
def produceHTML(self):
return self.getText()
# GUI:
GUI_WIDGET = eLabel
def getSize(self):
s = self.instance.calculateSize()
return (s.width(), s.height())
class LabelConditional(Label, ConditionalWidget):
def __init__(self, text = "", withTimer = True):
ConditionalWidget.__init__(self, withTimer = withTimer)
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