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