annotate mamba/widgets/base.py @ 23:d0e8940df703

Widgets -> base
author Stefano Rivera <stefano@rivera.za.net>
date Sun, 11 Sep 2011 14:06:58 +0200
parents
children 30d4f3e62bcf
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
23
d0e8940df703 Widgets -> base
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
1 import pygame
d0e8940df703 Widgets -> base
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
2
d0e8940df703 Widgets -> base
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
3
d0e8940df703 Widgets -> base
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
4 class Widget(object):
d0e8940df703 Widgets -> base
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
5
d0e8940df703 Widgets -> base
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
6 def __init__(self, rect):
d0e8940df703 Widgets -> base
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
7 self.rect = pygame.Rect(rect)
d0e8940df703 Widgets -> base
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
8
d0e8940df703 Widgets -> base
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
9 def do_event(self, event):
d0e8940df703 Widgets -> base
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
10 "Override me"
d0e8940df703 Widgets -> base
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
11 pass
d0e8940df703 Widgets -> base
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
12
d0e8940df703 Widgets -> base
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
13 def do_draw(self, surface):
d0e8940df703 Widgets -> base
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
14 "Override me"
d0e8940df703 Widgets -> base
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
15 pass
d0e8940df703 Widgets -> base
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
16
d0e8940df703 Widgets -> base
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
17
d0e8940df703 Widgets -> base
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
18 class Container(object):
d0e8940df703 Widgets -> base
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
19
d0e8940df703 Widgets -> base
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
20 def __init__(self):
d0e8940df703 Widgets -> base
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
21 self.children = []
d0e8940df703 Widgets -> base
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
22
d0e8940df703 Widgets -> base
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
23 def event(self, event):
d0e8940df703 Widgets -> base
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
24 for child in self.children:
d0e8940df703 Widgets -> base
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
25 # TODO mouse events
d0e8940df703 Widgets -> base
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
26 if issubclass(child, Container):
d0e8940df703 Widgets -> base
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
27 child.event(event)
d0e8940df703 Widgets -> base
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
28 else:
d0e8940df703 Widgets -> base
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
29 child.do_event(event)
d0e8940df703 Widgets -> base
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
30
d0e8940df703 Widgets -> base
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
31 def add(self, widget):
d0e8940df703 Widgets -> base
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
32 self.children.append(widget)
d0e8940df703 Widgets -> base
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
33
d0e8940df703 Widgets -> base
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
34 def draw(self, surface):
d0e8940df703 Widgets -> base
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
35 self.do_draw(surface)
d0e8940df703 Widgets -> base
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
36 for child in self.children:
d0e8940df703 Widgets -> base
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
37 if issubclass(child, Container):
d0e8940df703 Widgets -> base
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
38 child.draw(surface)
d0e8940df703 Widgets -> base
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
39 else:
d0e8940df703 Widgets -> base
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
40 child.do_draw(surface)