Mercurial > projects > doodle
view tk/events.d @ 8:bf7903435f58
Checkpoint
author | "David Bryant <bagnose@gmail.com>" |
---|---|
date | Sat, 11 Jul 2009 21:49:04 +0930 |
parents | 936feb16eed4 |
children | f0ade1b49fe7 |
line wrap: on
line source
module tk.events; import tk.types; import tk.geometry; // // Should we pass the screen and model points into // the events or pass a transform in separately to the handler // abstract class Event { this() { } private { } } final class ExposeEvent : Event { this() { super(); } private { } } abstract class InputEvent : Event { this(Mask mask) { mMask = mask; } const(Mask) mask() const { return mMask; } private { Mask mMask; } } final class CrossingEvent : InputEvent { this(Mask mask) { super(mask); } private { } } final class KeyEvent : InputEvent { this(string str, uint value, Mask mask) { super(mask); mStr = str; mValue = value; } string str() const { return mStr; } override string toString() const { return std.string.format("Key event: %s, %d, %s", mStr, mValue, mMask); } private { string mStr; uint mValue; } } abstract class PointerEvent : InputEvent { this(in Point screen_point, in Point model_point, Mask mask) { super(mask); mScreenPoint = screen_point; mModelPoint = model_point; } Point screen_point() const { return mScreenPoint; } Point model_point() const { return mModelPoint; } private { Point mScreenPoint; Point mModelPoint; } } final class ButtonEvent : PointerEvent { this(ButtonAction button_action, ButtonName button_name, Point screen_point, Point model_point, Mask mask) { super(screen_point, model_point, mask); mButtonAction = button_action; mButtonName = button_name; } override string toString() const { return std.string.format("Button event: %s, %s, %s, %s, %s", enumToString(mButtonAction), enumToString(mButtonName), mScreenPoint, mModelPoint, mMask); } ButtonAction button_action() const { return mButtonAction; } ButtonName button_name() const { return mButtonName; } private { ButtonAction mButtonAction; ButtonName mButtonName; } } final class MotionEvent : PointerEvent { this(in Point screen_point, in Point model_point, Mask mask) { super(screen_point, model_point, mask); } override string toString() const { return std.string.format("Motion event: %s, %s, %s", mScreenPoint, mModelPoint, mMask); } } final class ScrollEvent : PointerEvent { this(in ScrollDirection scroll_direction, in Point screen_point, in Point model_point, Mask mask) { super(screen_point, model_point, mask); mScrollDirection = scroll_direction; } override string toString() const { return std.string.format("Scroll event: %s, %s, %s, %s", enumToString(mScrollDirection), mScreenPoint, mModelPoint, mMask); } ScrollDirection scroll_direction() const { return mScrollDirection; } private { ScrollDirection mScrollDirection; } }