when no listbox instance is available yet, index will be 0 when list is there, so...
[enigma2.git] / lib / python / Components / ScrollLabel.py
index 4a5caf6a3d251900ab17367247989ba3e4b315b1..aa5163b866e46788e621c37adcf413910a6e0eeb 100644 (file)
@@ -1,6 +1,6 @@
 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):
@@ -16,14 +16,15 @@ class ScrollLabel(HTMLComponent, GUIComponent):
                skin.applyAllAttributes(self.long_text, desktop, self.skinAttributes)
                s = self.long_text.size()
                self.instance.move(self.long_text.position())
-               self.scrollbar.move(ePoint(s.width()-20,0))
-               self.scrollbar.resize(eSize(20,s.height()))
-               self.scrollbar.setOrientation(eSlider.orVertical);
-               self.scrollbar.setRange(0,100)
                lineheight=fontRenderClass.getInstance().getLineHeight( self.long_text.getFont() )
                lines = (int)(s.height() / lineheight)
                self.pageHeight = (int)(lines * lineheight)
                self.instance.resize(eSize(s.width(), self.pageHeight+(int)(lineheight/6)))
+               self.scrollbar.move(ePoint(s.width()-20,0))
+               self.scrollbar.resize(eSize(20,self.pageHeight+(int)(lineheight/6)))
+               self.scrollbar.setOrientation(eSlider.orVertical);
+               self.scrollbar.setRange(0,100)
+               self.scrollbar.setBorderWidth(1)
                self.long_text.move(ePoint(0,0))
                self.long_text.resize(eSize(s.width()-30, self.pageHeight*16))
                self.setText(self.message)
@@ -49,6 +50,30 @@ class ScrollLabel(HTMLComponent, GUIComponent):
                                self.total = None
                                self.pages = None
 
+       def appendText(self, text):
+               old_text = self.getText()
+               if len(str(old_text)) >0:
+                       self.message += text
+               else:
+                       self.message = text
+               if self.long_text is not None:
+                       self.long_text.setText(self.message)
+                       text_height=self.long_text.calculateSize().height()
+                       total=self.pageHeight
+                       pages=1
+                       while total < text_height:
+                               total=total+self.pageHeight
+                               pages=pages+1
+                       if pages > 1:
+                               self.scrollbar.show()
+                               self.total = total
+                               self.pages = pages
+                               self.updateScrollbar()
+                       else:
+                               self.scrollbar.hide()
+                               self.total = None
+                               self.pages = None
+
        def updateScrollbar(self):
                start = -self.long_text.position().y() * 100 / self.total
                vis = self.pageHeight * 100 / self.total;
@@ -81,5 +106,12 @@ class ScrollLabel(HTMLComponent, GUIComponent):
                                self.long_text.move( ePoint( curPos.x(), curPos.y() - self.pageHeight ) )
                                self.updateScrollbar()
 
+       def lastPage(self):
+               i=1
+               while i < self.pages:
+                       self.pageDown()
+                       i += 1 
+                       self.updateScrollbar()
+
        def produceHTML(self):
                return self.getText()