Mercurial > pyntnclick
diff pyntnclick/engine.py @ 619:d9d1a9c4b833 pyntnclick
Add ScreenEvents.
author | Simon Cross <hodgestar+bzr@gmail.com> |
---|---|
date | Sat, 11 Feb 2012 21:40:36 +0200 |
parents | cfc16ded7b34 |
children | 660ef5793886 |
line wrap: on
line diff
--- a/pyntnclick/engine.py Sat Feb 11 21:40:51 2012 +0200 +++ b/pyntnclick/engine.py Sat Feb 11 21:40:36 2012 +0200 @@ -36,6 +36,9 @@ return elif ScreenChangeEvent.matches(ev): self.set_screen(ev.screen_name) + elif ScreenEvent.matches(ev): + self.screens[ev.screen_name].process_event(ev.event_name, + ev.data) else: self._screen.dispatch(ev) surface = pygame.display.get_surface() @@ -94,6 +97,12 @@ def change_screen(self, new_screen_name): ScreenChangeEvent.post(new_screen_name) + def screen_event(self, screen_name, event_name, data=None): + ScreenEvent.post(screen_name, event_name, data) + + def process_event(self, event_name, data): + pass + class UserEvent(object): """A user event type allowing subclassing, @@ -119,3 +128,13 @@ @classmethod def post(cls, screen_name): super(ScreenChangeEvent, cls).post(screen_name=screen_name) + + +class ScreenEvent(UserEvent): + + TYPE = "SCREEN_EVENT" + + @classmethod + def post(cls, screen_name, event_name, data): + super(ScreenEvent, cls).post(screen_name=screen_name, + event_name=event_name, data=data)