# HG changeset patch # User Stefano Rivera # Date 1329062418 -7200 # Node ID fe7023750b20076365eb1373306015462f3f6645 # Parent 562f8133bb0792a60f88c6dd8ea32e3d0711ae9f Add convert_color function diff -r 562f8133bb07 -r fe7023750b20 pyntnclick/constants.py --- a/pyntnclick/constants.py Sun Feb 12 17:47:59 2012 +0200 +++ b/pyntnclick/constants.py Sun Feb 12 18:00:18 2012 +0200 @@ -31,8 +31,10 @@ label_padding = 10 label_border = 3 label_bg_color = (180, 180, 180, 220) - label_border_color = (0, 0, 0, 255) - disabled_color = (0x66, 0x66, 0x66, 255) + label_border_color = (0, 0, 0, 0xFF) + button_color = (0xFF, 0xFF, 0xFF, 0xFF) + button_bg_color = (0x66, 0x66, 0x66, 0xFF) + button_disabled_color = (0x66, 0x66, 0x66, 0xFF) # User event IDs: enter = 1 diff -r 562f8133bb07 -r fe7023750b20 pyntnclick/widgets/base.py --- a/pyntnclick/widgets/base.py Sun Feb 12 17:47:59 2012 +0200 +++ b/pyntnclick/widgets/base.py Sun Feb 12 18:00:18 2012 +0200 @@ -151,3 +151,12 @@ background.fill(pygame.Color('gray')) surface.blit(background, self.rect) super(Box, self).draw(surface) + + +def convert_color(color): + """Give me a pygame Color, dammit""" + if isinstance(color, pygame.Color): + return color + if isinstance(color, basestring): + return pygame.Color(color) + return pygame.Color(*color) diff -r 562f8133bb07 -r fe7023750b20 pyntnclick/widgets/text.py --- a/pyntnclick/widgets/text.py Sun Feb 12 17:47:59 2012 +0200 +++ b/pyntnclick/widgets/text.py Sun Feb 12 18:00:18 2012 +0200 @@ -1,7 +1,7 @@ import pygame from pygame.constants import SRCALPHA -from pyntnclick.widgets.base import Widget, Button +from pyntnclick.widgets.base import Widget, Button, convert_color class TextWidget(Widget): @@ -10,24 +10,14 @@ super(TextWidget, self).__init__(rect, gd) self.text = text constants = self.gd.constants - if fontname is None: - self.fontname = constants.font - else: - self.fontname = fontname - if fontsize is None: - self.fontsize = constants.font_size - else: - self.fontsize = fontsize - if color is None: - self.color = constants.text_color - else: - self.color = color + self.fontname = fontname or constants.font + self.fontsize = fontsize or constants.font_size + self.color = color or constants.text_color self.prepare() def prepare(self): self.font = self.resource.get_font(self.fontname, self.fontsize) - if not isinstance(self.color, pygame.Color): - self.color = pygame.Color(self.color) + self.color = convert_color(self.color) self.surface = self.font.render(self.text, True, self.color) self.text_rect = self.surface.get_rect() width, height = self.surface.get_rect().size @@ -43,13 +33,10 @@ constants = gd.constants self.padding = kwargs.pop('padding', constants.label_padding) self.border = kwargs.pop('border', constants.label_border) - self.bg_color = kwargs.pop('bg_color', constants.label_bg_color) - if not isinstance(self.bg_color, pygame.Color): - self.bg_color = pygame.Color(*self.bg_color) - self.border_color = kwargs.pop('border_color', - constants.label_border_color) - if not isinstance(self.border_color, pygame.Color): - self.border_color = pygame.Color(*self.border_color) + self.bg_color = convert_color( + kwargs.pop('bg_color', constants.label_bg_color)) + self.border_color = convert_color( + kwargs.pop('border_color', constants.label_border_color)) super(LabelWidget, self).__init__(rect, gd, *args, **kwargs) def prepare(self): @@ -76,10 +63,14 @@ constants = gd.constants self.padding = kwargs.pop('padding', constants.label_padding) self.border = kwargs.pop('border', constants.label_border) - self.disabled_color = kwargs.pop('disabled_color', - constants.disabled_color) - if not isinstance(self.disabled_color, pygame.Color): - self.disabled_color = pygame.Color(*self.disabled_color) + + kwargs['color'] = convert_color( + kwargs.pop('color', constants.button_color)) + self.disabled_color = convert_color( + kwargs.pop('disabled_color', constants.button_disabled_color)) + self.bg_color = convert_color( + kwargs.pop('bg_color', constants.button_bg_color)) + super(TextButton, self).__init__(rect, gd, *args, **kwargs) def prepare(self): @@ -93,11 +84,12 @@ self.rect.width = max(self.rect.width, width) self.rect.height = max(self.rect.height, height) self.surface = pygame.Surface(self.rect.size, SRCALPHA) - self.surface.fill(0) + self.surface.fill(self.bg_color) offset = ( (self.rect.width - width) / 2 + self.padding, (self.rect.height - height) / 2 + self.padding) self.surface.blit(text, text.get_rect().move(offset)) + if self.border: pygame.draw.rect(self.surface, color, self.surface.get_rect(), self.border)