54 lines
1.4 KiB
Python
54 lines
1.4 KiB
Python
from GUI import Application, Window, Document, View, rgb, application
|
|
from testing import say
|
|
|
|
class TestDoc(Document):
|
|
|
|
color = rgb(0.5, 0.5, 0.5)
|
|
|
|
def set_color(self, c):
|
|
self.color = c
|
|
self.changed()
|
|
self.notify_views()
|
|
|
|
|
|
class TestDocView(View):
|
|
|
|
def draw(self, c, r):
|
|
r = self.viewed_rect()
|
|
#say("TestDocView.draw: viewed_rect =", r)
|
|
m = self.model
|
|
c.forecolor = m.color
|
|
c.fill_rect(self.viewed_rect())
|
|
|
|
def mouse_down(self, e):
|
|
l, t, r, b = self.viewed_rect()
|
|
x, y = e.position
|
|
red = float(x - l) / float(r - l)
|
|
green = float(r - x) / float(r - l)
|
|
blue = float(y - b) / float(t - b)
|
|
self.model.set_color(rgb(red, green, blue))
|
|
|
|
|
|
def test():
|
|
doc = TestDoc(title = "Document")
|
|
view = TestDocView(model = doc, size = (200, 200))
|
|
win = Window(resizable = 0, size = (200, 200))
|
|
win.add(view)
|
|
win.document = doc
|
|
#say(view.x, view.y, view.width, view.height)
|
|
win.show()
|
|
application().run()
|
|
|
|
instructions = """
|
|
There should be a window titled 'Document'.
|
|
|
|
Clicking in the window should cause it to be filled with a colour
|
|
that depends on the position of the click. On closing the window
|
|
or quitting the application, if the window has been clicked,
|
|
you should be asked whether to save changes. Cancelling should
|
|
prevent the close or quit.
|
|
"""
|
|
|
|
say(instructions)
|
|
test()
|