Mercurial > projects > doodle
diff doodle/tk/events.d @ 28:1754cb773d41
Part-way through getting to compile with configure/builder.
author | Graham St Jack <graham.stjack@internode.on.net> |
---|---|
date | Sun, 02 Aug 2009 16:27:21 +0930 |
parents | tk/events.d@c643c04e3f5e |
children | 157b4ad5615d |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/doodle/tk/events.d Sun Aug 02 16:27:21 2009 +0930 @@ -0,0 +1,122 @@ +module doodle.tk.events; + +public { + import doodle.tk.types; + import doodle.tk.geometry; +} + +abstract class Event { + this(in Mask mask) { + mMask = mask; + } + + Mask mask() const { return mMask; } + + private { + Mask mMask; + } +} + +final class CrossingEvent : Event { + this(in Mask mask) { + super(mask); + } + + private { + } +} + +final class KeyEvent : Event { + this(in string str, in uint value, in Mask mask) { + super(mask); + mStr = str; + mValue = value; + } + + string str() const { return mStr; } + + override string toString() const { + return std.string.format("Key event: %s, %d, %s", mStr, mValue, mMask); + } + + private { + string mStr; + uint mValue; + } +} + +abstract class PointerEvent : Event { + this(in Point pixel_point, in Point model_point, in Mask mask) { + super(mask); + mPixelPoint = pixel_point; + mModelPoint = model_point; + } + + Point pixel_point() const { return mPixelPoint; } + Point model_point() const { return mModelPoint; } + + private { + Point mPixelPoint; + Point mModelPoint; + } +} + +final class ButtonEvent : PointerEvent { + this(in ButtonAction button_action, + in ButtonName button_name, + in Point pixel_point, + in Point model_point, + in Mask mask) { + super(pixel_point, model_point, mask); + mButtonAction = button_action; + mButtonName = button_name; + } + + override string toString() const { + return std.string.format("Button event: %s, %s, %s, %s, %s", + enumToString(mButtonAction), enumToString(mButtonName), + mPixelPoint, mModelPoint, mMask); + } + + ButtonAction button_action() const { return mButtonAction; } + ButtonName button_name() const { return mButtonName; } + + private { + ButtonAction mButtonAction; + ButtonName mButtonName; + } +} + +final class MotionEvent : PointerEvent { + this(in Point pixel_point, + in Point model_point, + in Mask mask) { + super(pixel_point, model_point, mask); + } + + override string toString() const { + return std.string.format("Motion event: %s, %s, %s", + mPixelPoint, mModelPoint, mMask); + } +} + +final class ScrollEvent : PointerEvent { + this(in ScrollDirection scroll_direction, + in Point pixel_point, + in Point model_point, + in Mask mask) { + super(pixel_point, model_point, mask); + mScrollDirection = scroll_direction; + } + + override string toString() const { + return std.string.format("Scroll event: %s, %s, %s, %s", + enumToString(mScrollDirection), mPixelPoint, mModelPoint, mMask); + } + + ScrollDirection scroll_direction() const { return mScrollDirection; } + + private { + ScrollDirection mScrollDirection; + } +}