X-Git-Url: https://git.ctpug.org.za/?a=blobdiff_plain;f=naja%2Fwidgets%2Ftext.py;h=6862b968907ec7132a15bc1a01f509e63d446e45;hb=84c542f883e16a7f40c70e8a7096b92c063a0e7f;hp=7c1039ff4d2ef517f019c7d52b71f8a75c0149ea;hpb=f424aafdeb67094f1018fada3b67da2faa9dc811;p=naja.git diff --git a/naja/widgets/text.py b/naja/widgets/text.py index 7c1039f..6862b96 100644 --- a/naja/widgets/text.py +++ b/naja/widgets/text.py @@ -3,7 +3,7 @@ import pygame.locals as pgl from naja.constants import FONT, FONT_SIZE, EIGHT_BIT_SCALE, PALETTE, KEYS from naja.resources import resources -from naja.resources.mutators import EIGHT_BIT, blender +from naja.resources.mutators import EIGHT_BIT, R180, blender from naja.utils import convert_colour from naja.widgets.base import Widget @@ -40,7 +40,8 @@ class TextWidget(Widget): VIEW_PORT_DY = 50 def __init__(self, pos, text, fontname=None, fontsize=None, - colour=None, unselectable_colour=None, view_port=None): + colour=None, unselectable_colour=None, view_port=None, + centre=False): super(TextWidget, self).__init__(pos) self.text = text @@ -52,6 +53,8 @@ class TextWidget(Widget): self.unselectable_colour = unselectable_colour self.view_port = ( pygame.Rect((0, 0), view_port) if view_port is not None else None) + self.centre = centre + self.centre_pos = pos def render_line(self, text): colour = self.colour @@ -68,6 +71,9 @@ class TextWidget(Widget): self.size = self.view_port.size else: self.size = self.surface.get_rect().size + if self.centre: + self.pos = (self.centre_pos[0] - self.size[0] // 2, + self.centre_pos[1]) def prepare(self): self.font = resources.get_font(self.fontname, self.fontsize) @@ -98,6 +104,23 @@ class TextWidget(Widget): rect = self.pos area = self.view_port surface.blit(self.surface, rect, area) + if self.view_port is not None: + self.draw_arrows(surface) + + def draw_arrows(self, surface): + if self.view_port.top > 0: + up = resources.get_image('bits', 'arrow_on.png', + transforms=(EIGHT_BIT,)) + icon_size = up.get_rect().height + pos = (self.pos[0] + self.view_port.width - icon_size, self.pos[1]) + surface.blit(up, pos) + if self.view_port.bottom < self.surface.get_rect().bottom: + down = resources.get_image('bits', 'arrow_on.png', + transforms=(R180, EIGHT_BIT)) + icon_size = down.get_rect().height + pos = (self.pos[0] + self.view_port.width - icon_size, + self.pos[1] + self.view_port.height - icon_size) + surface.blit(down, pos) class TextBoxWidget(TextWidget): @@ -147,7 +170,7 @@ class TextBoxWidget(TextWidget): def _wrapped_lines(self, image_map): def words_fit(words): words_line = ' '.join(words) - width = self.font.size(words_line)[0] + width = self.font.size(words_line)[0] * EIGHT_BIT_SCALE if width < self.box_width: return True elif len(words) == 1: