changeset 670:fe7023750b20 pyntnclick

Add convert_color function
author Stefano Rivera <stefano@rivera.za.net>
date Sun, 12 Feb 2012 18:00:18 +0200
parents 562f8133bb07
children b27b5c6c54e8
files pyntnclick/constants.py pyntnclick/widgets/base.py pyntnclick/widgets/text.py
diffstat 3 files changed, 32 insertions(+), 29 deletions(-) [+]
line wrap: on
line diff
--- 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
--- 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)
--- 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)