view dstep/appkit/NSEvent.d @ 16:19885b43130e

Huge update, the bridge actually works now
author Jacob Carlborg <doob@me.com>
date Sun, 03 Jan 2010 22:06:11 +0100
parents
children b9de51448c6b
line wrap: on
line source

/**
 * Copyright: Copyright (c) 2009 Jacob Carlborg.
 * Authors: Jacob Carlborg
 * Version: Initial created: Sep 24, 2009 
 * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0)
 */
module dstep.appkit.NSEvent;

import dstep.appkit.NSGraphicsContext;
import dstep.appkit.NSTrackingArea;
import dstep.appkit.NSWindow;
import dstep.applicationservices.ApplicationServices;
import dstep.foundation.NSCoder;
import dstep.foundation.NSDate;
import dstep.foundation.NSGeometry;
import dstep.foundation.NSObjCRuntime;
import dstep.foundation.NSObject;
import dstep.foundation.NSString;
import dstep.foundation.NSZone;
//import dstep.iokit.hidsystem.IOLLEvent;
import dstep.internal.Version;
import dstep.objc.bridge.Bridge;
import dstep.objc.objc;

typedef NSUInteger NSEventType;
typedef NSUInteger NSPointingDeviceType;

enum : NSUInteger
{
	NSLeftMouseDown = 1,
	NSLeftMouseUp = 2,
	NSRightMouseDown = 3,
	NSRightMouseUp = 4,
	NSMouseMoved = 5,
	NSLeftMouseDragged = 6,
	NSRightMouseDragged = 7,
	NSMouseEntered = 8,
	NSMouseExited = 9,
	NSKeyDown = 10,
	NSKeyUp = 11,
	NSFlagsChanged = 12,
	NSAppKitDefined = 13,
	NSSystemDefined = 14,
	NSApplicationDefined = 15,
	NSPeriodic = 16,
	NSCursorUpdate = 17,
	NSScrollWheel = 22,
	NSTabletPoint = 23,
	NSTabletProximity = 24,
	NSOtherMouseDown = 25,
	NSOtherMouseUp = 26,
	NSOtherMouseDragged = 27
}

enum : NSUInteger
{
	NSLeftMouseDownMask = 1 << NSLeftMouseDown,
	NSLeftMouseUpMask = 1 << NSLeftMouseUp,
	NSRightMouseDownMask = 1 << NSRightMouseDown,
	NSRightMouseUpMask = 1 << NSRightMouseUp,
	NSMouseMovedMask = 1 << NSMouseMoved,
	NSLeftMouseDraggedMask = 1 << NSLeftMouseDragged,
	NSRightMouseDraggedMask = 1 << NSRightMouseDragged,
	NSMouseEnteredMask = 1 << NSMouseEntered,
	NSMouseExitedMask = 1 << NSMouseExited,
	NSKeyDownMask = 1 << NSKeyDown,
	NSKeyUpMask = 1 << NSKeyUp,
	NSFlagsChangedMask = 1 << NSFlagsChanged,
	NSAppKitDefinedMask = 1 << NSAppKitDefined,
	NSSystemDefinedMask = 1 << NSSystemDefined,
	NSApplicationDefinedMask = 1 << NSApplicationDefined,
	NSPeriodicMask = 1 << NSPeriodic,
	NSCursorUpdateMask = 1 << NSCursorUpdate,
	NSScrollWheelMask = 1 << NSScrollWheel,
	NSTabletPointMask = 1 << NSTabletPoint,
	NSTabletProximityMask = 1 << NSTabletProximity,
	NSOtherMouseDownMask = 1 << NSOtherMouseDown,
	NSOtherMouseUpMask = 1 << NSOtherMouseUp,
	NSOtherMouseDraggedMask = 1 << NSOtherMouseDragged,
	NSAnyEventMask = (2147483647L * 2UL + 1UL)
}

version (D_LP64)
{
	enum : ulong
	{
		NSAlphaShiftKeyMask = 1 << 16,
		NSShiftKeyMask = 1 << 17,
		NSControlKeyMask = 1 << 18,
		NSAlternateKeyMask = 1 << 19,
		NSCommandKeyMask = 1 << 20,
		NSNumericPadKeyMask = 1 << 21,
		NSHelpKeyMask = 1 << 22,
		NSFunctionKeyMask = 1 << 23,
		NSDeviceIndependentModifierFlagsMask = 0xffff0000UL
	}
}

else
{
	enum : uint
	{
		NSAlphaShiftKeyMask = 1 << 16,
		NSShiftKeyMask = 1 << 17,
		NSControlKeyMask = 1 << 18,
		NSAlternateKeyMask = 1 << 19,
		NSCommandKeyMask = 1 << 20,
		NSNumericPadKeyMask = 1 << 21,
		NSHelpKeyMask = 1 << 22,
		NSFunctionKeyMask = 1 << 23,
		NSDeviceIndependentModifierFlagsMask = 0xffff0000U
	}
}

