Mercurial > nagslang
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):