comparison handler.d @ 0:e907d2c54ec3

Initial import
author David Bryant <daveb@acres.com.au>
date Wed, 13 May 2009 15:42:39 +0930
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:e907d2c54ec3
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 };