view dstep/appkit/NSResponder.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.NSResponder;

import dstep.appkit.NSEvent;
import dstep.appkit.NSInterfaceStyle;
import dstep.appkit.NSMenu;
import dstep.appkit.NSWindow;
import dstep.foundation.NSArray;
import dstep.foundation.NSCoder;
import dstep.foundation.NSError;
import dstep.foundation.NSObject;
import dstep.foundation.NSString;
import dstep.foundation.NSUndoManager;
import dstep.objc.bridge.Bridge;
import dstep.objc.objc;

const TNSErrorPresentation = `

	void presentError (NSError error, NSWindow window, Object delegate_, SEL didPresentSelector, void* contextInfo)
	{
		return invokeObjcSelf!(void, "presentError:modalForWindow:delegate:didPresentSelector:contextInfo:", NSError, NSWindow, Object, SEL, void*)(error, window, delegate_, didPresentSelector, contextInfo);
	}

	bool presentError (NSError error)
	{
		return invokeObjcSelf!(bool, "presentError:", NSError)(error);
	}

	NSError willPresentError (NSError error)
	{
		return invokeObjcSelf!(NSError, "willPresentError:", NSError)(error);
	}

	//mixin ObjcBindMethod!(presentError, "presentError:modalForWindow:delegate:didPresentSelector:contextInfo:");
	//mixin ObjcBindMethod!(presentError, "presentError:");
	//mixin ObjcBindMethod!(willPresentError, "willPresentError:");

`;

const TNSUndoSupport = `

	NSUndoManager undoManager ()
	{
		return invokeObjcSelf!(NSUndoManager, "undoManager");
	}

	//mixin ObjcBindMethod!(undoManager, "undoManager");

`;

