view doodle/gtk/conversions.d @ 66:43cc2135ced0

Some code cleanups
author "David Bryant <bagnose@gmail.com>"
date Thu, 12 Aug 2010 22:43:42 +0930
parents eb5436b47d13
children 31d10176415d
line wrap: on
line source

module doodle.gtk.conversions;

public {
    import doodle.tk.types;
}

private {
    static import gdk.Event;
}

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;
    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);
    }
}