changeset 397:a08965437df2

Fold long text messages somewhat
author Neil Muller <drnlmuller@gmail.com>
date Sat, 07 Sep 2013 01:11:51 +0200
parents b3df20c76afd
children e36e6101b766
files nagslang/render.py
diffstat 1 files changed, 19 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/nagslang/render.py	Sat Sep 07 01:05:18 2013 +0200
+++ b/nagslang/render.py	Sat Sep 07 01:11:51 2013 +0200
@@ -1,4 +1,5 @@
 import math
+import textwrap
 
 import pygame
 import pygame.locals as pgl
@@ -6,7 +7,7 @@
 
 from nagslang.options import options
 from nagslang.utils import tile_surface
-from nagslang.widgets.text import LabelWidget
+from nagslang.widgets.text import LabelWidget, MultiLineWidget
 
 
 class Renderer(object):
@@ -184,8 +185,23 @@
             x += abs(display_offset[0])
         if display_offset[1] < 0:
             y += abs(display_offset[1])
-        self.widget.rect.topleft = (x, y)
-        self.widget.draw(surface)
+        if self.widget.rect.width > max_width - 40:
+            # Need to relayout the widget
+            factor = 2
+            while self.widget.rect.width > max_width - 40:
+                wrapped = '\n'.join(textwrap.wrap(self.text,
+                                                  len(self.text) // factor))
+                factor *= 2
+                self.widget = MultiLineWidget((20, 20), wrapped)
+                if self.widget.rect.width < 100:
+                    # safety valve
+                    break
+            self.widget.rect.topleft = (x, y)
+            self.widget.draw(surface)
+            # TODO: undo the mad folding
+        else:
+            self.widget.rect.topleft = (x, y)
+            self.widget.draw(surface)
 
 
 class TiledRenderer(Renderer):