const TNSStandardKeyBindingMethods = `

	void insertText (Object insertString)
	{
		return invokeObjcSelf!(void, "insertText:", Object)(insertString);
	}

	void doCommandBySelector (SEL aSelector)
	{
		return invokeObjcSelf!(void, "doCommandBySelector:", SEL)(aSelector);
	}

	void moveForward (Object sender)
	{
		return invokeObjcSelf!(void, "moveForward:", Object)(sender);
	}

	void moveRight (Object sender)
	{
		return invokeObjcSelf!(void, "moveRight:", Object)(sender);
	}

	void moveBackward (Object sender)
	{
		return invokeObjcSelf!(void, "moveBackward:", Object)(sender);
	}

	void moveLeft (Object sender)
	{
		return invokeObjcSelf!(void, "moveLeft:", Object)(sender);
	}

	void moveUp (Object sender)
	{
		return invokeObjcSelf!(void, "moveUp:", Object)(sender);
	}

	void moveDown (Object sender)
	{
		return invokeObjcSelf!(void, "moveDown:", Object)(sender);
	}

	void moveWordForward (Object sender)
	{
		return invokeObjcSelf!(void, "moveWordForward:", Object)(sender);
	}

	void moveWordBackward (Object sender)
	{
		return invokeObjcSelf!(void, "moveWordBackward:", Object)(sender);
	}

	void moveToBeginningOfLine (Object sender)
	{
		return invokeObjcSelf!(void, "moveToBeginningOfLine:", Object)(sender);
	}

	void moveToEndOfLine (Object sender)
	{
		return invokeObjcSelf!(void, "moveToEndOfLine:", Object)(sender);
	}

	void moveToBeginningOfParagraph (Object sender)
	{
		return invokeObjcSelf!(void, "moveToBeginningOfParagraph:", Object)(sender);
	}

	void moveToEndOfParagraph (Object sender)
	{
		return invokeObjcSelf!(void, "moveToEndOfParagraph:", Object)(sender);
	}

	void moveToEndOfDocument (Object sender)
	{
		return invokeObjcSelf!(void, "moveToEndOfDocument:", Object)(sender);
	}

	void moveToBeginningOfDocument (Object sender)
	{
		return invokeObjcSelf!(void, "moveToBeginningOfDocument:", Object)(sender);
	}

	void pageDown (Object sender)
	{
		return invokeObjcSelf!(void, "pageDown:", Object)(sender);
	}

	void pageUp (Object sender)
	{
		return invokeObjcSelf!(void, "pageUp:", Object)(sender);
	}

	void centerSelectionInVisibleArea (Object sender)
	{
		return invokeObjcSelf!(void, "centerSelectionInVisibleArea:", Object)(sender);
	}

	void moveBackwardAndModifySelection (Object sender)
	{
		return invokeObjcSelf!(void, "moveBackwardAndModifySelection:", Object)(sender);
	}

	void moveForwardAndModifySelection (Object sender)
	{
		return invokeObjcSelf!(void, "moveForwardAndModifySelection:", Object)(sender);
	}

	void moveWordForwardAndModifySelection (Object sender)
	{
		return invokeObjcSelf!(void, "moveWordForwardAndModifySelection:", Object)(sender);
	}

	void moveWordBackwardAndModifySelection (Object sender)
	{
		return invokeObjcSelf!(void, "moveWordBackwardAndModifySelection:", Object)(sender);
	}

	void moveUpAndModifySelection (Object sender)
	{
		return invokeObjcSelf!(void, "moveUpAndModifySelection:", Object)(sender);
	}

	void moveDownAndModifySelection (Object sender)
	{
		return invokeObjcSelf!(void, "moveDownAndModifySelection:", Object)(sender);
	}

	void moveWordRight (Object sender)
	{
		return invokeObjcSelf!(void, "moveWordRight:", Object)(sender);
	}

	void moveWordLeft (Object sender)
	{
		return invokeObjcSelf!(void, "moveWordLeft:", Object)(sender);
	}

	void moveRightAndModifySelection (Object sender)
	{
		return invokeObjcSelf!(void, "moveRightAndModifySelection:", Object)(sender);
	}

	void moveLeftAndModifySelection (Object sender)
	{
		return invokeObjcSelf!(void, "moveLeftAndModifySelection:", Object)(sender);
	}

	void moveWordRightAndModifySelection (Object sender)
	{
		return invokeObjcSelf!(void, "moveWordRightAndModifySelection:", Object)(sender);
	}

	void moveWordLeftAndModifySelection (Object sender)
	{
		return invokeObjcSelf!(void, "moveWordLeftAndModifySelection:", Object)(sender);
	}

	void scrollPageUp (Object sender)
	{
		return invokeObjcSelf!(void, "scrollPageUp:", Object)(sender);
	}

	void scrollPageDown (Object sender)
	{
		return invokeObjcSelf!(void, "scrollPageDown:", Object)(sender);
	}

	void scrollLineUp (Object sender)
	{
		return invokeObjcSelf!(void, "scrollLineUp:", Object)(sender);
	}

	void scrollLineDown (Object sender)
	{
		return invokeObjcSelf!(void, "scrollLineDown:", Object)(sender);
	}

	void transpose (Object sender)
	{
		return invokeObjcSelf!(void, "transpose:", Object)(sender);
	}

	void transposeWords (Object sender)
	{
		return invokeObjcSelf!(void, "transposeWords:", Object)(sender);
	}

	void selectAll (Object sender)
	{
		return invokeObjcSelf!(void, "selectAll:", Object)(sender);
	}

	void selectParagraph (Object sender)
	{
		return invokeObjcSelf!(void, "selectParagraph:", Object)(sender);
	}

	void selectLine (Object sender)
	{
		return invokeObjcSelf!(void, "selectLine:", Object)(sender);
	}

	void selectWord (Object sender)
	{
		return invokeObjcSelf!(void, "selectWord:", Object)(sender);
	}

	void indent (Object sender)
	{
		return invokeObjcSelf!(void, "indent:", Object)(sender);
	}

	void insertTab (Object sender)
	{
		return invokeObjcSelf!(void, "insertTab:", Object)(sender);
	}

	void insertBacktab (Object sender)
	{
		return invokeObjcSelf!(void, "insertBacktab:", Object)(sender);
	}

	void insertNewline (Object sender)
	{
		return invokeObjcSelf!(void, "insertNewline:", Object)(sender);
	}

	void insertParagraphSeparator (Object sender)
	{
		return invokeObjcSelf!(void, "insertParagraphSeparator:", Object)(sender);
	}

	void insertNewlineIgnoringFieldEditor (Object sender)
	{
		return invokeObjcSelf!(void, "insertNewlineIgnoringFieldEditor:", Object)(sender);
	}

	void insertTabIgnoringFieldEditor (Object sender)
	{
		return invokeObjcSelf!(void, "insertTabIgnoringFieldEditor:", Object)(sender);
	}

	void insertLineBreak (Object sender)
	{
		return invokeObjcSelf!(void, "insertLineBreak:", Object)(sender);
	}

	void insertContainerBreak (Object sender)
	{
		return invokeObjcSelf!(void, "insertContainerBreak:", Object)(sender);
	}

	void changeCaseOfLetter (Object sender)
	{
		return invokeObjcSelf!(void, "changeCaseOfLetter:", Object)(sender);
	}

	void uppercaseWord (Object sender)
	{
		return invokeObjcSelf!(void, "uppercaseWord:", Object)(sender);
	}

	void lowercaseWord (Object sender)
	{
		return invokeObjcSelf!(void, "lowercaseWord:", Object)(sender);
	}

	void capitalizeWord (Object sender)
	{
		return invokeObjcSelf!(void, "capitalizeWord:", Object)(sender);
	}

	void deleteForward (Object sender)
	{
		return invokeObjcSelf!(void, "deleteForward:", Object)(sender);
	}

	void deleteBackward (Object sender)
	{
		return invokeObjcSelf!(void, "deleteBackward:", Object)(sender);
	}

	void deleteBackwardByDecomposingPreviousCharacter (Object sender)
	{
		return invokeObjcSelf!(void, "deleteBackwardByDecomposingPreviousCharacter:", Object)(sender);
	}

	void deleteWordForward (Object sender)
	{
		return invokeObjcSelf!(void, "deleteWordForward:", Object)(sender);
	}

	void deleteWordBackward (Object sender)
	{
		return invokeObjcSelf!(void, "deleteWordBackward:", Object)(sender);
	}

	void deleteToBeginningOfLine (Object sender)
	{
		return invokeObjcSelf!(void, "deleteToBeginningOfLine:", Object)(sender);
	}

	void deleteToEndOfLine (Object sender)
	{
		return invokeObjcSelf!(void, "deleteToEndOfLine:", Object)(sender);
	}

	void deleteToBeginningOfParagraph (Object sender)
	{
		return invokeObjcSelf!(void, "deleteToBeginningOfParagraph:", Object)(sender);
	}

	void deleteToEndOfParagraph (Object sender)
	{
		return invokeObjcSelf!(void, "deleteToEndOfParagraph:", Object)(sender);
	}

	void yank (Object sender)
	{
		return invokeObjcSelf!(void, "yank:", Object)(sender);
	}

	void complete (Object sender)
	{
		return invokeObjcSelf!(void, "complete:", Object)(sender);
	}

	void setMark (Object sender)
	{
		return invokeObjcSelf!(void, "setMark:", Object)(sender);
	}

	void deleteToMark (Object sender)
	{
		return invokeObjcSelf!(void, "deleteToMark:", Object)(sender);
	}

	void selectToMark (Object sender)
	{
		return invokeObjcSelf!(void, "selectToMark:", Object)(sender);
	}

	void swapWithMark (Object sender)
	{
		return invokeObjcSelf!(void, "swapWithMark:", Object)(sender);
	}

	void cancelOperation (Object sender)
	{
		return invokeObjcSelf!(void, "cancelOperation:", Object)(sender);
	}

	//mixin ObjcBindMethod!(insertText, "insertText:");
	//mixin ObjcBindMethod!(doCommandBySelector, "doCommandBySelector:");
	//mixin ObjcBindMethod!(moveForward, "moveForward:");
	//mixin ObjcBindMethod!(moveRight, "moveRight:");
	//mixin ObjcBindMethod!(moveBackward, "moveBackward:");
	//mixin ObjcBindMethod!(moveLeft, "moveLeft:");
	//mixin ObjcBindMethod!(moveUp, "moveUp:");
	//mixin ObjcBindMethod!(moveDown, "moveDown:");
	//mixin ObjcBindMethod!(moveWordForward, "moveWordForward:");
	//mixin ObjcBindMethod!(moveWordBackward, "moveWordBackward:");
	//mixin ObjcBindMethod!(moveToBeginningOfLine, "moveToBeginningOfLine:");
	//mixin ObjcBindMethod!(moveToEndOfLine, "moveToEndOfLine:");
	//mixin ObjcBindMethod!(moveToBeginningOfParagraph, "moveToBeginningOfParagraph:");
	//mixin ObjcBindMethod!(moveToEndOfParagraph, "moveToEndOfParagraph:");
	//mixin ObjcBindMethod!(moveToEndOfDocument, "moveToEndOfDocument:");
	//mixin ObjcBindMethod!(moveToBeginningOfDocument, "moveToBeginningOfDocument:");
	//mixin ObjcBindMethod!(pageDown, "pageDown:");
	//mixin ObjcBindMethod!(pageUp, "pageUp:");
	//mixin ObjcBindMethod!(centerSelectionInVisibleArea, "centerSelectionInVisibleArea:");
	//mixin ObjcBindMethod!(moveBackwardAndModifySelection, "moveBackwardAndModifySelection:");
	//mixin ObjcBindMethod!(moveForwardAndModifySelection, "moveForwardAndModifySelection:");
	//mixin ObjcBindMethod!(moveWordForwardAndModifySelection, "moveWordForwardAndModifySelection:");
	//mixin ObjcBindMethod!(moveWordBackwardAndModifySelection, "moveWordBackwardAndModifySelection:");
	//mixin ObjcBindMethod!(moveUpAndModifySelection, "moveUpAndModifySelection:");
	//mixin ObjcBindMethod!(moveDownAndModifySelection, "moveDownAndModifySelection:");
	//mixin ObjcBindMethod!(moveWordRight, "moveWordRight:");
	//mixin ObjcBindMethod!(moveWordLeft, "moveWordLeft:");
	//mixin ObjcBindMethod!(moveRightAndModifySelection, "moveRightAndModifySelection:");
	//mixin ObjcBindMethod!(moveLeftAndModifySelection, "moveLeftAndModifySelection:");
	//mixin ObjcBindMethod!(moveWordRightAndModifySelection, "moveWordRightAndModifySelection:");
	//mixin ObjcBindMethod!(moveWordLeftAndModifySelection, "moveWordLeftAndModifySelection:");
	//mixin ObjcBindMethod!(scrollPageUp, "scrollPageUp:");
	//mixin ObjcBindMethod!(scrollPageDown, "scrollPageDown:");
	//mixin ObjcBindMethod!(scrollLineUp, "scrollLineUp:");
	//mixin ObjcBindMethod!(scrollLineDown, "scrollLineDown:");
	//mixin ObjcBindMethod!(transpose, "transpose:");
	//mixin ObjcBindMethod!(transposeWords, "transposeWords:");
	//mixin ObjcBindMethod!(selectAll, "selectAll:");
	//mixin ObjcBindMethod!(selectParagraph, "selectParagraph:");
	//mixin ObjcBindMethod!(selectLine, "selectLine:");
	//mixin ObjcBindMethod!(selectWord, "selectWord:");
	//mixin ObjcBindMethod!(indent, "indent:");
	//mixin ObjcBindMethod!(insertTab, "insertTab:");
	//mixin ObjcBindMethod!(insertBacktab, "insertBacktab:");
	//mixin ObjcBindMethod!(insertNewline, "insertNewline:");
	//mixin ObjcBindMethod!(insertParagraphSeparator, "insertParagraphSeparator:");
	//mixin ObjcBindMethod!(insertNewlineIgnoringFieldEditor, "insertNewlineIgnoringFieldEditor:");
	//mixin ObjcBindMethod!(insertTabIgnoringFieldEditor, "insertTabIgnoringFieldEditor:");
	//mixin ObjcBindMethod!(insertLineBreak, "insertLineBreak:");
	//mixin ObjcBindMethod!(insertContainerBreak, "insertContainerBreak:");
	//mixin ObjcBindMethod!(changeCaseOfLetter, "changeCaseOfLetter:");
	//mixin ObjcBindMethod!(uppercaseWord, "uppercaseWord:");
	//mixin ObjcBindMethod!(lowercaseWord, "lowercaseWord:");
	//mixin ObjcBindMethod!(capitalizeWord, "capitalizeWord:");
	//mixin ObjcBindMethod!(deleteForward, "deleteForward:");
	//mixin ObjcBindMethod!(deleteBackward, "deleteBackward:");
	//mixin ObjcBindMethod!(deleteBackwardByDecomposingPreviousCharacter, "deleteBackwardByDecomposingPreviousCharacter:");
	//mixin ObjcBindMethod!(deleteWordForward, "deleteWordForward:");
	//mixin ObjcBindMethod!(deleteWordBackward, "deleteWordBackward:");
	//mixin ObjcBindMethod!(deleteToBeginningOfLine, "deleteToBeginningOfLine:");
	//mixin ObjcBindMethod!(deleteToEndOfLine, "deleteToEndOfLine:");
	//mixin ObjcBindMethod!(deleteToBeginningOfParagraph, "deleteToBeginningOfParagraph:");
	//mixin ObjcBindMethod!(deleteToEndOfParagraph, "deleteToEndOfParagraph:");
	//mixin ObjcBindMethod!(yank, "yank:");
	//mixin ObjcBindMethod!(complete, "complete:");
	//mixin ObjcBindMethod!(setMark, "setMark:");
	//mixin ObjcBindMethod!(deleteToMark, "deleteToMark:");
	//mixin ObjcBindMethod!(selectToMark, "selectToMark:");
	//mixin ObjcBindMethod!(swapWithMark, "swapWithMark:");
	//mixin ObjcBindMethod!(cancelOperation, "cancelOperation:");

`;

