handle case of empty text
[enigma2.git] / lib / python / Components / ScrollLabel.py
index 85e176f635272ed9f6dcaf1163a9d38f18a7391b..253353bb4d5c120bcf863862e77391aee97fc1ec 100644 (file)
@@ -1,10 +1,11 @@
 import skin
 import skin
-from HTMLComponent import *
-from GUIComponent import *
+from HTMLComponent import HTMLComponent
+from GUIComponent import GUIComponent
 from enigma import eLabel, eWidget, eSlider, fontRenderClass, ePoint, eSize
 
 class ScrollLabel(HTMLComponent, GUIComponent):
        def __init__(self, text=""):
 from enigma import eLabel, eWidget, eSlider, fontRenderClass, ePoint, eSize
 
 class ScrollLabel(HTMLComponent, GUIComponent):
        def __init__(self, text=""):
+               GUIComponent.__init__(self)
                self.message = text
                self.instance = None
                self.long_text = None
                self.message = text
                self.instance = None
                self.long_text = None
@@ -13,10 +14,24 @@ class ScrollLabel(HTMLComponent, GUIComponent):
                self.total = None
 
        def applySkin(self, desktop):
                self.total = None
 
        def applySkin(self, desktop):
-               skin.applyAllAttributes(self.long_text, desktop, self.skinAttributes)
+               ret = False
+               if self.skinAttributes is not None:
+                       skin.applyAllAttributes(self.long_text, desktop, self.skinAttributes)
+                       widget_attribs = [ ]
+                       scrollbar_attribs = [ ]
+                       for (attrib, value) in self.skinAttributes:
+                               if attrib.find("borderColor") != -1 or attrib.find("borderWidth") != -1:
+                                       scrollbar_attribs.append((attrib,value))
+                               if attrib.find("transparent") != -1 or attrib.find("backgroundColor") != -1:
+                                       widget_attribs.append((attrib,value))
+                       skin.applyAllAttributes(self.instance, desktop, widget_attribs)
+                       skin.applyAllAttributes(self.scrollbar, desktop, scrollbar_attribs+widget_attribs)
+                       ret = True
                s = self.long_text.size()
                self.instance.move(self.long_text.position())
                lineheight=fontRenderClass.getInstance().getLineHeight( self.long_text.getFont() )
                s = self.long_text.size()
                self.instance.move(self.long_text.position())
                lineheight=fontRenderClass.getInstance().getLineHeight( self.long_text.getFont() )
+               if not lineheight:
+                       lineheight = 30 # assume a random lineheight if nothing is visible
                lines = (int)(s.height() / lineheight)
                self.pageHeight = (int)(lines * lineheight)
                self.instance.resize(eSize(s.width(), self.pageHeight+(int)(lineheight/6)))
                lines = (int)(s.height() / lineheight)
                self.pageHeight = (int)(lines * lineheight)
                self.instance.resize(eSize(s.width(), self.pageHeight+(int)(lineheight/6)))
@@ -28,10 +43,11 @@ class ScrollLabel(HTMLComponent, GUIComponent):
                self.long_text.move(ePoint(0,0))
                self.long_text.resize(eSize(s.width()-30, self.pageHeight*16))
                self.setText(self.message)
                self.long_text.move(ePoint(0,0))
                self.long_text.resize(eSize(s.width()-30, self.pageHeight*16))
                self.setText(self.message)
+               return ret
 
        def setText(self, text):
                self.message = text
 
        def setText(self, text):
                self.message = text
-               if self.long_text is not None:
+               if self.long_text is not None and self.pageHeight:
                        self.long_text.move(ePoint(0,0))
                        self.long_text.setText(self.message)
                        text_height=self.long_text.calculateSize().height()
                        self.long_text.move(ePoint(0,0))
                        self.long_text.setText(self.message)
                        text_height=self.long_text.calculateSize().height()