diff doodle/gtk/events.d @ 82:0314b2e03f9b

Moved gtk/conversions.d int gtk/events.d Nearly done with the housekeeping...
author "David Bryant <bagnose@gmail.com>"
date Mon, 16 Aug 2010 00:08:19 +0930
parents d92b9f04b1e8
children 752676232e4b
line wrap: on
line diff
--- a/doodle/gtk/events.d	Mon Aug 16 00:04:27 2010 +0930
+++ b/doodle/gtk/events.d	Mon Aug 16 00:08:19 2010 +0930
@@ -5,10 +5,79 @@
 }
 
 private {
-    import doodle.gtk.conversions;
     import core.stdc.string : strlen;
+    static import gdk.Event;
 }
 
+private {
+
+    ButtonAction gtk2tkButtonAction(gdk.Event.EventType event_type) {
+        switch (event_type) {
+        case gdk.Event.EventType.BUTTON_PRESS:        return ButtonAction.SINGLE_PRESS;
+        case gdk.Event.EventType.DOUBLE_BUTTON_PRESS: return ButtonAction.DOUBLE_PRESS;
+        case gdk.Event.EventType.TRIPLE_BUTTON_PRESS: return ButtonAction.TRIPLE_PRESS;
+        case gdk.Event.EventType.BUTTON_RELEASE:      return ButtonAction.RELEASE;
+        default:
+                                                      assert(false);
+        }
+    }
+
+    ButtonName gtk2tkButtonName(gdk.Event.guint button) {
+        switch (button) {
+        case 1: return ButtonName.LEFT;
+        case 2: return ButtonName.MIDDLE;
+        case 3: return ButtonName.RIGHT;
+        case 4: return ButtonName.FOUR;
+        case 5: return ButtonName.FIVE;
+        default:
+                assert(false);
+        }
+    }
+
+    Mask gtk2tkMask(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;
+        // Note, MOD 3-5 are currently omitted
+        if (state & gdk.Event.GdkModifierType.BUTTON1_MASK) modifiers ~= Modifier.LEFT_BUTTON;
+        if (state & gdk.Event.GdkModifierType.BUTTON2_MASK) modifiers ~= Modifier.MIDDLE_BUTTON;
+        if (state & gdk.Event.GdkModifierType.BUTTON3_MASK) modifiers ~= Modifier.RIGHT_BUTTON;
+        if (state & gdk.Event.GdkModifierType.BUTTON4_MASK) modifiers ~= Modifier.UNUSED_BUTTON_1;
+        if (state & gdk.Event.GdkModifierType.BUTTON5_MASK) modifiers ~= Modifier.UNUSED_BUTTON_2;
+
+        Mask m = Mask(modifiers);
+
+        return Mask(modifiers);
+    }
+
+    ScrollDirection gtk2tkDirection(gdk.Event.ScrollDirection direction) {
+        switch (direction) {
+        case gdk.Event.ScrollDirection.UP:    return ScrollDirection.UP;
+        case gdk.Event.ScrollDirection.DOWN:  return ScrollDirection.DOWN;
+        case gdk.Event.ScrollDirection.LEFT:  return ScrollDirection.LEFT;
+        case gdk.Event.ScrollDirection.RIGHT: return ScrollDirection.RIGHT;
+        default:
+                                              assert(false);
+        }
+    }
+
+    CrossingMode gtk2tkCrossingMode(gdk.Event.CrossingMode crossingMode) {
+        switch (crossingMode) {
+        case crossingMode.NORMAL:        return CrossingMode.NORMAL;
+        case crossingMode.GRAB:          return CrossingMode.GRAB;
+        case crossingMode.UNGRAB:        return CrossingMode.UNGRAB;
+        case crossingMode.GTK_GRAB:      return CrossingMode.GRAB2;
+        case crossingMode.GTK_UNGRAB:    return CrossingMode.UNGRAB2;
+        case crossingMode.STATE_CHANGED: return CrossingMode.STATE_CHANGED;
+        default:
+                                         assert(false);
+        }
+    }
+
+}
 
 // Functions for creating the events