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; }
+}
+