class NSResponder : NSObject, 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);
	}
	
	NSResponder nextResponder ()
	{
		id result = invokeObjcSelf!(id, "nextResponder");
		return result is this.objcObject ? this : (result !is null ? new NSResponder(result) : null);
	}

	void setNextResponder (NSResponder aResponder)
	{
		return invokeObjcSelf!(void, "setNextResponder:", NSResponder)(aResponder);
	}

	bool tryToPerform (SEL anAction, Object anObject)
	{
		return invokeObjcSelf!(bool, "tryToPerform:with:", SEL, Object)(anAction, anObject);
	}

	bool performKeyEquivalent (NSEvent theEvent)
	{
		return invokeObjcSelf!(bool, "performKeyEquivalent:", NSEvent)(theEvent);
	}

	Object validRequestorForSendType (NSString sendType, NSString returnType)
	{
		return invokeObjcSelf!(Object, "validRequestorForSendType:returnType:", NSString, NSString)(sendType, returnType);
	}

	void mouseDown (NSEvent theEvent)
	{
		return invokeObjcSelf!(void, "mouseDown:", NSEvent)(theEvent);
	}

	void rightMouseDown (NSEvent theEvent)
	{
		return invokeObjcSelf!(void, "rightMouseDown:", NSEvent)(theEvent);
	}

	void otherMouseDown (NSEvent theEvent)
	{
		return invokeObjcSelf!(void, "otherMouseDown:", NSEvent)(theEvent);
	}

	void mouseUp (NSEvent theEvent)
	{
		return invokeObjcSelf!(void, "mouseUp:", NSEvent)(theEvent);
	}

	void rightMouseUp (NSEvent theEvent)
	{
		return invokeObjcSelf!(void, "rightMouseUp:", NSEvent)(theEvent);
	}

	void otherMouseUp (NSEvent theEvent)
	{
		return invokeObjcSelf!(void, "otherMouseUp:", NSEvent)(theEvent);
	}

	void mouseMoved (NSEvent theEvent)
	{
		return invokeObjcSelf!(void, "mouseMoved:", NSEvent)(theEvent);
	}

	void mouseDragged (NSEvent theEvent)
	{
		return invokeObjcSelf!(void, "mouseDragged:", NSEvent)(theEvent);
	}

	void scrollWheel (NSEvent theEvent)
	{
		return invokeObjcSelf!(void, "scrollWheel:", NSEvent)(theEvent);
	}

	void rightMouseDragged (NSEvent theEvent)
	{
		return invokeObjcSelf!(void, "rightMouseDragged:", NSEvent)(theEvent);
	}

	void otherMouseDragged (NSEvent theEvent)
	{
		return invokeObjcSelf!(void, "otherMouseDragged:", NSEvent)(theEvent);
	}

	void mouseEntered (NSEvent theEvent)
	{
		return invokeObjcSelf!(void, "mouseEntered:", NSEvent)(theEvent);
	}

	void mouseExited (NSEvent theEvent)
	{
		return invokeObjcSelf!(void, "mouseExited:", NSEvent)(theEvent);
	}

	void keyDown (NSEvent theEvent)
	{
		return invokeObjcSelf!(void, "keyDown:", NSEvent)(theEvent);
	}

	void keyUp (NSEvent theEvent)
	{
		return invokeObjcSelf!(void, "keyUp:", NSEvent)(theEvent);
	}

	void flagsChanged (NSEvent theEvent)
	{
		return invokeObjcSelf!(void, "flagsChanged:", NSEvent)(theEvent);
	}

	void tabletPoint (NSEvent theEvent)
	{
		return invokeObjcSelf!(void, "tabletPoint:", NSEvent)(theEvent);
	}

	void tabletProximity (NSEvent theEvent)
	{
		return invokeObjcSelf!(void, "tabletProximity:", NSEvent)(theEvent);
	}

	void cursorUpdate (NSEvent event)
	{
		return invokeObjcSelf!(void, "cursorUpdate:", NSEvent)(event);
	}

	void noResponderFor (SEL eventSelector)
	{
		return invokeObjcSelf!(void, "noResponderFor:", SEL)(eventSelector);
	}

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

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

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

	void interpretKeyEvents (NSArray eventArray)
	{
		return invokeObjcSelf!(void, "interpretKeyEvents:", NSArray)(eventArray);
	}

	void flushBufferedKeyEvents ()
	{
		return invokeObjcSelf!(void, "flushBufferedKeyEvents");
	}

	void setMenu (NSMenu menu)
	{
		return invokeObjcSelf!(void, "setMenu:", NSMenu)(menu);
	}

	NSMenu menu ()
	{
		return invokeObjcSelf!(NSMenu, "menu");
	}

	void showContextHelp (Object sender)
	{
		return invokeObjcSelf!(void, "showContextHelp:", Object)(sender);
	}

	void helpRequested (NSEvent eventPtr)
	{
		return invokeObjcSelf!(void, "helpRequested:", NSEvent)(eventPtr);
	}

	bool shouldBeTreatedAsInkEvent (NSEvent theEvent)
	{
		return invokeObjcSelf!(bool, "shouldBeTreatedAsInkEvent:", NSEvent)(theEvent);
	}

	// NSInterfaceStyle
	uint interfaceStyle ()
	{
		return invokeObjcSelf!(uint, "interfaceStyle");
	}

	void setInterfaceStyle (uint interfaceStyle)
	{
		return invokeObjcSelf!(void, "setInterfaceStyle:", uint)(interfaceStyle);
	}
	
	// NSErrorPresentation
	void presentError (NSError error, NSWindow window, Object delegate_, SEL didPresentSelector, void* contextInfo)
	{
		return invokeObjcSelf!(void, "presentError:modalForWindow:delegate:didPresentSelector:contextInfo:", NSError, NSWindow, Object, SEL, void*)(error, window, delegate_, didPresentSelector, contextInfo);
	}

	bool presentError (NSError error)
	{
		return invokeObjcSelf!(bool, "presentError:", NSError)(error);
	}

	NSError willPresentError (NSError error)
	{
		return invokeObjcSelf!(NSError, "willPresentError:", NSError)(error);
	}
	
	// NSUndoSupport
	NSUndoManager undoManager ()
	{
		return invokeObjcSelf!(NSUndoManager, "undoManager");
	}
	
	// NSStandardKeyBindingMethods
	void insertText (Object insertString)
	{
		return invokeObjcSelf!(void, "insertText:", Object)(insertString);
	}

	void doCommandBySelector (SEL aSelector)
	{
		return invokeObjcSelf!(void, "doCommandBySelector:", SEL)(aSelector);
	}

	void moveForward (Object sender)
	{
		return invokeObjcSelf!(void, "moveForward:", Object)(sender);
	}

	void moveRight (Object sender)
	{
		return invokeObjcSelf!(void, "moveRight:", Object)(sender);
	}

	void moveBackward (Object sender)
	{
		return invokeObjcSelf!(void, "moveBackward:", Object)(sender);
	}

	void moveLeft (Object sender)
	{
		return invokeObjcSelf!(void, "moveLeft:", Object)(sender);
	}

	void moveUp (Object sender)
	{
		return invokeObjcSelf!(void, "moveUp:", Object)(sender);
	}

	void moveDown (Object sender)
	{
		return invokeObjcSelf!(void, "moveDown:", Object)(sender);
	}

	void moveWordForward (Object sender)
	{
		return invokeObjcSelf!(void, "moveWordForward:", Object)(sender);
	}

	void moveWordBackward (Object sender)
	{
		return invokeObjcSelf!(void, "moveWordBackward:", Object)(sender);
	}

	void moveToBeginningOfLine (Object sender)
	{
		return invokeObjcSelf!(void, "moveToBeginningOfLine:", Object)(sender);
	}

	void moveToEndOfLine (Object sender)
	{
		return invokeObjcSelf!(void, "moveToEndOfLine:", Object)(sender);
	}

	void moveToBeginningOfParagraph (Object sender)
	{
		return invokeObjcSelf!(void, "moveToBeginningOfParagraph:", Object)(sender);
	}

	void moveToEndOfParagraph (Object sender)
	{
		return invokeObjcSelf!(void, "moveToEndOfParagraph:", Object)(sender);
	}

	void moveToEndOfDocument (Object sender)
	{
		return invokeObjcSelf!(void, "moveToEndOfDocument:", Object)(sender);
	}

	void moveToBeginningOfDocument (Object sender)
	{
		return invokeObjcSelf!(void, "moveToBeginningOfDocument:", Object)(sender);
	}

	void pageDown (Object sender)
	{
		return invokeObjcSelf!(void, "pageDown:", Object)(sender);
	}

	void pageUp (Object sender)
	{
		return invokeObjcSelf!(void, "pageUp:", Object)(sender);
	}

	void centerSelectionInVisibleArea (Object sender)
	{
		return invokeObjcSelf!(void, "centerSelectionInVisibleArea:", Object)(sender);
	}

	void moveBackwardAndModifySelection (Object sender)
	{
		return invokeObjcSelf!(void, "moveBackwardAndModifySelection:", Object)(sender);
	}

	void moveForwardAndModifySelection (Object sender)
	{
		return invokeObjcSelf!(void, "moveForwardAndModifySelection:", Object)(sender);
	}

	void moveWordForwardAndModifySelection (Object sender)
	{
		return invokeObjcSelf!(void, "moveWordForwardAndModifySelection:", Object)(sender);
	}

	void moveWordBackwardAndModifySelection (Object sender)
	{
		return invokeObjcSelf!(void, "moveWordBackwardAndModifySelection:", Object)(sender);
	}

	void moveUpAndModifySelection (Object sender)
	{
		return invokeObjcSelf!(void, "moveUpAndModifySelection:", Object)(sender);
	}

	void moveDownAndModifySelection (Object sender)
	{
		return invokeObjcSelf!(void, "moveDownAndModifySelection:", Object)(sender);
	}

	void moveWordRight (Object sender)
	{
		return invokeObjcSelf!(void, "moveWordRight:", Object)(sender);
	}

	void moveWordLeft (Object sender)
	{
		return invokeObjcSelf!(void, "moveWordLeft:", Object)(sender);
	}

	void moveRightAndModifySelection (Object sender)
	{
		return invokeObjcSelf!(void, "moveRightAndModifySelection:", Object)(sender);
	}

	void moveLeftAndModifySelection (Object sender)
	{
		return invokeObjcSelf!(void, "moveLeftAndModifySelection:", Object)(sender);
	}

	void moveWordRightAndModifySelection (Object sender)
	{
		return invokeObjcSelf!(void, "moveWordRightAndModifySelection:", Object)(sender);
	}

	void moveWordLeftAndModifySelection (Object sender)
	{
		return invokeObjcSelf!(void, "moveWordLeftAndModifySelection:", Object)(sender);
	}

	void scrollPageUp (Object sender)
	{
		return invokeObjcSelf!(void, "scrollPageUp:", Object)(sender);
	}

	void scrollPageDown (Object sender)
	{
		return invokeObjcSelf!(void, "scrollPageDown:", Object)(sender);
	}

	void scrollLineUp (Object sender)
	{
		return invokeObjcSelf!(void, "scrollLineUp:", Object)(sender);
	}

	void scrollLineDown (Object sender)
	{
		return invokeObjcSelf!(void, "scrollLineDown:", Object)(sender);
	}

	void transpose (Object sender)
	{
		return invokeObjcSelf!(void, "transpose:", Object)(sender);
	}

	void transposeWords (Object sender)
	{
		return invokeObjcSelf!(void, "transposeWords:", Object)(sender);
	}

	void selectAll (Object sender)
	{
		return invokeObjcSelf!(void, "selectAll:", Object)(sender);
	}

	void selectParagraph (Object sender)
	{
		return invokeObjcSelf!(void, "selectParagraph:", Object)(sender);
	}

	void selectLine (Object sender)
	{
		return invokeObjcSelf!(void, "selectLine:", Object)(sender);
	}

	void selectWord (Object sender)
	{
		return invokeObjcSelf!(void, "selectWord:", Object)(sender);
	}

	void indent (Object sender)
	{
		return invokeObjcSelf!(void, "indent:", Object)(sender);
	}

	void insertTab (Object sender)
	{
		return invokeObjcSelf!(void, "insertTab:", Object)(sender);
	}

	void insertBacktab (Object sender)
	{
		return invokeObjcSelf!(void, "insertBacktab:", Object)(sender);
	}

	void insertNewline (Object sender)
	{
		return invokeObjcSelf!(void, "insertNewline:", Object)(sender);
	}

	void insertParagraphSeparator (Object sender)
	{
		return invokeObjcSelf!(void, "insertParagraphSeparator:", Object)(sender);
	}

	void insertNewlineIgnoringFieldEditor (Object sender)
	{
		return invokeObjcSelf!(void, "insertNewlineIgnoringFieldEditor:", Object)(sender);
	}

	void insertTabIgnoringFieldEditor (Object sender)
	{
		return invokeObjcSelf!(void, "insertTabIgnoringFieldEditor:", Object)(sender);
	}

	void insertLineBreak (Object sender)
	{
		return invokeObjcSelf!(void, "insertLineBreak:", Object)(sender);
	}

	void insertContainerBreak (Object sender)
	{
		return invokeObjcSelf!(void, "insertContainerBreak:", Object)(sender);
	}

	void changeCaseOfLetter (Object sender)
	{
		return invokeObjcSelf!(void, "changeCaseOfLetter:", Object)(sender);
	}

	void uppercaseWord (Object sender)
	{
		return invokeObjcSelf!(void, "uppercaseWord:", Object)(sender);
	}

	void lowercaseWord (Object sender)
	{
		return invokeObjcSelf!(void, "lowercaseWord:", Object)(sender);
	}

	void capitalizeWord (Object sender)
	{
		return invokeObjcSelf!(void, "capitalizeWord:", Object)(sender);
	}

	void deleteForward (Object sender)
	{
		return invokeObjcSelf!(void, "deleteForward:", Object)(sender);
	}

	void deleteBackward (Object sender)
	{
		return invokeObjcSelf!(void, "deleteBackward:", Object)(sender);
	}

	void deleteBackwardByDecomposingPreviousCharacter (Object sender)
	{
		return invokeObjcSelf!(void, "deleteBackwardByDecomposingPreviousCharacter:", Object)(sender);
	}

	void deleteWordForward (Object sender)
	{
		return invokeObjcSelf!(void, "deleteWordForward:", Object)(sender);
	}

	void deleteWordBackward (Object sender)
	{
		return invokeObjcSelf!(void, "deleteWordBackward:", Object)(sender);
	}

	void deleteToBeginningOfLine (Object sender)
	{
		return invokeObjcSelf!(void, "deleteToBeginningOfLine:", Object)(sender);
	}

	void deleteToEndOfLine (Object sender)
	{
		return invokeObjcSelf!(void, "deleteToEndOfLine:", Object)(sender);
	}

	void deleteToBeginningOfParagraph (Object sender)
	{
		return invokeObjcSelf!(void, "deleteToBeginningOfParagraph:", Object)(sender);
	}

	void deleteToEndOfParagraph (Object sender)
	{
		return invokeObjcSelf!(void, "deleteToEndOfParagraph:", Object)(sender);
	}

	void yank (Object sender)
	{
		return invokeObjcSelf!(void, "yank:", Object)(sender);
	}

	void complete (Object sender)
	{
		return invokeObjcSelf!(void, "complete:", Object)(sender);
	}

	void setMark (Object sender)
	{
		return invokeObjcSelf!(void, "setMark:", Object)(sender);
	}

	void deleteToMark (Object sender)
	{
		return invokeObjcSelf!(void, "deleteToMark:", Object)(sender);
	}

	void selectToMark (Object sender)
	{
		return invokeObjcSelf!(void, "selectToMark:", Object)(sender);
	}

	void swapWithMark (Object sender)
	{
		return invokeObjcSelf!(void, "swapWithMark:", Object)(sender);
	}

	void cancelOperation (Object sender)
	{
		return invokeObjcSelf!(void, "cancelOperation:", Object)(sender);
	}
}