enum
{
	NSUnknownPointingDevice = 0,
	NSPenPointingDevice = 1,
	NSCursorPointingDevice = 2,
	NSEraserPointingDevice = 3
}

enum
{
	NSPenTipMask = 0x0001,
	NSPenLowerSideMask = 0x0002,
	NSPenUpperSideMask = 0x0004
}

enum
{
	NSUpArrowFunctionKey = 0xF700,
	NSDownArrowFunctionKey = 0xF701,
	NSLeftArrowFunctionKey = 0xF702,
	NSRightArrowFunctionKey = 0xF703,
	NSF1FunctionKey = 0xF704,
	NSF2FunctionKey = 0xF705,
	NSF3FunctionKey = 0xF706,
	NSF4FunctionKey = 0xF707,
	NSF5FunctionKey = 0xF708,
	NSF6FunctionKey = 0xF709,
	NSF7FunctionKey = 0xF70A,
	NSF8FunctionKey = 0xF70B,
	NSF9FunctionKey = 0xF70C,
	NSF10FunctionKey = 0xF70D,
	NSF11FunctionKey = 0xF70E,
	NSF12FunctionKey = 0xF70F,
	NSF13FunctionKey = 0xF710,
	NSF14FunctionKey = 0xF711,
	NSF15FunctionKey = 0xF712,
	NSF16FunctionKey = 0xF713,
	NSF17FunctionKey = 0xF714,
	NSF18FunctionKey = 0xF715,
	NSF19FunctionKey = 0xF716,
	NSF20FunctionKey = 0xF717,
	NSF21FunctionKey = 0xF718,
	NSF22FunctionKey = 0xF719,
	NSF23FunctionKey = 0xF71A,
	NSF24FunctionKey = 0xF71B,
	NSF25FunctionKey = 0xF71C,
	NSF26FunctionKey = 0xF71D,
	NSF27FunctionKey = 0xF71E,
	NSF28FunctionKey = 0xF71F,
	NSF29FunctionKey = 0xF720,
	NSF30FunctionKey = 0xF721,
	NSF31FunctionKey = 0xF722,
	NSF32FunctionKey = 0xF723,
	NSF33FunctionKey = 0xF724,
	NSF34FunctionKey = 0xF725,
	NSF35FunctionKey = 0xF726,
	NSInsertFunctionKey = 0xF727,
	NSDeleteFunctionKey = 0xF728,
	NSHomeFunctionKey = 0xF729,
	NSBeginFunctionKey = 0xF72A,
	NSEndFunctionKey = 0xF72B,
	NSPageUpFunctionKey = 0xF72C,
	NSPageDownFunctionKey = 0xF72D,
	NSPrintScreenFunctionKey = 0xF72E,
	NSScrollLockFunctionKey = 0xF72F,
	NSPauseFunctionKey = 0xF730,
	NSSysReqFunctionKey = 0xF731,
	NSBreakFunctionKey = 0xF732,
	NSResetFunctionKey = 0xF733,
	NSStopFunctionKey = 0xF734,
	NSMenuFunctionKey = 0xF735,
	NSUserFunctionKey = 0xF736,
	NSSystemFunctionKey = 0xF737,
	NSPrintFunctionKey = 0xF738,
	NSClearLineFunctionKey = 0xF739,
	NSClearDisplayFunctionKey = 0xF73A,
	NSInsertLineFunctionKey = 0xF73B,
	NSDeleteLineFunctionKey = 0xF73C,
	NSInsertCharFunctionKey = 0xF73D,
	NSDeleteCharFunctionKey = 0xF73E,
	NSPrevFunctionKey = 0xF73F,
	NSNextFunctionKey = 0xF740,
	NSSelectFunctionKey = 0xF741,
	NSExecuteFunctionKey = 0xF742,
	NSUndoFunctionKey = 0xF743,
	NSRedoFunctionKey = 0xF744,
	NSFindFunctionKey = 0xF745,
	NSHelpFunctionKey = 0xF746,
	NSModeSwitchFunctionKey = 0xF747
}

enum
{
	NSWindowExposedEventType = 0,
	NSApplicationActivatedEventType = 1,
	NSApplicationDeactivatedEventType = 2,
	NSWindowMovedEventType = 4,
	NSScreenChangedEventType = 8,
	NSAWTEventType = 16
}

enum
{
	NSPowerOffEventType = 1
}

enum
{
	NSMouseEventSubtype = 0,
	NSTabletPointEventSubtype = 1,
	NSTabletProximityEventSubtype = 2
}

