changeset 59:3cc917814579

Container subclasses Widget
author Stefano Rivera <stefano@rivera.za.net>
date Sun, 11 Sep 2011 16:33:50 +0200
parents 7fa000c4b3c7
children 848749c2804b
files mamba/engine.py mamba/widgets/base.py
diffstat 2 files changed, 14 insertions(+), 12 deletions(-) [+]
line wrap: on
line diff
--- a/mamba/engine.py	Sun Sep 11 16:21:36 2011 +0200
+++ b/mamba/engine.py	Sun Sep 11 16:33:50 2011 +0200
@@ -39,7 +39,7 @@
 
     def __init__(self):
         self.surface = pygame.Surface(SCREEN)
-        self.container = Container()
+        self.container = Container(pygame.Rect((0, 0), SCREEN))
 
     def on_enter(self):
         """Called when this becomes the current habitat."""
--- a/mamba/widgets/base.py	Sun Sep 11 16:21:36 2011 +0200
+++ b/mamba/widgets/base.py	Sun Sep 11 16:33:50 2011 +0200
@@ -16,28 +16,30 @@
     def add_callback(self, eventtype, callback, *args):
         self.callbacks[eventtype].append((callback, args))
 
-    def event(self, event):
-        for callback, args in self.callbacks[event.type]:
-            callback(event, self, *args)
+    def event(self, ev):
+        for callback, args in self.callbacks[ev.type]:
+            callback(ev, self, *args)
 
     def draw(self, surface):
         "Override me"
         pass
 
 
-class Container(object):
+class Container(Widget):
 
-    def __init__(self):
+    def __init__(self, rect):
+        super(Container, self).__init__(rect)
         self.children = []
 
-    def event(self, event):
-        if event.type in (MOUSEMOTION, MOUSEBUTTONUP, MOUSEBUTTONDOWN):
+    def event(self, ev):
+        if ev.type in (MOUSEMOTION, MOUSEBUTTONUP, MOUSEBUTTONDOWN):
             for child in self.children:
-                if child.rect.collidepoint(event.pos):
-                    child.event(event)
-        elif event.type == KEYDOWN:
+                if child.rect.collidepoint(ev.pos):
+                    child.event(ev)
+        if ev.type == KEYDOWN:
             for child in self.children:
-                child.event(event)
+                child.event(ev)
+        super(Container, self).event(ev)
 
     def add(self, widget):
         self.children.append(widget)