X-Git-Url: https://git.ctpug.org.za/?a=blobdiff_plain;f=naja%2Fwidgets%2Fbase.py;h=bda00a4b755a4c91b8738096a003b6e40f65aac9;hb=5ef59d0391e208e0ef9d4fa998b3a8e653cc57bf;hp=32ff46fa21811e3b99b61d84e6fbac8325cc2433;hpb=f4c61efe7a3154f965781ea65117583750d39d3e;p=naja.git diff --git a/naja/widgets/base.py b/naja/widgets/base.py index 32ff46f..bda00a4 100644 --- a/naja/widgets/base.py +++ b/naja/widgets/base.py @@ -12,13 +12,39 @@ class Widget(object): return pygame.Rect(self.pos, self.size) def render(self, surface): + '''Draw the widget onto surface''' if not self._prepared: self.prepare() self._prepared = True self.draw(surface) def draw(self, surface): + '''The overrideable bit of widget drawing''' raise NotImplemented() def prepare(self): - raise NotImplemented() + '''Prepare the widget for drawing. This usually caches a surface.''' + + def handle_event(self, ev): + '''Return True if the event has been handled''' + 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