Scenes get a Container for widgets
[naja.git] / naja / widgets / base.py
index b922b62280a595d61b1e422685add1b87ba9ad6a..6b86a870f5adadbb518ed4fc4caae837ccce7650 100644 (file)
@@ -11,13 +11,37 @@ class Widget(object):
     def rect(self):
         return pygame.Rect(self.pos, self.size)
 
+    def render(self, surface):
+        if not self._prepared:
+            self.prepare()
+            self._prepared = True
+        self.draw(surface)
+
     def draw(self, surface):
         raise NotImplemented()
 
     def prepare(self):
-        if not self._prepared:
-            self._prepare()
-            self._prepared = True
-
-    def _prepare(self):
         raise NotImplemented()
+
+    def handle_event(self, ev):
+        return False
+
+
+class Container(object):
+    def __init__(self, *widgets):
+        self.widgets = []
+        for widget in widgets:
+            self.add(widget)
+
+    def add(self, widget):
+        self.widgets.append(widget)
+
+    def render(self, surface):
+        for widget in self.widgets:
+            widget.render(surface)
+
+    def handle_event(self, ev):
+        for widget in self.widgets:
+            if widget.handle_event(ev):
+                return True
+        return False