annotate handler.d @ 0:e907d2c54ec3

Initial import
author David Bryant <daveb@acres.com.au>
date Wed, 13 May 2009 15:42:39 +0930
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
1 module handler;
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
2
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
3 import std.stdio;
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
4
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
5 private import icanvas;
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
6 private import tk.types;
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
7 private import tk.geometry;
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
8 private import tk.events;
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
9 //IToolStack
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
10 class ToolStack : ICanvasEventHandler {
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
11 override bool handle_button_press(ICanvas canvas, ButtonEvent event) {
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
12 writefln("%s", event);
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
13 return true;
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
14 }
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
15
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
16 override bool handle_button_release(ICanvas canvas, ButtonEvent event) {
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
17 writefln("%s", event);
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
18 return true;
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
19 }
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
20
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
21 override bool handle_key_press(ICanvas canvas, KeyEvent event) {
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
22 writefln("%s", event);
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
23 return true;
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
24 }
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
25
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
26 override bool handle_key_release(ICanvas canvas, KeyEvent event) {
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
27 writefln("%s", event);
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
28 return true;
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
29 }
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
30
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
31 override bool handle_motion(ICanvas canvas, MotionEvent event) {
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
32 writefln("%s", event);
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
33 return true;
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
34 }
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
35
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
36 override bool handle_scroll(ICanvas canvas, ScrollEvent event) {
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
37 writefln("%s", event);
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
38
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
39 if (event.mask.query(Modifier.CONTROL)) {
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
40 // Zoom about the pointer
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
41 double zoom = 1.44;
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
42
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
43 if (event.scroll_direction == ScrollDirection.DOWN) {
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
44 zoom = 1.0 / zoom;
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
45 }
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
46
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
47 canvas.rel_zoom(event.screen_point(), zoom);
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
48 }
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
49 else {
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
50 // Scroll
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
51
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
52 const double AMOUNT = 30.0;
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
53 Vector v;
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
54
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
55 if (event.mask.query(Modifier.SHIFT)) {
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
56 // left to right
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
57 v = new Vector(AMOUNT, 0.0);
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
58 }
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
59 else {
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
60 // down to up
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
61 v = new Vector(0.0, AMOUNT);
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
62 }
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
63
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
64 if (event.scroll_direction == ScrollDirection.UP) {
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
65 v = -v;
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
66 }
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
67
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
68 canvas.rel_pan(v);
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
69 }
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
70
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
71 return true;
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
72 }
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
73
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
74 /*
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
75 override void push(Tool tool) {
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
76 }
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
77
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
78 override void pop() {
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
79 }
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
80
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
81 override void replace(Tool tool) {
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
82 }
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
83
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
84 private {
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
85 Tool[] mTools;
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
86 }
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
87 */
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
88 };