# HG changeset patch # User Neil Muller # Date 1378509111 -7200 # Node ID a08965437df2af188d8bfb12010f34f0cc503e9a # Parent b3df20c76afd1ea025f364604bed3fc15c695039 Fold long text messages somewhat diff -r b3df20c76afd -r a08965437df2 nagslang/render.py --- 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):