Mercurial > projects > doodle
view doodle/gtk/events.d @ 77:15ca7d5cd1ed
The rulers are broken
author | "David Bryant <bagnose@gmail.com>" |
---|---|
date | Sun, 15 Aug 2010 01:36:22 +0930 |
parents | 6f2525e170f2 |
children | d92b9f04b1e8 |
line wrap: on
line source
module doodle.gtk.events; public { import doodle.tk.events; } private { import doodle.gtk.conversions; import core.stdc.string : strlen; } // Functions for creating the events /* public struct GdkEventButton { GdkEventType type; GdkWindow *window; byte sendEvent; uint time; double x; double y; double *axes; uint state; uint button; GdkDevice *device; double xRoot, yRoot; } */ ButtonEvent makeButtonEvent(const GdkEventButton * event, in ScreenModel screenModel) { Point screenPoint = Point(event.x + 0.5, screenModel.viewBoundsScreen.h - (event.y + 0.5)); Point modelPoint = screenModel.screenToModel(screenPoint); return new ButtonEvent(gtk2tkButtonAction(event.type), gtk2tkButtonName(event.button), screenPoint, modelPoint, gtk2tkMask(event.state)); } /* public struct GdkEventMotion { GdkEventType type; GdkWindow *window; byte sendEvent; uint time; double x; double y; double *axes; uint state; short isHint; GdkDevice *device; double xRoot, yRoot; } */ MotionEvent makeMotionEvent(const GdkEventMotion * event, in ScreenModel screenModel) { Point screenPoint = Point(event.x + 0.5, screenModel.viewBoundsScreen.h - (event.y + 0.5)); Point modelPoint = screenModel.screenToModel(screenPoint); return new MotionEvent(screenPoint, modelPoint, gtk2tkMask(event.state)); } /* public struct GdkEventKey { GdkEventType type; GdkWindow *window; byte sendEvent; uint time; uint state; uint keyval; int length; char *string; ushort hardwareKeycode; ubyte group; uint bitfield0; uint isModifier : 1; } */ KeyEvent makeKeyEvent(const GdkEventKey * event, in ScreenModel screenModel) { return new KeyEvent(event.string[0..strlen(event.string)].idup, event.keyval, gtk2tkMask(event.state)); } /* public struct GdkEventScroll { GdkEventType type; GdkWindow *window; byte sendEvent; uint time; double x; double y; uint state; GdkScrollDirection direction; GdkDevice *device; double xRoot, yRoot; } */ ScrollEvent makeScrollEvent(const GdkEventScroll * event, in ScreenModel screenModel) { Point screenPoint = Point(event.x + 0.5, screenModel.viewBoundsScreen.h - (event.y + 0.5)); Point modelPoint = screenModel.screenToModel(screenPoint); return new ScrollEvent(gtk2tkDirection(event.direction), screenPoint, modelPoint, gtk2tkMask(event.state)); } /* public enum GdkCrossingMode { NORMAL, GRAB, UNGRAB, GTK_GRAB, GTK_UNGRAB, STATE_CHANGED } public struct GdkEventCrossing { GdkEventType type; GdkWindow *window; byte sendEvent; GdkWindow *subwindow; uint time; double x; double y; double xRoot; double yRoot; GdkCrossingMode mode; GdkNotifyType detail; int focus; uint state; } */ CrossingEvent makeCrossingEvent(const GdkEventCrossing * event, in ScreenModel screenModel) { Point screenPoint = Point(event.x + 0.5, screenModel.viewBoundsScreen.h - (event.y + 0.5)); Point modelPoint = screenModel.screenToModel(screenPoint); return new CrossingEvent(gtk2tkCrossingMode(event.mode), screenPoint, modelPoint, gtk2tkMask(event.state)); } /* public struct GdkEventFocus { GdkEventType type; GdkWindow *window; byte sendEvent; short inn; } */ // In case we implement focus event...