class NSEvent : NSObject, INSCopying, INSCoding
{
	mixin (ObjcWrap);
	
	this (NSCoder aDecoder)
	{
		super(typeof(this).alloc.initWithCoder(aDecoder).objcObject);
	}
	
	void encodeWithCoder (NSCoder aCoder)
	{
		return invokeObjcSelf!(void, "encodeWithCoder:", NSCoder)(aCoder);
	}
	
	typeof(this) initWithCoder (NSCoder aDecoder)
	{
		return invokeObjcSelf!(typeof(this), "initWithCoder:", NSCoder)(aDecoder);
	}
	
	typeof(this) copyWithZone (NSZone* zone)
	{
		return invokeObjcSelf!(typeof(this), "copyWithZone:", NSZone*)(zone);
	}

	uint type ()
	{
		return invokeObjcSelf!(uint, "type");
	}

	NSUInteger modifierFlags ()
	{
		return invokeObjcSelf!(NSUInteger, "modifierFlags");
	}

	double timestamp ()
	{
		return invokeObjcSelf!(double, "timestamp");
	}

	NSWindow window ()
	{
		return invokeObjcSelf!(NSWindow, "window");
	}

	NSInteger windowNumber ()
	{
		return invokeObjcSelf!(NSInteger, "windowNumber");
	}

	NSGraphicsContext context ()
	{
		return invokeObjcSelf!(NSGraphicsContext, "context");
	}

	NSInteger clickCount ()
	{
		return invokeObjcSelf!(NSInteger, "clickCount");
	}

	NSInteger buttonNumber ()
	{
		return invokeObjcSelf!(NSInteger, "buttonNumber");
	}

	NSInteger eventNumber ()
	{
		return invokeObjcSelf!(NSInteger, "eventNumber");
	}

	float pressure ()
	{
		return invokeObjcSelf!(float, "pressure");
	}

	NSPoint locationInWindow ()
	{
		return invokeObjcSelf!(NSPoint, "locationInWindow");
	}

	CGFloat deltaX ()
	{
		return invokeObjcSelf!(CGFloat, "deltaX");
	}

	CGFloat deltaY ()
	{
		return invokeObjcSelf!(CGFloat, "deltaY");
	}

	CGFloat deltaZ ()
	{
		return invokeObjcSelf!(CGFloat, "deltaZ");
	}

	NSString characters ()
	{
		return invokeObjcSelf!(NSString, "characters");
	}

	NSString charactersIgnoringModifiers ()
	{
		return invokeObjcSelf!(NSString, "charactersIgnoringModifiers");
	}

	bool isARepeat ()
	{
		return invokeObjcSelf!(bool, "isARepeat");
	}

	ushort keyCode ()
	{
		return invokeObjcSelf!(ushort, "keyCode");
	}

	NSInteger trackingNumber ()
	{
		return invokeObjcSelf!(NSInteger, "trackingNumber");
	}

	void* userData ()
	{
		return invokeObjcSelf!(void*, "userData");
	}

	NSTrackingArea trackingArea ()
	{
		return invokeObjcSelf!(NSTrackingArea, "trackingArea");
	}

	short subtype ()
	{
		return invokeObjcSelf!(short, "subtype");
	}

	NSInteger data1 ()
	{
		return invokeObjcSelf!(NSInteger, "data1");
	}

	NSInteger data2 ()
	{
		return invokeObjcSelf!(NSInteger, "data2");
	}

	void* eventRef ()
	{
		return invokeObjcSelf!(void*, "eventRef");
	}

	static NSEvent eventWithEventRef (void* eventRef)
	{
		return invokeObjcSelfClass!(NSEvent, "eventWithEventRef:", void*)(eventRef);
	}

	CGEventRef CGEvent ()
	{
		return invokeObjcSelf!(CGEventRef, "CGEvent");
	}

	static NSEvent eventWithCGEvent (CGEventRef cgEvent)
	{
		return invokeObjcSelfClass!(NSEvent, "eventWithCGEvent:", CGEventRef)(cgEvent);
	}

	static void setMouseCoalescingEnabled (bool flag)
	{
		return invokeObjcSelfClass!(void, "setMouseCoalescingEnabled:", bool)(flag);
	}

	static bool isMouseCoalescingEnabled ()
	{
		return invokeObjcSelfClass!(bool, "isMouseCoalescingEnabled");
	}

	NSUInteger deviceID ()
	{
		return invokeObjcSelf!(NSUInteger, "deviceID");
	}

	NSInteger absoluteX ()
	{
		return invokeObjcSelf!(NSInteger, "absoluteX");
	}

