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):
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)