view tk/gtk_support.d @ 13:f0ade1b49fe7

Checkpoint
author "David Bryant <bagnose@gmail.com>"
date Sun, 12 Jul 2009 01:04:35 +0930
parents bf7903435f58
children 9e63308b749c
line wrap: on
line source

module tk.gtk_support;

import tk.types;

static import gdk.Event;

ButtonAction gtk2tk_button_action(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 gtk2tk_button_name(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 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.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;

    return new Mask(modifiers);
}

ScrollDirection gtk2tk_direction(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);
    }
}