Scenes get a Container for widgets
[naja.git] / naja / widgets / base.py
1 import pygame
2
3
4 class Widget(object):
5     def __init__(self, pos, size=None):
6         self.pos = pos
7         self.size = size or (0, 0)
8         self._prepared = False
9
10     @property
11     def rect(self):
12         return pygame.Rect(self.pos, self.size)
13
14     def render(self, surface):
15         if not self._prepared:
16             self.prepare()
17             self._prepared = True
18         self.draw(surface)
19
20     def draw(self, surface):
21         raise NotImplemented()
22
23     def prepare(self):
24         raise NotImplemented()
25
26     def handle_event(self, ev):
27         return False
28
29
30 class Container(object):
31     def __init__(self, *widgets):
32         self.widgets = []
33         for widget in widgets:
34             self.add(widget)
35
36     def add(self, widget):
37         self.widgets.append(widget)
38
39     def render(self, surface):
40         for widget in self.widgets:
41             widget.render(surface)
42
43     def handle_event(self, ev):
44         for widget in self.widgets:
45             if widget.handle_event(ev):
46                 return True
47         return False