Mercurial > projects > dynamin
diff dynamin/gui/events.d @ 0:aa4efef0f0b1
Initial commit of code.
author | Jordan Miner <jminer7@gmail.com> |
---|---|
date | Mon, 15 Jun 2009 22:10:48 -0500 |
parents | |
children | 87265a206638 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dynamin/gui/events.d Mon Jun 15 22:10:48 2009 -0500 @@ -0,0 +1,157 @@ +// Written in the D programming language +// www.digitalmars.com/d/ + +/* + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is the Dynamin library. + * + * The Initial Developer of the Original Code is Jordan Miner. + * Portions created by the Initial Developer are Copyright (C) 2006-2009 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * Jordan Miner <jminer7@gmail.com> + * + */ + +module dynamin.gui.events; + +import dynamin.all_core; +import dynamin.all_painting; +import dynamin.all_gui; + +/// +enum MouseButton { + None, /// + Left, /// + Right, /// + Middle, /// + XButton1, /// + XButton2 /// +} + +/// +class PaintingEventArgs : EventArgs { + Graphics g; + //NativeGraphics ng; +public: + /// + this(Graphics g) { + this.g = g; + } + /// + Graphics graphics() { return g; } +} + +/// +class MouseEventArgs : StopEventArgs { + Point _location; + MouseButton _button; +public: + /// + this(real x, real y, MouseButton b) { + _location = Point(x, y); + _button = b; + } + /// + Point location() { return _location; } + /// + void location(Point pt) { _location = pt; } + /// + real x() { return _location.x; } + /// + real y() { return _location.y; } + /// + MouseButton button() { return _button; } +} +/// +class MouseTurnedEventArgs : StopEventArgs { + int _delta; + double _scrollAmount; +public: + this(int delta, double scrollAmount) { + _delta = delta; + _scrollAmount = scrollAmount; + } + /* + * This is the amount the mouse wheel was turned. + */ + //int delta() { return _delta; } + /** + * The amount that a control should scroll in response to this event. + * In a text control, this is the number of lines to scroll. + * This will be negative if the control should scroll upward and positive + * if the control should scroll downward. If the amount to be scrolled + * is more than what is visible on screen, only what is on screen + * should be scrolled. + * + * All users of this class should check scrollScreen to see whether to + * scroll one screen or to scroll the amount by this. + */ + double scrollAmount() { return _scrollAmount; } + /** + * On some systems, such as Windows, there is the option of setting + * the mouse wheel to scroll a screen at a time, the same as the page up + * and page down keys do. If this option is turned on, scrollScreen will + * return true and scrollAmount will return ±3. If the option is turned off, + * scrollScreen will return false. + */ + bool scrollScreen() { + return false; + } +} +/// +class KeyEventArgs : StopEventArgs { + Key _key; + bool _repeat; +public: + this(Key key, bool repeat) { + _key = key; + _repeat = repeat; + } + /** + * Returns: the key that was typed. + */ + Key key() { return _key; } + /** + * Gets whether this key event was generated by the user holding + * down the key. + * Returns: true if the key was already down before this event, false + * if the key was just pressed + */ + bool repeat() { return _repeat; } +} +/// +class KeyTypedEventArgs : StopEventArgs { + dchar _ch; + bool _repeat; +public: + this(dchar c, bool repeat) { + _ch = c; + _repeat = repeat; + } + /** + * Gets whether this key event was generated from the user holding + * down the key. + * Returns: true if the key was already down before this event, false + * if the key was just pressed + */ + bool repeat() { return _repeat; } + /** + * Gets the character that was typed by the user. Many keys on the + * keyboard will not generate a KeyTyped event, as they do not represent + * characters. Shift, Insert, Home, F7, and Caps Lock are just some of + * the keys that do not represent characters. + */ + dchar character() { return _ch; } +} +