changeset 6:a27d2093991c

Checkpoint
author "David Bryant <bagnose@gmail.com>"
date Sat, 11 Jul 2009 20:44:14 +0930
parents 8a39b13cd3e6
children 936feb16eed4
files tk/events.d tk/gtk_support.d tk/types.d tool_stack.d
diffstat 4 files changed, 28 insertions(+), 101 deletions(-) [+]
line wrap: on
line diff
--- a/tk/events.d	Fri Jul 10 18:19:16 2009 +0930
+++ b/tk/events.d	Sat Jul 11 20:44:14 2009 +0930
@@ -26,8 +26,8 @@
 }
 
 abstract class InputEvent : Event {
-    this(in Mask mask) {
-        mMask = new Mask(mask);
+    this(Mask mask) {
+        mMask = mask;
     }
 
     const(Mask) mask() const { return mMask; }
@@ -66,7 +66,7 @@
 }
 
 abstract class PointerEvent : InputEvent {
-    this(in Point screen_point, in Point model_point, in Mask mask) {
+    this(in Point screen_point, in Point model_point, Mask mask) {
         super(mask);
         mScreenPoint = screen_point;
         mModelPoint = model_point;
@@ -108,7 +108,7 @@
 final class MotionEvent : PointerEvent {
     this(in Point screen_point,
          in Point model_point,
-         in Mask mask) {
+         Mask mask) {
         super(screen_point, model_point, mask);
     }
 
@@ -121,7 +121,7 @@
     this(in ScrollDirection scroll_direction,
          in Point screen_point,
          in Point model_point,
-         in Mask mask) {
+         Mask mask) {
         super(screen_point, model_point, mask);
         mScrollDirection = scroll_direction;
     }
--- a/tk/gtk_support.d	Fri Jul 10 18:19:16 2009 +0930
+++ b/tk/gtk_support.d	Sat Jul 11 20:44:14 2009 +0930
@@ -32,6 +32,7 @@
     }
 }
 
+/*
 Mask gtk2tk_mask(gdk.Event.guint state) {
     auto mask = new Mask();
 
@@ -45,6 +46,21 @@
 
     return mask;
 }
+*/
+
+Mask gtk2tk_mask(gdk.Event.guint state) {
+    Modifier[] modifiers;
+
+    if (state & gdk.Event.GdkModifierType.SHIFT_MASK)   modifiers ~= Modifier.SHIFT;
+    if (state & gdk.Event.GdkModifierType.CONTROL_MASK) modifiers ~= Modifier.CONTROL;
+    if (state & gdk.Event.GdkModifierType.MOD1_MASK)    modifiers ~= Modifier.ALT;
+    if (state & gdk.Event.GdkModifierType.MOD2_MASK)    modifiers ~= Modifier.META;
+    if (state & gdk.Event.GdkModifierType.BUTTON1_MASK) modifiers ~= Modifier.BUTTON_1;
+    if (state & gdk.Event.GdkModifierType.BUTTON2_MASK) modifiers ~= Modifier.BUTTON_2;
+    if (state & gdk.Event.GdkModifierType.BUTTON3_MASK) modifiers ~= Modifier.BUTTON_3;
+
+    return new Mask(modifiers);
+}
 
 ScrollDirection gtk2tk_direction(gdk.Event.ScrollDirection direction) {
     switch (direction) {
--- a/tk/types.d	Fri Jul 10 18:19:16 2009 +0930
+++ b/tk/types.d	Sat Jul 11 20:44:14 2009 +0930
@@ -4,94 +4,6 @@
 private import std.typecons;
 private import std.algorithm;
 
-      /*
-enum ButtonPress {
-    SINGLE,
-    DOUBLE,
-    TRIPLE,
-    RELEASE
-}
-
-string toString(in ButtonPress bp) {
-    switch (bp) {
-    case ButtonPress.SINGLE:  return "SINGLE";
-    case ButtonPress.DOUBLE:  return "DOUBLE";
-    case ButtonPress.TRIPLE:  return "TRIPLE";
-    case ButtonPress.RELEASE: return "RELEASE";
-    default:                  return std.string.format("<UNKNOWN ButtonPress: %s>", bp);
-    }
-}
-
-enum ButtonNumber {
-    BUTTON_1,
-    BUTTON_2,
-    BUTTON_3,
-    BUTTON_4,
-    BUTTON_5,
-}
-
-string toString(in ButtonNumber bn) {
-    switch (bn) {
-    case ButtonNumber.BUTTON_1: return "BUTTON_1";
-    case ButtonNumber.BUTTON_2: return "BUTTON_2";
-    case ButtonNumber.BUTTON_3: return "BUTTON_3";
-    case ButtonNumber.BUTTON_4: return "BUTTON_4";
-    case ButtonNumber.BUTTON_5: return "BUTTON_5";
-    default:                    return std.string.format("<UNKNOWN ButtonNumber: %s>", bn);
-    }
-}
-
-enum ScrollDirection {
-    UP,
-    DOWN,
-    LEFT,
-    RIGHT
-}
-
-string toString(in ScrollDirection sd) {
-    switch (sd) {
-    case ScrollDirection.UP:    return "UP";
-    case ScrollDirection.DOWN:  return "DOWN";
-    case ScrollDirection.LEFT:  return "LEFT";
-    case ScrollDirection.RIGHT: return "RIGHT";
-    default:                    return std.string.format("<UNKNOWN ScrollDirection: %s>", sd);
-    }
-}
-
-enum Modifier {
-    SHIFT,
-    CAPS_LOCK,
-    CONTROL,
-    ALT,
-    NUM_LOCK,
-    META,
-    SCROLL_LOCK,
-    BUTTON_1,
-    BUTTON_2,
-    BUTTON_3,
-    BUTTON_4,
-    BUTTON_5
-}
-
-string toString(in Modifier m) {
-    switch (m) {
-    case Modifier.SHIFT:       return "SHIFT";
-    case Modifier.CAPS_LOCK:   return "CAPS_LOCK";
-    case Modifier.CONTROL:     return "CONTROL";
-    case Modifier.ALT:         return "ALT";
-    case Modifier.NUM_LOCK:    return "NUM_LOCK";
-    case Modifier.META:        return "META";
-    case Modifier.SCROLL_LOCK: return "SCROLL_LOCK";
-    case Modifier.BUTTON_1:    return "BUTTON_1";
-    case Modifier.BUTTON_2:    return "BUTTON_2";
-    case Modifier.BUTTON_3:    return "BUTTON_3";
-    case Modifier.BUTTON_4:    return "BUTTON_4";
-    case Modifier.BUTTON_5:    return "BUTTON_5";
-    default:                   return std.string.format("<UNKNOWN Modifier: %s>", m);
-    }
-}
-*/
-
 mixin(defineEnum!("ButtonPress",
                   "SINGLE", "DOUBLE", "TRIPLE", "RELEASE"));
 mixin(defineEnum!("ButtonNumber",
@@ -102,15 +14,16 @@
                   "SHIFT", "CAPS_LOCK", "CONTROL", "ALT", "NUM_LOCK", "META",
                   "SCROLL_LOCK", "BUTTON_1", "BUTTON_2", "BUTTON_3", "BUTTON_4", "BUTTON_5"));
 
-struct Mask2 {
+class Mask {
     this(in Modifier[] modifiers) {
         _modifiers = modifiers.dup;
     }
 
-    string toString() const {
+    override string toString() const {
         string s;
 
         foreach (Modifier m; _modifiers) {
+            if (s != "") s ~= "|";
             s ~= enumToString(m);
         }
 
@@ -136,6 +49,7 @@
     }
 }
 
+/*
 class Mask {
     this() {
     }
@@ -151,10 +65,6 @@
     override string toString() const {
         Modifier m = Modifier.SHIFT;
         return enumToString(m);
-        /*
-        return format("Mask: %s", m);
-        */
-        //return format("%d", mBits);
     }
 
     private {
@@ -162,3 +72,4 @@
         int mBits;
     }
 }
+*/
--- a/tool_stack.d	Fri Jul 10 18:19:16 2009 +0930
+++ b/tool_stack.d	Sat Jul 11 20:44:14 2009 +0930
@@ -39,7 +39,7 @@
     override bool handle_scroll(ICanvas canvas, in ScrollEvent event) {
         writefln("%s", event);
 
-        if (event.mask.query(Modifier.CONTROL)) {
+        if (event.mask.is_set(Modifier.CONTROL)) {
             // Zoom about the pointer
             double zoom = 1.44;
 
@@ -55,7 +55,7 @@
             const double AMOUNT = 30.0;
             Vector v;
 
-            if (event.mask.query(Modifier.SHIFT)) {
+            if (event.mask.is_set(Modifier.SHIFT)) {
                 // left to right
                 v = Vector(AMOUNT, 0.0);
             }