	NSInteger absoluteY ()
	{
		return invokeObjcSelf!(NSInteger, "absoluteY");
	}

	NSInteger absoluteZ ()
	{
		return invokeObjcSelf!(NSInteger, "absoluteZ");
	}

	NSUInteger buttonMask ()
	{
		return invokeObjcSelf!(NSUInteger, "buttonMask");
	}

	NSPoint tilt ()
	{
		return invokeObjcSelf!(NSPoint, "tilt");
	}

	float rotation ()
	{
		return invokeObjcSelf!(float, "rotation");
	}

	float tangentialPressure ()
	{
		return invokeObjcSelf!(float, "tangentialPressure");
	}

	Object vendorDefined ()
	{
		return invokeObjcSelf!(Object, "vendorDefined");
	}

	NSUInteger vendorID ()
	{
		return invokeObjcSelf!(NSUInteger, "vendorID");
	}

	NSUInteger tabletID ()
	{
		return invokeObjcSelf!(NSUInteger, "tabletID");
	}

	NSUInteger pointingDeviceID ()
	{
		return invokeObjcSelf!(NSUInteger, "pointingDeviceID");
	}

	NSUInteger systemTabletID ()
	{
		return invokeObjcSelf!(NSUInteger, "systemTabletID");
	}

	NSUInteger vendorPointingDeviceType ()
	{
		return invokeObjcSelf!(NSUInteger, "vendorPointingDeviceType");
	}

	NSUInteger pointingDeviceSerialNumber ()
	{
		return invokeObjcSelf!(NSUInteger, "pointingDeviceSerialNumber");
	}

	ulong uniqueID ()
	{
		return invokeObjcSelf!(ulong, "uniqueID");
	}

	NSUInteger capabilityMask ()
	{
		return invokeObjcSelf!(NSUInteger, "capabilityMask");
	}

	uint pointingDeviceType ()
	{
		return invokeObjcSelf!(uint, "pointingDeviceType");
	}

	bool isEnteringProximity ()
	{
		return invokeObjcSelf!(bool, "isEnteringProximity");
	}

	static void startPeriodicEventsAfterDelay (double delay, double period)
	{
		return invokeObjcSelfClass!(void, "startPeriodicEventsAfterDelay:withPeriod:", double, double)(delay, period);
	}

	static void stopPeriodicEvents ()
	{
		return invokeObjcSelfClass!(void, "stopPeriodicEvents");
	}

	static NSEvent mouseEventWithType (uint type, NSPoint location, NSUInteger flags, double time, NSInteger wNum, NSGraphicsContext context, NSInteger eNum, NSInteger cNum, float pressure)
	{
		return invokeObjcSelfClass!(NSEvent, "mouseEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:clickCount:pressure:", uint, NSPoint, NSUInteger, double, NSInteger, NSGraphicsContext, NSInteger, NSInteger, float)(type, location, flags, time, wNum, context, eNum, cNum, pressure);
	}

	static NSEvent keyEventWithType (uint type, NSPoint location, NSUInteger flags, double time, NSInteger wNum, NSGraphicsContext context, NSString keys, NSString ukeys, bool flag, ushort code)
	{
		return invokeObjcSelfClass!(NSEvent, "keyEventWithType:location:modifierFlags:timestamp:windowNumber:context:characters:charactersIgnoringModifiers:isARepeat:keyCode:", uint, NSPoint, NSUInteger, double, NSInteger, NSGraphicsContext, NSString, NSString, bool, ushort)(type, location, flags, time, wNum, context, keys, ukeys, flag, code);
	}

	static NSEvent enterExitEventWithType (uint type, NSPoint location, NSUInteger flags, double time, NSInteger wNum, NSGraphicsContext context, NSInteger eNum, NSInteger tNum, void* data)
	{
		return invokeObjcSelfClass!(NSEvent, "enterExitEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:trackingNumber:userData:", uint, NSPoint, NSUInteger, double, NSInteger, NSGraphicsContext, NSInteger, NSInteger, void*)(type, location, flags, time, wNum, context, eNum, tNum, data);
	}

	static NSEvent otherEventWithType (uint type, NSPoint location, NSUInteger flags, double time, NSInteger wNum, NSGraphicsContext context, short subtype, NSInteger d1, NSInteger d2)
	{
		return invokeObjcSelfClass!(NSEvent, "otherEventWithType:location:modifierFlags:timestamp:windowNumber:context:subtype:data1:data2:", uint, NSPoint, NSUInteger, double, NSInteger, NSGraphicsContext, short, NSInteger, NSInteger)(type, location, flags, time, wNum, context, subtype, d1, d2);
	}

	static NSPoint mouseLocation ()
	{
		return invokeObjcSelfClass!(NSPoint, "mouseLocation");
	}

}