Mercurial > projects > doodle
view doodle/tk/events.d @ 64:eb5436b47d13
Implemented crossing events
author | "David Bryant <bagnose@gmail.com>" |
---|---|
date | Thu, 12 Aug 2010 22:21:12 +0930 |
parents | 20d6327c4a75 |
children | 31d10176415d |
line wrap: on
line source
module doodle.tk.events; public { import doodle.tk.types; import doodle.tk.geometry; } // FIXME // Do we need FocusEvent. Note, it has no mask. // Hence would need to refactor hierarchy slightly, eg InputEvent abstract class Event { this(in Mask mask) { _mask = mask; } Mask mask() const { return _mask; } private { Mask _mask; } } final class KeyEvent : Event { this(in string str, in uint value, in Mask mask) { super(mask); _str = str; _value = value; } string str() const { return _str; } uint value() const { return _value; } override string toString() const { return std.string.format("Key event: %s, %d, %s", _str, _value, _mask); } private { string _str; uint _value; } } abstract class PointerEvent : Event { this(in Point pixelPoint, in Point modelPoint, in Mask mask) { super(mask); _pixelPoint = pixelPoint; _modelPoint = modelPoint; } Point pixelPoint() const { return _pixelPoint; } Point modelPoint() const { return _modelPoint; } private { Point _pixelPoint; Point _modelPoint; } } final class CrossingEvent : PointerEvent { this(in CrossingMode crossingMode, in Point pixelPoint, in Point modelPoint, in Mask mask) { super(pixelPoint, modelPoint, mask); _crossingMode = crossingMode; } CrossingMode crossingMode() const { return _crossingMode; } override string toString() const { return std.string.format("Crossing event: %s, %s, %s, %s", enumToString(_crossingMode), pixelPoint, modelPoint, mask); } private { CrossingMode _crossingMode; } } final class ButtonEvent : PointerEvent { this(in ButtonAction buttonAction, in ButtonName buttonName, in Point pixelPoint, in Point modelPoint, in Mask mask) { super(pixelPoint, modelPoint, mask); _buttonAction = buttonAction; _buttonName = buttonName; } override string toString() const { return std.string.format("Button event: %s, %s, %s, %s, %s", enumToString(_buttonAction), enumToString(_buttonName), _pixelPoint, _modelPoint, _mask); } ButtonAction buttonAction() const { return _buttonAction; } ButtonName buttonName() const { return _buttonName; } private { ButtonAction _buttonAction; ButtonName _buttonName; } } final class MotionEvent : PointerEvent { this(in Point pixelPoint, in Point modelPoint, in Mask mask) { super(pixelPoint, modelPoint, mask); } override string toString() const { return std.string.format("Motion event: %s, %s, %s", _pixelPoint, _modelPoint, _mask); } } final class ScrollEvent : PointerEvent { this(in ScrollDirection scrollDirection, in Point pixelPoint, in Point modelPoint, in Mask mask) { super(pixelPoint, modelPoint, mask); _scrollDirection = scrollDirection; } override string toString() const { return std.string.format("Scroll event: %s, %s, %s, %s", enumToString(_scrollDirection), _pixelPoint, _modelPoint, _mask); } ScrollDirection scrollDirection() const { return _scrollDirection; } private { ScrollDirection _scrollDirection; } }