Mercurial > nagslang
comparison nagslang/widgets/text.py @ 33:d9b65cf72db4
Prettier resource loading module
author | Stefano Rivera <stefano@rivera.za.net> |
---|---|
date | Sun, 01 Sep 2013 16:44:04 +0200 |
parents | 58505d3482b6 |
children | 40f618978c00 |
comparison
equal
deleted
inserted
replaced
32:0e49648f8d74 | 33:d9b65cf72db4 |
---|---|
1 import pygame | |
2 | |
3 from nagslang.constants import FONT, FONT_SIZE | 1 from nagslang.constants import FONT, FONT_SIZE |
4 from nagslang.data import filepath | |
5 from nagslang.widgets.base import Widget | 2 from nagslang.widgets.base import Widget |
6 from nagslang.utils import convert_colour | 3 from nagslang.utils import convert_colour |
4 from nagslang.resources import resources | |
7 | 5 |
8 | 6 |
9 class TextWidget(Widget): | 7 class TextWidget(Widget): |
10 fonts = {} | |
11 | |
12 def __init__(self, pos, text, size=None, fontname=None, fontsize=None, | 8 def __init__(self, pos, text, size=None, fontname=None, fontsize=None, |
13 colour=None): | 9 colour=None): |
14 super(TextWidget, self).__init__(pos, size) | 10 super(TextWidget, self).__init__(pos, size) |
15 | 11 |
16 self.text = text | 12 self.text = text |
19 self.colour = convert_colour(colour or (0, 0, 0)) | 15 self.colour = convert_colour(colour or (0, 0, 0)) |
20 | 16 |
21 self.prepare() | 17 self.prepare() |
22 | 18 |
23 def prepare(self): | 19 def prepare(self): |
24 font = (self.fontname, self.fontsize) | 20 self.font = resources.get_font(self.fontname, self.fontsize) |
25 if font not in TextWidget.fonts: | |
26 fn = filepath('fonts/' + self.fontname) | |
27 TextWidget.fonts[font] = pygame.font.Font(fn, self.fontsize) | |
28 self.font = TextWidget.fonts[font] | |
29 self.surface = self.font.render(self.text, True, self.colour) | 21 self.surface = self.font.render(self.text, True, self.colour) |
30 self.text_rect = self.surface.get_rect() | 22 self.text_rect = self.surface.get_rect() |
31 if not self.size: | 23 if not self.size: |
32 self.rect.size = self.text_rect.size | 24 self.rect.size = self.text_rect.size |
33 | 25 |