Display power usage per hour.
[tabakrolletjie.git] / tabakrolletjie / widgets.py
index ff854de1f70b140e0e58926a51a8deb2c7a05e05..2678e72c46cce18b390686ee079dda184ee1e56b 100644 (file)
@@ -6,14 +6,16 @@ import pygame.locals as pgl
 
 from .loader import loader
 from .constants import FONTS
+from .transforms import NullTransform
 
 
 class Button(object):
 
-    def __init__(self, size, pos=None, padding=10):
+    def __init__(self, size, name=None, pos=None, padding=10):
         self._size = size
         self._padding = padding
         self.position = pos
+        self.name = name
 
     @property
     def position(self):
@@ -50,10 +52,32 @@ class Button(object):
 
 class TextButton(Button):
 
-    def __init__(self, text, colour, pos=None, padding=10):
+    def __init__(self, text, colour, name=None, pos=None, padding=10):
         font = loader.load_font(FONTS['sans'], size=24)
         self._text = font.render(text, True, colour)
-        super(TextButton, self).__init__(self._text.get_size(), pos, padding)
+        super(TextButton, self).__init__(self._text.get_size(), name,
+                                         pos, padding)
 
     def render(self, surface):
         surface.blit(self._text, self._pos, None)
+
+
+class ImageButton(Button):
+
+    def __init__(self, *imgparts, **kwargs):
+        transform = kwargs.pop("transform", NullTransform())
+        self._img = kwargs.pop("image", None)
+        if self._img is None:
+            self._img = loader.load_image(*imgparts, transform=transform)
+        name = kwargs.get('name')
+        pos = kwargs.get('pos')
+        padding = kwargs.get('padding', 0)
+        super(ImageButton, self).__init__(self._img.get_size(), name,
+                                          pos, padding)
+
+    def update_image(self, *imgparts, **kwargs):
+        transform = kwargs.pop("transform", NullTransform())
+        self._img = loader.load_image(*imgparts, transform=transform)
+
+    def render(self, surface):
+        surface.blit(self._img, self._pos, None)