changeset 237:6995dbefdbfb

Add multiline widget
author Neil Muller <drnlmuller@gmail.com>
date Wed, 04 Sep 2013 22:06:55 +0200
parents 261fd65a8816
children 28d906fc2ab1
files nagslang/widgets/text.py
diffstat 1 files changed, 22 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/nagslang/widgets/text.py	Wed Sep 04 21:32:55 2013 +0200
+++ b/nagslang/widgets/text.py	Wed Sep 04 22:06:55 2013 +0200
@@ -1,7 +1,7 @@
+from nagslang.constants import FONT, FONT_SIZE
+from nagslang.widgets.base import Widget
 import pygame
 
-from nagslang.constants import FONT, FONT_SIZE
-from nagslang.widgets.base import Widget
 from nagslang.utils import convert_colour
 from nagslang.resources import resources
 
@@ -31,6 +31,26 @@
             surface.blit(self.surface, self.rect)
 
 
+class MultiLineWidget(TextWidget):
+
+    def prepare(self):
+        self.font = resources.get_font(self.fontname, self.fontsize)
+        surfaces = []
+        height = 0
+        width = 0
+        for line in self.text.split('\n'):
+            surface = self.font.render(line, True, self.colour)
+            width = max(width, surface.get_rect().width)
+            height += surface.get_rect().height
+            surfaces.append(surface)
+        self.surface = pygame.surface.Surface((width, height))
+        self.surface.fill(pygame.Color('white'))
+        y = 0
+        for surface in surfaces:
+            self.surface.blit(surface, (0, y))
+            y += surface.get_rect().height
+
+
 class LabelWidget(TextWidget):
     def __init__(self, *args, **kwargs):
         self.padding = kwargs.pop('padding', 5)