-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathwindow.py
36 lines (29 loc) · 1.12 KB
/
window.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import pygame, view
from view import *
from pygame import *
class Window(View):
def __init__(self, frame):
View.__init__(self, frame)
def should_process_responders(self, event, view):
if hasattr(event, 'pos'):
return view.frame.collidepoint(event.pos)
elif event.type == pygame.KEYDOWN:
return True
elif event.type == pygame.KEYUP:
return True
return False
def process_responders(self, event, view):
if self.should_process_responders(event, view):
responders = filter(lambda responder: responder.responds_to_event(event), view.event_responders)
for responder in responders:
if callable(responder.callback):
callback = responder.callback
else:
callback = getattr(view, responder.callback)
callback(event)
def send_event(self, event):
self.process_responders(event, self)
for subview in self.subviews:
self.process_responders(event, subview)
def refresh(self):
self.draw(self.bounds())