Mercurial > projects > doodle
view tool_stack.d @ 2:d6f44347373d
* Switched over to geometry done with structs instead of classes.
* Removed direct access to gtk structs
* Refactoring
author | David Bryant <daveb@acres.com.au> |
---|---|
date | Fri, 10 Jul 2009 15:15:27 +0930 |
parents | |
children | 7d57cae10805 |
line wrap: on
line source
module tool_stack; import std.stdio; private import icanvas; private import tk.types; private import tk.geometry2; private import tk.events; //IToolStack class ToolStack : ICanvasEventHandler { override bool handle_button_press(ICanvas canvas, ButtonEvent event) { writefln("%s", event); return true; } override bool handle_button_release(ICanvas canvas, ButtonEvent event) { writefln("%s", event); return true; } override bool handle_key_press(ICanvas canvas, KeyEvent event) { writefln("%s", event); return true; } override bool handle_key_release(ICanvas canvas, KeyEvent event) { writefln("%s", event); return true; } override bool handle_motion(ICanvas canvas, MotionEvent event) { writefln("%s", event); return true; } override bool handle_scroll(ICanvas canvas, ScrollEvent event) { writefln("%s", event); if (event.mask.query(Modifier.CONTROL)) { // Zoom about the pointer double zoom = 1.44; if (event.scroll_direction == ScrollDirection.DOWN) { zoom = 1.0 / zoom; } canvas.rel_zoom(event.screen_point(), zoom); } else { // Scroll const double AMOUNT = 30.0; Vector2 v; if (event.mask.query(Modifier.SHIFT)) { // left to right v = Vector2(AMOUNT, 0.0); } else { // down to up v = Vector2(0.0, AMOUNT); } if (event.scroll_direction == ScrollDirection.UP) { v = -v; } canvas.rel_pan(v); } return true; } /* override void push(Tool tool) { } override void pop() { } override void replace(Tool tool) { } private { Tool[] mTools; int mGrabbedToolIndex; // -1 for none } */ }