comparison 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
comparison
equal deleted inserted replaced
618:1a8dceccd98e 619:d9d1a9c4b833
34 for ev in events: 34 for ev in events:
35 if ev.type == QUIT: 35 if ev.type == QUIT:
36 return 36 return
37 elif ScreenChangeEvent.matches(ev): 37 elif ScreenChangeEvent.matches(ev):
38 self.set_screen(ev.screen_name) 38 self.set_screen(ev.screen_name)
39 elif ScreenEvent.matches(ev):
40 self.screens[ev.screen_name].process_event(ev.event_name,
41 ev.data)
39 else: 42 else:
40 self._screen.dispatch(ev) 43 self._screen.dispatch(ev)
41 surface = pygame.display.get_surface() 44 surface = pygame.display.get_surface()
42 self._screen.draw(surface) 45 self._screen.draw(surface)
43 flip() 46 flip()
92 dialog.grab_focus() 95 dialog.grab_focus()
93 96
94 def change_screen(self, new_screen_name): 97 def change_screen(self, new_screen_name):
95 ScreenChangeEvent.post(new_screen_name) 98 ScreenChangeEvent.post(new_screen_name)
96 99
100 def screen_event(self, screen_name, event_name, data=None):
101 ScreenEvent.post(screen_name, event_name, data)
102
103 def process_event(self, event_name, data):
104 pass
105
97 106
98 class UserEvent(object): 107 class UserEvent(object):
99 """A user event type allowing subclassing, 108 """A user event type allowing subclassing,
100 to provide an infinate number of user-defined events 109 to provide an infinate number of user-defined events
101 """ 110 """
117 TYPE = "SCREEN_CHANGE" 126 TYPE = "SCREEN_CHANGE"
118 127
119 @classmethod 128 @classmethod
120 def post(cls, screen_name): 129 def post(cls, screen_name):
121 super(ScreenChangeEvent, cls).post(screen_name=screen_name) 130 super(ScreenChangeEvent, cls).post(screen_name=screen_name)
131
132
133 class ScreenEvent(UserEvent):
134
135 TYPE = "SCREEN_EVENT"
136
137 @classmethod
138 def post(cls, screen_name, event_name, data):
139 super(ScreenEvent, cls).post(screen_name=screen_name,
140 event_name=event_name, data=data)