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