diff doodle/tk/events.d @ 28:1754cb773d41

Part-way through getting to compile with configure/builder.
author Graham St Jack <graham.stjack@internode.on.net>
date Sun, 02 Aug 2009 16:27:21 +0930
parents tk/events.d@c643c04e3f5e
children 157b4ad5615d
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doodle/tk/events.d	Sun Aug 02 16:27:21 2009 +0930
@@ -0,0 +1,122 @@
+module doodle.tk.events;
+
+public {
+    import doodle.tk.types;
+    import doodle.tk.geometry;
+}
+
+abstract class Event {
+    this(in Mask mask) {
+        mMask = mask;
+    }
+
+    Mask mask() const { return mMask; }
+
+    private {
+        Mask mMask;
+    }
+}
+
+final class CrossingEvent : Event {
+    this(in Mask mask) {
+        super(mask);
+    }
+
+    private {
+    }
+}
+
+final class KeyEvent : Event {
+    this(in string str, in uint value, in 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 : Event {
+    this(in Point pixel_point, in Point model_point, in Mask mask) {
+        super(mask);
+        mPixelPoint = pixel_point;
+        mModelPoint = model_point;
+    }
+
+    Point pixel_point() const { return mPixelPoint; }
+    Point model_point() const { return mModelPoint; }
+
+    private {
+        Point mPixelPoint;
+        Point mModelPoint;
+    }
+}
+
+final class ButtonEvent : PointerEvent {
+    this(in ButtonAction button_action,
+         in ButtonName button_name,
+         in Point pixel_point,
+         in Point model_point,
+         in Mask mask) {   
+        super(pixel_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),
+                                 mPixelPoint, 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 pixel_point,
+         in Point model_point,
+         in Mask mask) {
+        super(pixel_point, model_point, mask);
+    }
+
+    override string toString() const {
+        return std.string.format("Motion event: %s, %s, %s",
+                                 mPixelPoint, mModelPoint, mMask);
+    }
+}
+
+final class ScrollEvent : PointerEvent {
+    this(in ScrollDirection scroll_direction,
+         in Point pixel_point,
+         in Point model_point,
+         in Mask mask) {
+        super(pixel_point, model_point, mask);
+        mScrollDirection = scroll_direction;
+    }
+
+    override string toString() const {
+        return std.string.format("Scroll event: %s, %s, %s, %s",
+                                 enumToString(mScrollDirection), mPixelPoint, mModelPoint, mMask);
+    }
+
+    ScrollDirection scroll_direction() const { return mScrollDirection; }
+
+    private {
+        ScrollDirection mScrollDirection;
+    }
+}