view dstep/appkit/NSTextView.d @ 22:f8a3b67adfcb

Removed duplicated methods
author Jacob Carlborg <doob@me.com>
date Tue, 09 Feb 2010 18:02:03 +0100
parents 19885b43130e
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.NSTextView;

import dstep.appkit.AppKitDefines;
import dstep.appkit.NSColor;
import dstep.appkit.NSDragging;
import dstep.appkit.NSEvent;
import dstep.appkit.NSImage;
import dstep.appkit.NSInputManager;
import dstep.appkit.NSLayoutManager;
import dstep.appkit.NSMenu;
import dstep.appkit.NSParagraphStyle;
import dstep.appkit.NSPasteboard;
import dstep.appkit.NSRulerMarker;
import dstep.appkit.NSRulerView;
import dstep.appkit.NSText;
import dstep.appkit.NSTextAttachment;
import dstep.appkit.NSTextContainer;
import dstep.appkit.NSTextInputClient;
import dstep.appkit.NSTextStorage;
import dstep.appkit.NSUserInterfaceValidation;
import dstep.applicationservices.coregraphics.CGBase;
import dstep.foundation.NSArray;
import dstep.foundation.NSAttributedString;
import dstep.foundation.NSDictionary;
import dstep.foundation.NSGeometry;
import dstep.foundation.NSNotification;
import dstep.foundation.NSObjCRuntime;
import dstep.foundation.NSObject;
import dstep.foundation.NSRange;
import dstep.foundation.NSUndoManager;
import dstep.foundation.NSString;
import dstep.objc.bridge.Bridge;
import dstep.objc.objc;

import bindings = dstep.appkit.NSTextView_bindings;

typedef NSUInteger NSSelectionGranularity;
typedef NSUInteger NSSelectionAffinity;
typedef NSUInteger NSFindPanelAction;
typedef NSUInteger NSFindPanelSubstringMatchType;

private
{
	NSString NSFindPanelSearchOptionsPboardType_;
	NSString NSFindPanelCaseInsensitiveSearch_;
	NSString NSFindPanelSubstringMatch_;
	NSString NSAllRomanInputSourcesLocaleIdentifier_;
	NSString NSTextViewWillChangeNotifyingTextViewNotification_;
	NSString NSTextViewDidChangeSelectionNotification_;
	NSString NSTextViewDidChangeTypingAttributesNotification_;
}

NSString NSFindPanelSearchOptionsPboardType ()
{
	if (NSFindPanelSearchOptionsPboardType_)
		return NSFindPanelSearchOptionsPboardType_;

	return NSFindPanelSearchOptionsPboardType_ = new NSString(bindings.NSFindPanelSearchOptionsPboardType);
}

NSString NSFindPanelCaseInsensitiveSearch ()
{
	if (NSFindPanelCaseInsensitiveSearch_)
		return NSFindPanelCaseInsensitiveSearch_;

	return NSFindPanelCaseInsensitiveSearch_ = new NSString(bindings.NSFindPanelCaseInsensitiveSearch);
}

NSString NSFindPanelSubstringMatch ()
{
	if (NSFindPanelSubstringMatch_)
		return NSFindPanelSubstringMatch_;

	return NSFindPanelSubstringMatch_ = new NSString(bindings.NSFindPanelSubstringMatch);
}

NSString NSAllRomanInputSourcesLocaleIdentifier ()
{
	if (NSAllRomanInputSourcesLocaleIdentifier_)
		return NSAllRomanInputSourcesLocaleIdentifier_;

	return NSAllRomanInputSourcesLocaleIdentifier_ = new NSString(bindings.NSAllRomanInputSourcesLocaleIdentifier);
}

NSString NSTextViewWillChangeNotifyingTextViewNotification ()
{
	if (NSTextViewWillChangeNotifyingTextViewNotification_)
		return NSTextViewWillChangeNotifyingTextViewNotification_;

	return NSTextViewWillChangeNotifyingTextViewNotification_ = new NSString(bindings.NSTextViewWillChangeNotifyingTextViewNotification);
}

NSString NSTextViewDidChangeSelectionNotification ()
{
	if (NSTextViewDidChangeSelectionNotification_)
		return NSTextViewDidChangeSelectionNotification_;

	return NSTextViewDidChangeSelectionNotification_ = new NSString(bindings.NSTextViewDidChangeSelectionNotification);
}

NSString NSTextViewDidChangeTypingAttributesNotification ()
{
	if (NSTextViewDidChangeTypingAttributesNotification_)
		return NSTextViewDidChangeTypingAttributesNotification_;

	return NSTextViewDidChangeTypingAttributesNotification_ = new NSString(bindings.NSTextViewDidChangeTypingAttributesNotification);
}

enum : NSUInteger
{
	NSSelectByCharacter = 0,
	NSSelectByWord = 1,
	NSSelectByParagraph = 2
}

enum : NSUInteger
{
	NSSelectionAffinityUpstream = 0,
	NSSelectionAffinityDownstream = 1
}

enum : NSUInteger
{
	NSFindPanelActionShowFindPanel = 1,
	NSFindPanelActionNext = 2,
	NSFindPanelActionPrevious = 3,
	NSFindPanelActionReplaceAll = 4,
	NSFindPanelActionReplace = 5,
	NSFindPanelActionReplaceAndFind = 6,
	NSFindPanelActionSetFindString = 7,
	NSFindPanelActionReplaceAllInSelection = 8,
	NSFindPanelActionSelectAll = 9,
	NSFindPanelActionSelectAllInSelection = 10
}

enum : NSUInteger
{
	NSFindPanelSubstringMatchTypeContains = 0,
	NSFindPanelSubstringMatchTypeStartsWith = 1,
	NSFindPanelSubstringMatchTypeFullWord = 2,
	NSFindPanelSubstringMatchTypeEndsWith = 3
}

const TNSDragging = `

	bool dragSelectionWithEvent (NSEvent event, NSSize mouseOffset, bool slideBack)
	{
		return invokeObjcSelf!(bool, "dragSelectionWithEvent:offset:slideBack:", NSEvent, NSSize, bool)(event, mouseOffset, slideBack);
	}

	NSImage dragImageForSelectionWithEvent (NSEvent event, NSPointPointer origin)
	{
		return invokeObjcSelf!(NSImage, "dragImageForSelectionWithEvent:origin:", NSEvent, NSPointPointer)(event, origin);
	}

	NSArray acceptableDragTypes ()
	{
		return invokeObjcSelf!(NSArray, "acceptableDragTypes");
	}

	uint dragOperationForDraggingInfo (INSDraggingInfo dragInfo, NSString type)
	{
		return invokeObjcSelf!(uint, "dragOperationForDraggingInfo:type:", INSDraggingInfo, NSString)(dragInfo, type);
	}

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

	//mixin ObjcBindMethod!(dragSelectionWithEvent, "dragSelectionWithEvent:offset:slideBack:");
	//mixin ObjcBindMethod!(dragImageForSelectionWithEvent, "dragImageForSelectionWithEvent:origin:");
	//mixin ObjcBindMethod!(acceptableDragTypes, "acceptableDragTypes");
	//mixin ObjcBindMethod!(dragOperationForDraggingInfo, "dragOperationForDraggingInfo:type:");
	//mixin ObjcBindMethod!(cleanUpAfterDragOperation, "cleanUpAfterDragOperation");

`;

const TNSCompletion = `

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

	NSRange rangeForUserCompletion ()
	{
		return invokeObjcSelf!(NSRange, "rangeForUserCompletion");
	}

	NSArray completionsForPartialWordRange (NSRange charRange, NSInteger* index)
	{
		return invokeObjcSelf!(NSArray, "completionsForPartialWordRange:indexOfSelectedItem:", NSRange, NSInteger*)(charRange, index);
	}

	void insertCompletion (NSString word, NSRange charRange, NSInteger movement, bool flag)
	{
		return invokeObjcSelf!(void, "insertCompletion:forPartialWordRange:movement:isFinal:", NSString, NSRange, NSInteger, bool)(word, charRange, movement, flag);
	}

	//mixin ObjcBindMethod!(complete, "complete:");
	//mixin ObjcBindMethod!(rangeForUserCompletion, "rangeForUserCompletion");
	//mixin ObjcBindMethod!(completionsForPartialWordRange, "completionsForPartialWordRange:indexOfSelectedItem:");
	//mixin ObjcBindMethod!(insertCompletion, "insertCompletion:forPartialWordRange:movement:isFinal:");

`;

const TNSSharing = `

	NSArray selectedRanges ()
	{
		return invokeObjcSelf!(NSArray, "selectedRanges");
	}

	void setSelectedRanges (NSArray ranges, uint affinity, bool stillSelectingFlag)
	{
		return invokeObjcSelf!(void, "setSelectedRanges:affinity:stillSelecting:", NSArray, uint, bool)(ranges, affinity, stillSelectingFlag);
	}

	void setSelectedRanges (NSArray ranges)
	{
		return invokeObjcSelf!(void, "setSelectedRanges:", NSArray)(ranges);
	}

	void setSelectedRange (NSRange charRange, uint affinity, bool stillSelectingFlag)
	{
		return invokeObjcSelf!(void, "setSelectedRange:affinity:stillSelecting:", NSRange, uint, bool)(charRange, affinity, stillSelectingFlag);
	}

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

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

	void setSelectionGranularity (uint granularity)
	{
		return invokeObjcSelf!(void, "setSelectionGranularity:", uint)(granularity);
	}

	void setSelectedTextAttributes (NSDictionary attributeDictionary)
	{
		return invokeObjcSelf!(void, "setSelectedTextAttributes:", NSDictionary)(attributeDictionary);
	}

	NSDictionary selectedTextAttributes ()
	{
		return invokeObjcSelf!(NSDictionary, "selectedTextAttributes");
	}

	void setInsertionPointColor (NSColor color)
	{
		return invokeObjcSelf!(void, "setInsertionPointColor:", NSColor)(color);
	}

	NSColor insertionPointColor ()
	{
		return invokeObjcSelf!(NSColor, "insertionPointColor");
	}

	void updateInsertionPointStateAndRestartTimer (bool restartFlag)
	{
		return invokeObjcSelf!(void, "updateInsertionPointStateAndRestartTimer:", bool)(restartFlag);
	}

	void setMarkedTextAttributes (NSDictionary attributeDictionary)
	{
		return invokeObjcSelf!(void, "setMarkedTextAttributes:", NSDictionary)(attributeDictionary);
	}

	NSDictionary markedTextAttributes ()
	{
		return invokeObjcSelf!(NSDictionary, "markedTextAttributes");
	}

	void setLinkTextAttributes (NSDictionary attributeDictionary)
	{
		return invokeObjcSelf!(void, "setLinkTextAttributes:", NSDictionary)(attributeDictionary);
	}

	NSDictionary linkTextAttributes ()
	{
		return invokeObjcSelf!(NSDictionary, "linkTextAttributes");
	}

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

	void setDisplaysLinkToolTips (bool flag)
	{
		return invokeObjcSelf!(void, "setDisplaysLinkToolTips:", bool)(flag);
	}

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

	void setAcceptsGlyphInfo (bool flag)
	{
		return invokeObjcSelf!(void, "setAcceptsGlyphInfo:", bool)(flag);
	}

	void setRulerVisible (bool flag)
	{
		return invokeObjcSelf!(void, "setRulerVisible:", bool)(flag);
	}

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

	void setUsesRuler (bool flag)
	{
		return invokeObjcSelf!(void, "setUsesRuler:", bool)(flag);
	}

	void setContinuousSpellCheckingEnabled (bool flag)
	{
		return invokeObjcSelf!(void, "setContinuousSpellCheckingEnabled:", bool)(flag);
	}

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

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

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

	void setGrammarCheckingEnabled (bool flag)
	{
		return invokeObjcSelf!(void, "setGrammarCheckingEnabled:", bool)(flag);
	}

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

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

	void setSpellingState (NSInteger value, NSRange charRange)
	{
		return invokeObjcSelf!(void, "setSpellingState:range:", NSInteger, NSRange)(value, charRange);
	}

	NSDictionary typingAttributes ()
	{
		return invokeObjcSelf!(NSDictionary, "typingAttributes");
	}

	void setTypingAttributes (NSDictionary attrs)
	{
		return invokeObjcSelf!(void, "setTypingAttributes:", NSDictionary)(attrs);
	}

	bool shouldChangeTextInRanges (NSArray affectedRanges, NSArray replacementStrings)
	{
		return invokeObjcSelf!(bool, "shouldChangeTextInRanges:replacementStrings:", NSArray, NSArray)(affectedRanges, replacementStrings);
	}

	NSArray rangesForUserTextChange ()
	{
		return invokeObjcSelf!(NSArray, "rangesForUserTextChange");
	}

	NSArray rangesForUserCharacterAttributeChange ()
	{
		return invokeObjcSelf!(NSArray, "rangesForUserCharacterAttributeChange");
	}

	NSArray rangesForUserParagraphAttributeChange ()
	{
		return invokeObjcSelf!(NSArray, "rangesForUserParagraphAttributeChange");
	}

	bool shouldChangeTextInRange (NSRange affectedCharRange, NSString replacementString)
	{
		return invokeObjcSelf!(bool, "shouldChangeTextInRange:replacementString:", NSRange, NSString)(affectedCharRange, replacementString);
	}

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

	NSRange rangeForUserTextChange ()
	{
		return invokeObjcSelf!(NSRange, "rangeForUserTextChange");
	}

	NSRange rangeForUserCharacterAttributeChange ()
	{
		return invokeObjcSelf!(NSRange, "rangeForUserCharacterAttributeChange");
	}

	NSRange rangeForUserParagraphAttributeChange ()
	{
		return invokeObjcSelf!(NSRange, "rangeForUserParagraphAttributeChange");
	}

	void setUsesFindPanel (bool flag)
	{
		return invokeObjcSelf!(void, "setUsesFindPanel:", bool)(flag);
	}

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

	void setAllowsDocumentBackgroundColorChange (bool flag)
	{
		return invokeObjcSelf!(void, "setAllowsDocumentBackgroundColorChange:", bool)(flag);
	}

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

	void setDefaultParagraphStyle (NSParagraphStyle paragraphStyle)
	{
		return invokeObjcSelf!(void, "setDefaultParagraphStyle:", NSParagraphStyle)(paragraphStyle);
	}

	NSParagraphStyle defaultParagraphStyle ()
	{
		return invokeObjcSelf!(NSParagraphStyle, "defaultParagraphStyle");
	}

	void setAllowsUndo (bool flag)
	{
		return invokeObjcSelf!(void, "setAllowsUndo:", bool)(flag);
	}

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

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

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

	void setAllowsImageEditing (bool flag)
	{
		return invokeObjcSelf!(void, "setAllowsImageEditing:", bool)(flag);
	}

	void showFindIndicatorForRange (NSRange charRange)
	{
		return invokeObjcSelf!(void, "showFindIndicatorForRange:", NSRange)(charRange);
	}

	Object delegate_ ()
	{
		return invokeObjcSelf!(Object, "delegate");
	}

	void setDelegate (Object anObject)
	{
		return invokeObjcSelf!(void, "setDelegate:", Object)(anObject);
	}

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

	void setEditable (bool flag)
	{
		return invokeObjcSelf!(void, "setEditable:", bool)(flag);
	}

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

	void setSelectable (bool flag)
	{
		return invokeObjcSelf!(void, "setSelectable:", bool)(flag);
	}

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

	void setRichText (bool flag)
	{
		return invokeObjcSelf!(void, "setRichText:", bool)(flag);
	}

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

	void setImportsGraphics (bool flag)
	{
		return invokeObjcSelf!(void, "setImportsGraphics:", bool)(flag);
	}

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

	void setDrawsBackground (bool flag)
	{
		return invokeObjcSelf!(void, "setDrawsBackground:", bool)(flag);
	}

	NSColor backgroundColor ()
	{
		return invokeObjcSelf!(NSColor, "backgroundColor");
	}

	void setBackgroundColor (NSColor color)
	{
		return invokeObjcSelf!(void, "setBackgroundColor:", NSColor)(color);
	}

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

	void setFieldEditor (bool flag)
	{
		return invokeObjcSelf!(void, "setFieldEditor:", bool)(flag);
	}

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

	void setUsesFontPanel (bool flag)
	{
		return invokeObjcSelf!(void, "setUsesFontPanel:", bool)(flag);
	}

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

	void setSelectedRange (NSRange charRange)
	{
		return invokeObjcSelf!(void, "setSelectedRange:", NSRange)(charRange);
	}

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

	void setSmartInsertDeleteEnabled (bool flag)
	{
		return invokeObjcSelf!(void, "setSmartInsertDeleteEnabled:", bool)(flag);
	}

	NSRange smartDeleteRangeForProposedRange (NSRange proposedCharRange)
	{
		return invokeObjcSelf!(NSRange, "smartDeleteRangeForProposedRange:", NSRange)(proposedCharRange);
	}

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

	void smartInsertForString (NSString pasteString, NSRange charRangeToReplace, NSString** beforeString, NSString** afterString)
	{
		return invokeObjcSelf!(void, "smartInsertForString:replacingRange:beforeString:afterString:", NSString, NSRange, NSString**, NSString**)(pasteString, charRangeToReplace, beforeString, afterString);
	}

	NSString smartInsertBeforeStringForString (NSString pasteString, NSRange charRangeToReplace)
	{
		return invokeObjcSelf!(NSString, "smartInsertBeforeStringForString:replacingRange:", NSString, NSRange)(pasteString, charRangeToReplace);
	}

	NSString smartInsertAfterStringForString (NSString pasteString, NSRange charRangeToReplace)
	{
		return invokeObjcSelf!(NSString, "smartInsertAfterStringForString:replacingRange:", NSString, NSRange)(pasteString, charRangeToReplace);
	}

	void setAutomaticQuoteSubstitutionEnabled (bool flag)
	{
		return invokeObjcSelf!(void, "setAutomaticQuoteSubstitutionEnabled:", bool)(flag);
	}

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

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

	void setAutomaticLinkDetectionEnabled (bool flag)
	{
		return invokeObjcSelf!(void, "setAutomaticLinkDetectionEnabled:", bool)(flag);
	}

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

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

	NSArray allowedInputSourceLocales ()
	{
		return invokeObjcSelf!(NSArray, "allowedInputSourceLocales");
	}

	void setAllowedInputSourceLocales (NSArray localeIdentifiers)
	{
		return invokeObjcSelf!(void, "setAllowedInputSourceLocales:", NSArray)(localeIdentifiers);
	}

	//mixin ObjcBindMethod!(selectedRanges, "selectedRanges");
	//mixin ObjcBindMethod!(setSelectedRanges, "setSelectedRanges:affinity:stillSelecting:");
	//mixin ObjcBindMethod!(setSelectedRanges, "setSelectedRanges:");
	//mixin ObjcBindMethod!(setSelectedRange, "setSelectedRange:affinity:stillSelecting:");
	//mixin ObjcBindMethod!(selectionAffinity, "selectionAffinity");
	//mixin ObjcBindMethod!(selectionGranularity, "selectionGranularity");
	//mixin ObjcBindMethod!(setSelectionGranularity, "setSelectionGranularity:");
	//mixin ObjcBindMethod!(setSelectedTextAttributes, "setSelectedTextAttributes:");
	//mixin ObjcBindMethod!(selectedTextAttributes, "selectedTextAttributes");
	//mixin ObjcBindMethod!(setInsertionPointColor, "setInsertionPointColor:");
	//mixin ObjcBindMethod!(insertionPointColor, "insertionPointColor");
	//mixin ObjcBindMethod!(updateInsertionPointStateAndRestartTimer, "updateInsertionPointStateAndRestartTimer:");
	//mixin ObjcBindMethod!(setMarkedTextAttributes, "setMarkedTextAttributes:");
	//mixin ObjcBindMethod!(markedTextAttributes, "markedTextAttributes");
	//mixin ObjcBindMethod!(setLinkTextAttributes, "setLinkTextAttributes:");
	//mixin ObjcBindMethod!(linkTextAttributes, "linkTextAttributes");
	//mixin ObjcBindMethod!(displaysLinkToolTips, "displaysLinkToolTips");
	//mixin ObjcBindMethod!(setDisplaysLinkToolTips, "setDisplaysLinkToolTips:");
	//mixin ObjcBindMethod!(acceptsGlyphInfo, "acceptsGlyphInfo");
	//mixin ObjcBindMethod!(setAcceptsGlyphInfo, "setAcceptsGlyphInfo:");
	//mixin ObjcBindMethod!(setRulerVisible, "setRulerVisible:");
	//mixin ObjcBindMethod!(usesRuler, "usesRuler");
	//mixin ObjcBindMethod!(setUsesRuler, "setUsesRuler:");
	//mixin ObjcBindMethod!(setContinuousSpellCheckingEnabled, "setContinuousSpellCheckingEnabled:");
	//mixin ObjcBindMethod!(isContinuousSpellCheckingEnabled, "isContinuousSpellCheckingEnabled");
	//mixin ObjcBindMethod!(toggleContinuousSpellChecking, "toggleContinuousSpellChecking:");
	//mixin ObjcBindMethod!(spellCheckerDocumentTag, "spellCheckerDocumentTag");
	//mixin ObjcBindMethod!(setGrammarCheckingEnabled, "setGrammarCheckingEnabled:");
	//mixin ObjcBindMethod!(isGrammarCheckingEnabled, "isGrammarCheckingEnabled");
	//mixin ObjcBindMethod!(toggleGrammarChecking, "toggleGrammarChecking:");
	//mixin ObjcBindMethod!(setSpellingState, "setSpellingState:range:");
	//mixin ObjcBindMethod!(typingAttributes, "typingAttributes");
	//mixin ObjcBindMethod!(setTypingAttributes, "setTypingAttributes:");
	//mixin ObjcBindMethod!(shouldChangeTextInRanges, "shouldChangeTextInRanges:replacementStrings:");
	//mixin ObjcBindMethod!(rangesForUserTextChange, "rangesForUserTextChange");
	//mixin ObjcBindMethod!(rangesForUserCharacterAttributeChange, "rangesForUserCharacterAttributeChange");
	//mixin ObjcBindMethod!(rangesForUserParagraphAttributeChange, "rangesForUserParagraphAttributeChange");
	//mixin ObjcBindMethod!(shouldChangeTextInRange, "shouldChangeTextInRange:replacementString:");
	//mixin ObjcBindMethod!(didChangeText, "didChangeText");
	//mixin ObjcBindMethod!(rangeForUserTextChange, "rangeForUserTextChange");
	//mixin ObjcBindMethod!(rangeForUserCharacterAttributeChange, "rangeForUserCharacterAttributeChange");
	//mixin ObjcBindMethod!(rangeForUserParagraphAttributeChange, "rangeForUserParagraphAttributeChange");
	//mixin ObjcBindMethod!(setUsesFindPanel, "setUsesFindPanel:");
	//mixin ObjcBindMethod!(usesFindPanel, "usesFindPanel");
	//mixin ObjcBindMethod!(setAllowsDocumentBackgroundColorChange, "setAllowsDocumentBackgroundColorChange:");
	//mixin ObjcBindMethod!(allowsDocumentBackgroundColorChange, "allowsDocumentBackgroundColorChange");
	//mixin ObjcBindMethod!(setDefaultParagraphStyle, "setDefaultParagraphStyle:");
	//mixin ObjcBindMethod!(defaultParagraphStyle, "defaultParagraphStyle");
	//mixin ObjcBindMethod!(setAllowsUndo, "setAllowsUndo:");
	//mixin ObjcBindMethod!(allowsUndo, "allowsUndo");
	//mixin ObjcBindMethod!(breakUndoCoalescing, "breakUndoCoalescing");
	//mixin ObjcBindMethod!(allowsImageEditing, "allowsImageEditing");
	//mixin ObjcBindMethod!(setAllowsImageEditing, "setAllowsImageEditing:");
	//mixin ObjcBindMethod!(showFindIndicatorForRange, "showFindIndicatorForRange:");
	//mixin ObjcBindMethod!(delegate_, "delegate");
	//mixin ObjcBindMethod!(setDelegate, "setDelegate:");
	//mixin ObjcBindMethod!(isEditable, "isEditable");
	//mixin ObjcBindMethod!(setEditable, "setEditable:");
	//mixin ObjcBindMethod!(isSelectable, "isSelectable");
	//mixin ObjcBindMethod!(setSelectable, "setSelectable:");
	//mixin ObjcBindMethod!(isRichText, "isRichText");
	//mixin ObjcBindMethod!(setRichText, "setRichText:");
	//mixin ObjcBindMethod!(importsGraphics, "importsGraphics");
	//mixin ObjcBindMethod!(setImportsGraphics, "setImportsGraphics:");
	//mixin ObjcBindMethod!(drawsBackground, "drawsBackground");
	//mixin ObjcBindMethod!(setDrawsBackground, "setDrawsBackground:");
	//mixin ObjcBindMethod!(backgroundColor, "backgroundColor");
	//mixin ObjcBindMethod!(setBackgroundColor, "setBackgroundColor:");
	//mixin ObjcBindMethod!(isFieldEditor, "isFieldEditor");
	//mixin ObjcBindMethod!(setFieldEditor, "setFieldEditor:");
	//mixin ObjcBindMethod!(usesFontPanel, "usesFontPanel");
	//mixin ObjcBindMethod!(setUsesFontPanel, "setUsesFontPanel:");
	//mixin ObjcBindMethod!(isRulerVisible, "isRulerVisible");
	//mixin ObjcBindMethod!(setSelectedRange, "setSelectedRange:");
	//mixin ObjcBindMethod!(smartInsertDeleteEnabled, "smartInsertDeleteEnabled");
	//mixin ObjcBindMethod!(setSmartInsertDeleteEnabled, "setSmartInsertDeleteEnabled:");
	//mixin ObjcBindMethod!(smartDeleteRangeForProposedRange, "smartDeleteRangeForProposedRange:");
	//mixin ObjcBindMethod!(toggleSmartInsertDelete, "toggleSmartInsertDelete:");
	//mixin ObjcBindMethod!(smartInsertForString, "smartInsertForString:replacingRange:beforeString:afterString:");
	//mixin ObjcBindMethod!(smartInsertBeforeStringForString, "smartInsertBeforeStringForString:replacingRange:");
	//mixin ObjcBindMethod!(smartInsertAfterStringForString, "smartInsertAfterStringForString:replacingRange:");
	//mixin ObjcBindMethod!(setAutomaticQuoteSubstitutionEnabled, "setAutomaticQuoteSubstitutionEnabled:");
	//mixin ObjcBindMethod!(isAutomaticQuoteSubstitutionEnabled, "isAutomaticQuoteSubstitutionEnabled");
	//mixin ObjcBindMethod!(toggleAutomaticQuoteSubstitution, "toggleAutomaticQuoteSubstitution:");
	//mixin ObjcBindMethod!(setAutomaticLinkDetectionEnabled, "setAutomaticLinkDetectionEnabled:");
	//mixin ObjcBindMethod!(isAutomaticLinkDetectionEnabled, "isAutomaticLinkDetectionEnabled");
	//mixin ObjcBindMethod!(toggleAutomaticLinkDetection, "toggleAutomaticLinkDetection:");
	//mixin ObjcBindMethod!(allowedInputSourceLocales, "allowedInputSourceLocales");
	//mixin ObjcBindMethod!(setAllowedInputSourceLocales, "setAllowedInputSourceLocales:");

`;

const TNSPasteboard = `

	NSArray writablePasteboardTypes ()
	{
		return invokeObjcSelf!(NSArray, "writablePasteboardTypes");
	}

	bool writeSelectionToPasteboard (NSPasteboard pboard, NSString type)
	{
		return invokeObjcSelf!(bool, "writeSelectionToPasteboard:type:", NSPasteboard, NSString)(pboard, type);
	}

	bool writeSelectionToPasteboard (NSPasteboard pboard, NSArray types)
	{
		return invokeObjcSelf!(bool, "writeSelectionToPasteboard:types:", NSPasteboard, NSArray)(pboard, types);
	}

	NSArray readablePasteboardTypes ()
	{
		return invokeObjcSelf!(NSArray, "readablePasteboardTypes");
	}

	NSString preferredPasteboardTypeFromArray (NSArray availableTypes, NSArray allowedTypes)
	{
		return invokeObjcSelf!(NSString, "preferredPasteboardTypeFromArray:restrictedToTypesFromArray:", NSArray, NSArray)(availableTypes, allowedTypes);
	}

	bool readSelectionFromPasteboard (NSPasteboard pboard, NSString type)
	{
		return invokeObjcSelf!(bool, "readSelectionFromPasteboard:type:", NSPasteboard, NSString)(pboard, type);
	}

	bool readSelectionFromPasteboard (NSPasteboard pboard)
	{
		return invokeObjcSelf!(bool, "readSelectionFromPasteboard:", NSPasteboard)(pboard);
	}

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

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

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

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

	//mixin ObjcBindMethod!(writablePasteboardTypes, "writablePasteboardTypes");
	//mixin ObjcBindMethod!(writeSelectionToPasteboard, "writeSelectionToPasteboard:type:");
	//mixin ObjcBindMethod!(writeSelectionToPasteboard, "writeSelectionToPasteboard:types:");
	//mixin ObjcBindMethod!(readablePasteboardTypes, "readablePasteboardTypes");
	//mixin ObjcBindMethod!(preferredPasteboardTypeFromArray, "preferredPasteboardTypeFromArray:restrictedToTypesFromArray:");
	//mixin ObjcBindMethod!(readSelectionFromPasteboard, "readSelectionFromPasteboard:type:");
	//mixin ObjcBindMethod!(readSelectionFromPasteboard, "readSelectionFromPasteboard:");
	//mixin ObjcBindClassMethod!(registerForServices, "registerForServices");
	//mixin ObjcBindMethod!(validRequestorForSendType, "validRequestorForSendType:returnType:");
	//mixin ObjcBindMethod!(pasteAsPlainText, "pasteAsPlainText:");
	//mixin ObjcBindMethod!(pasteAsRichText, "pasteAsRichText:");

`;

const TNSTextViewDelegate = `

	bool textView (NSTextView textView, Object link, NSUInteger charIndex)
	{
		return invokeObjcSelf!(bool, "textView:clickedOnLink:atIndex:", NSTextView, Object, NSUInteger)(textView, link, charIndex);
	}

	void textView (NSTextView textView, INSTextAttachmentCell cell, NSRect cellFrame, NSUInteger charIndex)
	{
		return invokeObjcSelf!(void, "textView:clickedOnCell:inRect:atIndex:", NSTextView, INSTextAttachmentCell, NSRect, NSUInteger)(textView, cell, cellFrame, charIndex);
	}

	void textView (NSTextView textView, INSTextAttachmentCell cell, NSRect cellFrame, NSUInteger charIndex)
	{
		return invokeObjcSelf!(void, "textView:doubleClickedOnCell:inRect:atIndex:", NSTextView, INSTextAttachmentCell, NSRect, NSUInteger)(textView, cell, cellFrame, charIndex);
	}

	void textView (NSTextView view, INSTextAttachmentCell cell, NSRect rect, NSEvent event, NSUInteger charIndex)
	{
		return invokeObjcSelf!(void, "textView:draggedCell:inRect:event:atIndex:", NSTextView, INSTextAttachmentCell, NSRect, NSEvent, NSUInteger)(view, cell, rect, event, charIndex);
	}

	NSArray textView (NSTextView view, INSTextAttachmentCell cell, NSUInteger charIndex)
	{
		return invokeObjcSelf!(NSArray, "textView:writablePasteboardTypesForCell:atIndex:", NSTextView, INSTextAttachmentCell, NSUInteger)(view, cell, charIndex);
	}

	bool textView (NSTextView view, INSTextAttachmentCell cell, NSUInteger charIndex, NSPasteboard pboard, NSString type)
	{
		return invokeObjcSelf!(bool, "textView:writeCell:atIndex:toPasteboard:type:", NSTextView, INSTextAttachmentCell, NSUInteger, NSPasteboard, NSString)(view, cell, charIndex, pboard, type);
	}

	NSRange textView (NSTextView textView, NSRange oldSelectedCharRange, NSRange newSelectedCharRange)
	{
		return invokeObjcSelf!(NSRange, "textView:willChangeSelectionFromCharacterRange:toCharacterRange:", NSTextView, NSRange, NSRange)(textView, oldSelectedCharRange, newSelectedCharRange);
	}

	NSArray textView (NSTextView textView, NSArray oldSelectedCharRanges, NSArray newSelectedCharRanges)
	{
		return invokeObjcSelf!(NSArray, "textView:willChangeSelectionFromCharacterRanges:toCharacterRanges:", NSTextView, NSArray, NSArray)(textView, oldSelectedCharRanges, newSelectedCharRanges);
	}

	bool textView (NSTextView textView, NSArray affectedRanges, NSArray replacementStrings)
	{
		return invokeObjcSelf!(bool, "textView:shouldChangeTextInRanges:replacementStrings:", NSTextView, NSArray, NSArray)(textView, affectedRanges, replacementStrings);
	}

	NSDictionary textView (NSTextView textView, NSDictionary oldTypingAttributes, NSDictionary newTypingAttributes)
	{
		return invokeObjcSelf!(NSDictionary, "textView:shouldChangeTypingAttributes:toAttributes:", NSTextView, NSDictionary, NSDictionary)(textView, oldTypingAttributes, newTypingAttributes);
	}

	void textViewDidChangeSelection (NSNotification notification)
	{
		return invokeObjcSelf!(void, "textViewDidChangeSelection:", NSNotification)(notification);
	}

	void textViewDidChangeTypingAttributes (NSNotification notification)
	{
		return invokeObjcSelf!(void, "textViewDidChangeTypingAttributes:", NSNotification)(notification);
	}

	NSString textView (NSTextView textView, NSString tooltip, NSUInteger characterIndex)
	{
		return invokeObjcSelf!(NSString, "textView:willDisplayToolTip:forCharacterAtIndex:", NSTextView, NSString, NSUInteger)(textView, tooltip, characterIndex);
	}

	NSArray textView (NSTextView textView, NSArray words, NSRange charRange, NSInteger* index)
	{
		return invokeObjcSelf!(NSArray, "textView:completions:forPartialWordRange:indexOfSelectedItem:", NSTextView, NSArray, NSRange, NSInteger*)(textView, words, charRange, index);
	}

	bool textView (NSTextView textView, NSRange affectedCharRange, NSString replacementString)
	{
		return invokeObjcSelf!(bool, "textView:shouldChangeTextInRange:replacementString:", NSTextView, NSRange, NSString)(textView, affectedCharRange, replacementString);
	}

	bool textView (NSTextView textView, SEL commandSelector)
	{
		return invokeObjcSelf!(bool, "textView:doCommandBySelector:", NSTextView, SEL)(textView, commandSelector);
	}

	NSInteger textView (NSTextView textView, NSInteger value, NSRange affectedCharRange)
	{
		return invokeObjcSelf!(NSInteger, "textView:shouldSetSpellingState:range:", NSTextView, NSInteger, NSRange)(textView, value, affectedCharRange);
	}

	NSMenu textView (NSTextView view, NSMenu menu, NSEvent event, NSUInteger charIndex)
	{
		return invokeObjcSelf!(NSMenu, "textView:menu:forEvent:atIndex:", NSTextView, NSMenu, NSEvent, NSUInteger)(view, menu, event, charIndex);
	}

	bool textView (NSTextView textView, Object link)
	{
		return invokeObjcSelf!(bool, "textView:clickedOnLink:", NSTextView, Object)(textView, link);
	}

	void textView (NSTextView textView, INSTextAttachmentCell cell, NSRect cellFrame)
	{
		return invokeObjcSelf!(void, "textView:clickedOnCell:inRect:", NSTextView, INSTextAttachmentCell, NSRect)(textView, cell, cellFrame);
	}

	void textView (NSTextView textView, INSTextAttachmentCell cell, NSRect cellFrame)
	{
		return invokeObjcSelf!(void, "textView:doubleClickedOnCell:inRect:", NSTextView, INSTextAttachmentCell, NSRect)(textView, cell, cellFrame);
	}

	void textView (NSTextView view, INSTextAttachmentCell cell, NSRect rect, NSEvent event)
	{
		return invokeObjcSelf!(void, "textView:draggedCell:inRect:event:", NSTextView, INSTextAttachmentCell, NSRect, NSEvent)(view, cell, rect, event);
	}

	NSUndoManager undoManagerForTextView (NSTextView view)
	{
		return invokeObjcSelf!(NSUndoManager, "undoManagerForTextView:", NSTextView)(view);
	}

	//mixin ObjcBindMethod!(textView, "textView:clickedOnLink:atIndex:");
	//mixin ObjcBindMethod!(textView, "textView:clickedOnCell:inRect:atIndex:");
	//mixin ObjcBindMethod!(textView, "textView:doubleClickedOnCell:inRect:atIndex:");
	//mixin ObjcBindMethod!(textView, "textView:draggedCell:inRect:event:atIndex:");
	//mixin ObjcBindMethod!(textView, "textView:writablePasteboardTypesForCell:atIndex:");
	//mixin ObjcBindMethod!(textView, "textView:writeCell:atIndex:toPasteboard:type:");
	//mixin ObjcBindMethod!(textView, "textView:willChangeSelectionFromCharacterRange:toCharacterRange:");
	//mixin ObjcBindMethod!(textView, "textView:willChangeSelectionFromCharacterRanges:toCharacterRanges:");
	//mixin ObjcBindMethod!(textView, "textView:shouldChangeTextInRanges:replacementStrings:");
	//mixin ObjcBindMethod!(textView, "textView:shouldChangeTypingAttributes:toAttributes:");
	//mixin ObjcBindMethod!(textViewDidChangeSelection, "textViewDidChangeSelection:");
	//mixin ObjcBindMethod!(textViewDidChangeTypingAttributes, "textViewDidChangeTypingAttributes:");
	//mixin ObjcBindMethod!(textView, "textView:willDisplayToolTip:forCharacterAtIndex:");
	//mixin ObjcBindMethod!(textView, "textView:completions:forPartialWordRange:indexOfSelectedItem:");
	//mixin ObjcBindMethod!(textView, "textView:shouldChangeTextInRange:replacementString:");
	//mixin ObjcBindMethod!(textView, "textView:doCommandBySelector:");
	//mixin ObjcBindMethod!(textView, "textView:shouldSetSpellingState:range:");
	//mixin ObjcBindMethod!(textView, "textView:menu:forEvent:atIndex:");
	//mixin ObjcBindMethod!(textView, "textView:clickedOnLink:");
	//mixin ObjcBindMethod!(textView, "textView:clickedOnCell:inRect:");
	//mixin ObjcBindMethod!(textView, "textView:doubleClickedOnCell:inRect:");
	//mixin ObjcBindMethod!(textView, "textView:draggedCell:inRect:event:");
	//mixin ObjcBindMethod!(undoManagerForTextView, "undoManagerForTextView:");

`;

class NSTextViewDelegate : NSObject
{
	bool textView (NSTextView textView, Object link, NSUInteger charIndex)
	{
		return invokeObjcSelf!(bool, "textView:clickedOnLink:atIndex:", NSTextView, Object, NSUInteger)(textView, link, charIndex);
	}

	void textView (NSTextView textView, INSTextAttachmentCell cell, NSRect cellFrame, NSUInteger charIndex)
	{
		return invokeObjcSelf!(void, "textView:clickedOnCell:inRect:atIndex:", NSTextView, INSTextAttachmentCell, NSRect, NSUInteger)(textView, cell, cellFrame, charIndex);
	}

	void textView_doubleClickedOnCell_inRect_atIndex (NSTextView textView, INSTextAttachmentCell cell, NSRect cellFrame, NSUInteger charIndex)
	{
		return invokeObjcSelf!(void, "textView:doubleClickedOnCell:inRect:atIndex:", NSTextView, INSTextAttachmentCell, NSRect, NSUInteger)(textView, cell, cellFrame, charIndex);
	}

	void textView (NSTextView view, INSTextAttachmentCell cell, NSRect rect, NSEvent event, NSUInteger charIndex)
	{
		return invokeObjcSelf!(void, "textView:draggedCell:inRect:event:atIndex:", NSTextView, INSTextAttachmentCell, NSRect, NSEvent, NSUInteger)(view, cell, rect, event, charIndex);
	}

	NSArray textView (NSTextView view, INSTextAttachmentCell cell, NSUInteger charIndex)
	{
		return invokeObjcSelf!(NSArray, "textView:writablePasteboardTypesForCell:atIndex:", NSTextView, INSTextAttachmentCell, NSUInteger)(view, cell, charIndex);
	}

	bool textView (NSTextView view, INSTextAttachmentCell cell, NSUInteger charIndex, NSPasteboard pboard, NSString type)
	{
		return invokeObjcSelf!(bool, "textView:writeCell:atIndex:toPasteboard:type:", NSTextView, INSTextAttachmentCell, NSUInteger, NSPasteboard, NSString)(view, cell, charIndex, pboard, type);
	}

	NSRange textView (NSTextView textView, NSRange oldSelectedCharRange, NSRange newSelectedCharRange)
	{
		return invokeObjcSelf!(NSRange, "textView:willChangeSelectionFromCharacterRange:toCharacterRange:", NSTextView, NSRange, NSRange)(textView, oldSelectedCharRange, newSelectedCharRange);
	}

	NSArray textView (NSTextView textView, NSArray oldSelectedCharRanges, NSArray newSelectedCharRanges)
	{
		return invokeObjcSelf!(NSArray, "textView:willChangeSelectionFromCharacterRanges:toCharacterRanges:", NSTextView, NSArray, NSArray)(textView, oldSelectedCharRanges, newSelectedCharRanges);
	}

	bool textView_shouldChangeTextInRanges_replacementStrings (NSTextView textView, NSArray affectedRanges, NSArray replacementStrings)
	{
		return invokeObjcSelf!(bool, "textView:shouldChangeTextInRanges:replacementStrings:", NSTextView, NSArray, NSArray)(textView, affectedRanges, replacementStrings);
	}

	NSDictionary textView (NSTextView textView, NSDictionary oldTypingAttributes, NSDictionary newTypingAttributes)
	{
		return invokeObjcSelf!(NSDictionary, "textView:shouldChangeTypingAttributes:toAttributes:", NSTextView, NSDictionary, NSDictionary)(textView, oldTypingAttributes, newTypingAttributes);
	}

	void textViewDidChangeSelection (NSNotification notification)
	{
		return invokeObjcSelf!(void, "textViewDidChangeSelection:", NSNotification)(notification);
	}

	void textViewDidChangeTypingAttributes (NSNotification notification)
	{
		return invokeObjcSelf!(void, "textViewDidChangeTypingAttributes:", NSNotification)(notification);
	}

	NSString textView (NSTextView textView, NSString tooltip, NSUInteger characterIndex)
	{
		return invokeObjcSelf!(NSString, "textView:willDisplayToolTip:forCharacterAtIndex:", NSTextView, NSString, NSUInteger)(textView, tooltip, characterIndex);
	}

	NSArray textView (NSTextView textView, NSArray words, NSRange charRange, NSInteger* index)
	{
		return invokeObjcSelf!(NSArray, "textView:completions:forPartialWordRange:indexOfSelectedItem:", NSTextView, NSArray, NSRange, NSInteger*)(textView, words, charRange, index);
	}

	bool textView (NSTextView textView, NSRange affectedCharRange, NSString replacementString)
	{
		return invokeObjcSelf!(bool, "textView:shouldChangeTextInRange:replacementString:", NSTextView, NSRange, NSString)(textView, affectedCharRange, replacementString);
	}

	bool textView (NSTextView textView, SEL commandSelector)
	{
		return invokeObjcSelf!(bool, "textView:doCommandBySelector:", NSTextView, SEL)(textView, commandSelector);
	}

	NSInteger textView (NSTextView textView, NSInteger value, NSRange affectedCharRange)
	{
		return invokeObjcSelf!(NSInteger, "textView:shouldSetSpellingState:range:", NSTextView, NSInteger, NSRange)(textView, value, affectedCharRange);
	}

	NSMenu textView (NSTextView view, NSMenu menu, NSEvent event, NSUInteger charIndex)
	{
		return invokeObjcSelf!(NSMenu, "textView:menu:forEvent:atIndex:", NSTextView, NSMenu, NSEvent, NSUInteger)(view, menu, event, charIndex);
	}

	bool textView (NSTextView textView, Object link)
	{
		return invokeObjcSelf!(bool, "textView:clickedOnLink:", NSTextView, Object)(textView, link);
	}

	void textView (NSTextView textView, INSTextAttachmentCell cell, NSRect cellFrame)
	{
		return invokeObjcSelf!(void, "textView:clickedOnCell:inRect:", NSTextView, INSTextAttachmentCell, NSRect)(textView, cell, cellFrame);
	}

	void textViewdoubleClickedOnCell_inRect (NSTextView textView, INSTextAttachmentCell cell, NSRect cellFrame)
	{
		return invokeObjcSelf!(void, "textView:doubleClickedOnCell:inRect:", NSTextView, INSTextAttachmentCell, NSRect)(textView, cell, cellFrame);
	}

	void textView (NSTextView view, INSTextAttachmentCell cell, NSRect rect, NSEvent event)
	{
		return invokeObjcSelf!(void, "textView:draggedCell:inRect:event:", NSTextView, INSTextAttachmentCell, NSRect, NSEvent)(view, cell, rect, event);
	}

	NSUndoManager undoManagerForTextView (NSTextView view)
	{
		return invokeObjcSelf!(NSUndoManager, "undoManagerForTextView:", NSTextView)(view);
	}	
}
		
class NSTextView : NSText, INSTextInput, INSUserInterfaceValidations, INSTextInputClient
{
	mixin (ObjcWrap);
	
	NSRect firstRectForCharacterRange (NSRange theRange)
	{
		return invokeObjcSelf!(NSRect, "firstRectForCharacterRange:", NSRange)(theRange);
	}
	
	void setMarkedText (Object aString, NSRange selRange)
	{
		return invokeObjcSelf!(void, "setMarkedText:selectedRange:", Object, NSRange)(aString, selRange);
	}
	
	NSInteger conversationIdentifier ()
	{
		return invokeObjcSelf!(NSInteger, "conversationIdentifier");
	}
	
	NSAttributedString attributedSubstringFromRange (NSRange theRange)
	{
		return invokeObjcSelf!(NSAttributedString, "attributedSubstringFromRange:", NSRange)(theRange);
	}
	
	bool validateUserInterfaceItem (INSValidatedUserInterfaceItem anItem)
	{
		return invokeObjcSelf!(bool, "validateUserInterfaceItem:", INSValidatedUserInterfaceItem)(anItem);
	}
	
	void insertText (Object aString, NSRange replacementRange)
	{
		return invokeObjcSelf!(void, "insertText:replacementRange:", Object, NSRange)(aString, replacementRange);
	}
	
	void doCommandBySelector (SEL aSelector)
	{
		return invokeObjcSelf!(void, "doCommandBySelector:", SEL)(aSelector);
	}
	
	void setMarkedText (Object aString, NSRange selectedRange, NSRange replacementRange)
	{
		return invokeObjcSelf!(void, "setMarkedText:selectedRange:replacementRange:", Object, NSRange, NSRange)(aString, selectedRange, replacementRange);
	}
	
	void unmarkText ()
	{
		return invokeObjcSelf!(void, "unmarkText");
	}
	
	NSRange selectedRange ()
	{
		return invokeObjcSelf!(NSRange, "selectedRange");
	}
	
	NSRange markedRange ()
	{
		return invokeObjcSelf!(NSRange, "markedRange");
	}
	
	bool hasMarkedText ()
	{
		return invokeObjcSelf!(bool, "hasMarkedText");
	}
	
	NSAttributedString attributedSubstringForProposedRange (NSRange aRange, NSRangePointer actualRange)
	{
		return invokeObjcSelf!(NSAttributedString, "attributedSubstringForProposedRange:actualRange:", NSRange, NSRangePointer)(aRange, actualRange);
	}
	
	NSArray validAttributesForMarkedText ()
	{
		return invokeObjcSelf!(NSArray, "validAttributesForMarkedText");
	}
	
	NSRect firstRectForCharacterRange (NSRange aRange, NSRangePointer actualRange)
	{
		return invokeObjcSelf!(NSRect, "firstRectForCharacterRange:actualRange:", NSRange, NSRangePointer)(aRange, actualRange);
	}
	
	NSUInteger characterIndexForPoint (NSPoint aPoint)
	{
		return invokeObjcSelf!(NSUInteger, "characterIndexForPoint:", NSPoint)(aPoint);
	}
	
	NSAttributedString attributedString ()
	{
		return invokeObjcSelf!(NSAttributedString, "attributedString");
	}
	
	CGFloat fractionOfDistanceThroughGlyphForPoint (NSPoint aPoint)
	{
		return invokeObjcSelf!(CGFloat, "fractionOfDistanceThroughGlyphForPoint:", NSPoint)(aPoint);
	}
	
	CGFloat baselineDeltaForCharacterAtIndex (NSUInteger anIndex)
	{
		return invokeObjcSelf!(CGFloat, "baselineDeltaForCharacterAtIndex:", NSUInteger)(anIndex);
	}
	
	NSInteger windowLevel ()
	{
		return invokeObjcSelf!(NSInteger, "windowLevel");
	}
	
	NSTextView initWithFrame (NSRect frameRect, NSTextContainer container)
	{
		return invokeObjcSelf!(NSTextView, "initWithFrame:textContainer:", NSRect, NSTextContainer)(frameRect, container);
	}
	
	this (NSRect frameRect, NSTextContainer container)
	{
		super(NSTextView.alloc.initWithFrame(frameRect, container).objcObject);
	}
	
	NSTextView initWithFrame (NSRect frameRect)
	{
		return invokeObjcSelf!(NSTextView, "initWithFrame:", NSRect)(frameRect);
	}
	
	this (NSRect frameRect)
	{
		super(NSTextView.alloc.initWithFrame(frameRect).objcObject);
	}
	
	NSTextContainer textContainer ()
	{
		return invokeObjcSelf!(NSTextContainer, "textContainer");
	}
	
	void setTextContainer (NSTextContainer container)
	{
		return invokeObjcSelf!(void, "setTextContainer:", NSTextContainer)(container);
	}
	
	void replaceTextContainer (NSTextContainer newContainer)
	{
		return invokeObjcSelf!(void, "replaceTextContainer:", NSTextContainer)(newContainer);
	}
	
	void setTextContainerInset (NSSize inset)
	{
		return invokeObjcSelf!(void, "setTextContainerInset:", NSSize)(inset);
	}
	
	NSSize textContainerInset ()
	{
		return invokeObjcSelf!(NSSize, "textContainerInset");
	}
	
	NSPoint textContainerOrigin ()
	{
		return invokeObjcSelf!(NSPoint, "textContainerOrigin");
	}
	
	void invalidateTextContainerOrigin ()
	{
		return invokeObjcSelf!(void, "invalidateTextContainerOrigin");
	}
	
	NSLayoutManager layoutManager ()
	{
		return invokeObjcSelf!(NSLayoutManager, "layoutManager");
	}
	
	NSTextStorage textStorage ()
	{
		return invokeObjcSelf!(NSTextStorage, "textStorage");
	}
	
	void insertText (Object insertString)
	{
		return invokeObjcSelf!(void, "insertText:", Object)(insertString);
	}
	
	void setConstrainedFrameSize (NSSize desiredSize)
	{
		return invokeObjcSelf!(void, "setConstrainedFrameSize:", NSSize)(desiredSize);
	}
	
	void setAlignment (NSTextAlignment alignment)
	{
		return invokeObjcSelf!(void, "setAlignment:", NSTextAlignment)(alignment);
	}
	
	void setBaseWritingDirection (NSWritingDirection writingDirection, NSRange range)
	{
		return invokeObjcSelf!(void, "setBaseWritingDirection:range:", NSWritingDirection, NSRange)(writingDirection, range);
	}	
	
	void turnOffKerning (Object sender)
	{
		return invokeObjcSelf!(void, "turnOffKerning:", Object)(sender);
	}
	
	void tightenKerning (Object sender)
	{
		return invokeObjcSelf!(void, "tightenKerning:", Object)(sender);
	}
	
	void loosenKerning (Object sender)
	{
		return invokeObjcSelf!(void, "loosenKerning:", Object)(sender);
	}
	
	void useStandardKerning (Object sender)
	{
		return invokeObjcSelf!(void, "useStandardKerning:", Object)(sender);
	}
	
	void turnOffLigatures (Object sender)
	{
		return invokeObjcSelf!(void, "turnOffLigatures:", Object)(sender);
	}
	
	void useStandardLigatures (Object sender)
	{
		return invokeObjcSelf!(void, "useStandardLigatures:", Object)(sender);
	}
	
	void useAllLigatures (Object sender)
	{
		return invokeObjcSelf!(void, "useAllLigatures:", Object)(sender);
	}
	
	void raiseBaseline (Object sender)
	{
		return invokeObjcSelf!(void, "raiseBaseline:", Object)(sender);
	}
	
	void lowerBaseline (Object sender)
	{
		return invokeObjcSelf!(void, "lowerBaseline:", Object)(sender);
	}
	
	void toggleTraditionalCharacterShape (Object sender)
	{
		return invokeObjcSelf!(void, "toggleTraditionalCharacterShape:", Object)(sender);
	}
	
	void outline (Object sender)
	{
		return invokeObjcSelf!(void, "outline:", Object)(sender);
	}
	
	void performFindPanelAction (Object sender)
	{
		return invokeObjcSelf!(void, "performFindPanelAction:", Object)(sender);
	}
	
	void alignJustified (Object sender)
	{
		return invokeObjcSelf!(void, "alignJustified:", Object)(sender);
	}
	
	void changeColor (Object sender)
	{
		return invokeObjcSelf!(void, "changeColor:", Object)(sender);
	}
	
	void changeAttributes (Object sender)
	{
		return invokeObjcSelf!(void, "changeAttributes:", Object)(sender);
	}
	
	void changeDocumentBackgroundColor (Object sender)
	{
		return invokeObjcSelf!(void, "changeDocumentBackgroundColor:", Object)(sender);
	}
	
	void toggleBaseWritingDirection (Object sender)
	{
		return invokeObjcSelf!(void, "toggleBaseWritingDirection:", Object)(sender);
	}
	
	void orderFrontSpacingPanel (Object sender)
	{
		return invokeObjcSelf!(void, "orderFrontSpacingPanel:", Object)(sender);
	}
	
	void orderFrontLinkPanel (Object sender)
	{
		return invokeObjcSelf!(void, "orderFrontLinkPanel:", Object)(sender);
	}
	
	void orderFrontListPanel (Object sender)
	{
		return invokeObjcSelf!(void, "orderFrontListPanel:", Object)(sender);
	}
	
	void orderFrontTablePanel (Object sender)
	{
		return invokeObjcSelf!(void, "orderFrontTablePanel:", Object)(sender);
	}
	
	bool rulerView_shouldMoveMarker (NSRulerView ruler, NSRulerMarker marker)
	{
		return invokeObjcSelf!(bool, "rulerView:shouldMoveMarker:", NSRulerView, NSRulerMarker)(ruler, marker);
	}	
				
	CGFloat rulerView (NSRulerView ruler, NSRulerMarker marker, CGFloat location)
	{
		return invokeObjcSelf!(CGFloat, "rulerView:willMoveMarker:toLocation:", NSRulerView, NSRulerMarker, CGFloat)(ruler, marker, location);
	}

	void rulerView (NSRulerView ruler, NSRulerMarker marker)
	{
		return invokeObjcSelf!(void, "rulerView:didMoveMarker:", NSRulerView, NSRulerMarker)(ruler, marker);
	}
			
	void rulerView_shouldRemoveMarker (NSRulerView ruler, NSRulerMarker marker)
	{
		return invokeObjcSelf!(void, "rulerView:shouldRemoveMarker:", NSRulerView, NSRulerMarker)(ruler, marker);
	}			
	
	void rulerView_didRemoveMarker (NSRulerView ruler, NSRulerMarker marker)
	{
		return invokeObjcSelf!(void, "rulerView:didRemoveMarker:", NSRulerView, NSRulerMarker)(ruler, marker);
	}
			
	bool rulerView_shouldAddMarker (NSRulerView ruler, NSRulerMarker marker)
	{
		return invokeObjcSelf!(bool, "rulerView:shouldAddMarker:", NSRulerView, NSRulerMarker)(ruler, marker);
	}
			
	CGFloat rulerView_willAddMarker_atLocation (NSRulerView ruler, NSRulerMarker marker, CGFloat location)
	{
		return invokeObjcSelf!(CGFloat, "rulerView:willAddMarker:atLocation:", NSRulerView, NSRulerMarker, CGFloat)(ruler, marker, location);
	}					
	
	void rulerView_didAddMarker (NSRulerView ruler, NSRulerMarker marker)
	{
		return invokeObjcSelf!(void, "rulerView:didAddMarker:", NSRulerView, NSRulerMarker)(ruler, marker);
	}
			
	void rulerView (NSRulerView ruler, NSEvent event)
	{
		return invokeObjcSelf!(void, "rulerView:handleMouseDown:", NSRulerView, NSEvent)(ruler, event);
	}
	
	void setNeedsDisplayInRect (NSRect rect, bool flag)
	{
		return invokeObjcSelf!(void, "setNeedsDisplayInRect:avoidAdditionalLayout:", NSRect, bool)(rect, flag);
	}
	
	bool shouldDrawInsertionPoint ()
	{
		return invokeObjcSelf!(bool, "shouldDrawInsertionPoint");
	}
	
	void drawInsertionPointInRect (NSRect rect, NSColor color, bool flag)
	{
		return invokeObjcSelf!(void, "drawInsertionPointInRect:color:turnedOn:", NSRect, NSColor, bool)(rect, color, flag);
	}
	
	void drawViewBackgroundInRect (NSRect rect)
	{
		return invokeObjcSelf!(void, "drawViewBackgroundInRect:", NSRect)(rect);
	}
	
	void updateRuler ()
	{
		return invokeObjcSelf!(void, "updateRuler");
	}
	
	void updateFontPanel ()
	{
		return invokeObjcSelf!(void, "updateFontPanel");
	}
	
	void updateDragTypeRegistration ()
	{
		return invokeObjcSelf!(void, "updateDragTypeRegistration");
	}
	
	NSRange selectionRangeForProposedRange (NSRange proposedCharRange, NSSelectionGranularity granularity)
	{
		return invokeObjcSelf!(NSRange, "selectionRangeForProposedRange:granularity:", NSRange, NSSelectionGranularity)(proposedCharRange, granularity);
	}
	
	void clickedOnCell (Object link, NSUInteger charIndex)
	{
		return invokeObjcSelf!(void, "clickedOnCell:atIndex:", Object, NSUInteger)(link, charIndex);
	}
	
	void startSpeaking (Object sender)
	{
		return invokeObjcSelf!(void, "startSpeaking:", Object)(sender);
	}
	
	void stopSpeaking (Object sender)
	{
		return invokeObjcSelf!(void, "stopSpeaking:", Object)(sender);
	}
	
	NSUInteger characterIndexForInsertionAtPoint (NSPoint point)
	{
		return invokeObjcSelf!(NSUInteger, "characterIndexForInsertionAtPoint:", NSPoint)(point);
	}
	
	// NSDragging
	bool dragSelectionWithEvent (NSEvent event, NSSize mouseOffset, bool slideBack)
	{
		return invokeObjcSelf!(bool, "dragSelectionWithEvent:offset:slideBack:", NSEvent, NSSize, bool)(event, mouseOffset, slideBack);
	}

	NSImage dragImageForSelectionWithEvent (NSEvent event, NSPointPointer origin)
	{
		return invokeObjcSelf!(NSImage, "dragImageForSelectionWithEvent:origin:", NSEvent, NSPointPointer)(event, origin);
	}

	NSArray acceptableDragTypes ()
	{
		return invokeObjcSelf!(NSArray, "acceptableDragTypes");
	}

	uint dragOperationForDraggingInfo (INSDraggingInfo dragInfo, NSString type)
	{
		return invokeObjcSelf!(uint, "dragOperationForDraggingInfo:type:", INSDraggingInfo, NSString)(dragInfo, type);
	}

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

	NSRange rangeForUserCompletion ()
	{
		return invokeObjcSelf!(NSRange, "rangeForUserCompletion");
	}

	NSArray completionsForPartialWordRange (NSRange charRange, NSInteger* index)
	{
		return invokeObjcSelf!(NSArray, "completionsForPartialWordRange:indexOfSelectedItem:", NSRange, NSInteger*)(charRange, index);
	}

	void insertCompletion (NSString word, NSRange charRange, NSInteger movement, bool flag)
	{
		return invokeObjcSelf!(void, "insertCompletion:forPartialWordRange:movement:isFinal:", NSString, NSRange, NSInteger, bool)(word, charRange, movement, flag);
	}
	
	// NSSharing
	NSArray selectedRanges ()
	{
		return invokeObjcSelf!(NSArray, "selectedRanges");
	}

	void setSelectedRanges (NSArray ranges, uint affinity, bool stillSelectingFlag)
	{
		return invokeObjcSelf!(void, "setSelectedRanges:affinity:stillSelecting:", NSArray, uint, bool)(ranges, affinity, stillSelectingFlag);
	}

	void setSelectedRanges (NSArray ranges)
	{
		return invokeObjcSelf!(void, "setSelectedRanges:", NSArray)(ranges);
	}

	void setSelectedRange (NSRange charRange, uint affinity, bool stillSelectingFlag)
	{
		return invokeObjcSelf!(void, "setSelectedRange:affinity:stillSelecting:", NSRange, uint, bool)(charRange, affinity, stillSelectingFlag);
	}

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

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

	void setSelectionGranularity (uint granularity)
	{
		return invokeObjcSelf!(void, "setSelectionGranularity:", uint)(granularity);
	}

	void setSelectedTextAttributes (NSDictionary attributeDictionary)
	{
		return invokeObjcSelf!(void, "setSelectedTextAttributes:", NSDictionary)(attributeDictionary);
	}

	NSDictionary selectedTextAttributes ()
	{
		return invokeObjcSelf!(NSDictionary, "selectedTextAttributes");
	}

	void setInsertionPointColor (NSColor color)
	{
		return invokeObjcSelf!(void, "setInsertionPointColor:", NSColor)(color);
	}

	NSColor insertionPointColor ()
	{
		return invokeObjcSelf!(NSColor, "insertionPointColor");
	}

	void updateInsertionPointStateAndRestartTimer (bool restartFlag)
	{
		return invokeObjcSelf!(void, "updateInsertionPointStateAndRestartTimer:", bool)(restartFlag);
	}

	void setMarkedTextAttributes (NSDictionary attributeDictionary)
	{
		return invokeObjcSelf!(void, "setMarkedTextAttributes:", NSDictionary)(attributeDictionary);
	}

	NSDictionary markedTextAttributes ()
	{
		return invokeObjcSelf!(NSDictionary, "markedTextAttributes");
	}

	void setLinkTextAttributes (NSDictionary attributeDictionary)
	{
		return invokeObjcSelf!(void, "setLinkTextAttributes:", NSDictionary)(attributeDictionary);
	}

	NSDictionary linkTextAttributes ()
	{
		return invokeObjcSelf!(NSDictionary, "linkTextAttributes");
	}

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

	void setDisplaysLinkToolTips (bool flag)
	{
		return invokeObjcSelf!(void, "setDisplaysLinkToolTips:", bool)(flag);
	}

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

	void setAcceptsGlyphInfo (bool flag)
	{
		return invokeObjcSelf!(void, "setAcceptsGlyphInfo:", bool)(flag);
	}

	void setRulerVisible (bool flag)
	{
		return invokeObjcSelf!(void, "setRulerVisible:", bool)(flag);
	}

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

	void setUsesRuler (bool flag)
	{
		return invokeObjcSelf!(void, "setUsesRuler:", bool)(flag);
	}

	void setContinuousSpellCheckingEnabled (bool flag)
	{
		return invokeObjcSelf!(void, "setContinuousSpellCheckingEnabled:", bool)(flag);
	}

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

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

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

	void setGrammarCheckingEnabled (bool flag)
	{
		return invokeObjcSelf!(void, "setGrammarCheckingEnabled:", bool)(flag);
	}

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

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

	void setSpellingState (NSInteger value, NSRange charRange)
	{
		return invokeObjcSelf!(void, "setSpellingState:range:", NSInteger, NSRange)(value, charRange);
	}

	NSDictionary typingAttributes ()
	{
		return invokeObjcSelf!(NSDictionary, "typingAttributes");
	}

	void setTypingAttributes (NSDictionary attrs)
	{
		return invokeObjcSelf!(void, "setTypingAttributes:", NSDictionary)(attrs);
	}

	bool shouldChangeTextInRanges (NSArray affectedRanges, NSArray replacementStrings)
	{
		return invokeObjcSelf!(bool, "shouldChangeTextInRanges:replacementStrings:", NSArray, NSArray)(affectedRanges, replacementStrings);
	}

	NSArray rangesForUserTextChange ()
	{
		return invokeObjcSelf!(NSArray, "rangesForUserTextChange");
	}

	NSArray rangesForUserCharacterAttributeChange ()
	{
		return invokeObjcSelf!(NSArray, "rangesForUserCharacterAttributeChange");
	}

	NSArray rangesForUserParagraphAttributeChange ()
	{
		return invokeObjcSelf!(NSArray, "rangesForUserParagraphAttributeChange");
	}

	bool shouldChangeTextInRange (NSRange affectedCharRange, NSString replacementString)
	{
		return invokeObjcSelf!(bool, "shouldChangeTextInRange:replacementString:", NSRange, NSString)(affectedCharRange, replacementString);
	}

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

	NSRange rangeForUserTextChange ()
	{
		return invokeObjcSelf!(NSRange, "rangeForUserTextChange");
	}

	NSRange rangeForUserCharacterAttributeChange ()
	{
		return invokeObjcSelf!(NSRange, "rangeForUserCharacterAttributeChange");
	}

	NSRange rangeForUserParagraphAttributeChange ()
	{
		return invokeObjcSelf!(NSRange, "rangeForUserParagraphAttributeChange");
	}

	void setUsesFindPanel (bool flag)
	{
		return invokeObjcSelf!(void, "setUsesFindPanel:", bool)(flag);
	}

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

	void setAllowsDocumentBackgroundColorChange (bool flag)
	{
		return invokeObjcSelf!(void, "setAllowsDocumentBackgroundColorChange:", bool)(flag);
	}

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

	void setDefaultParagraphStyle (NSParagraphStyle paragraphStyle)
	{
		return invokeObjcSelf!(void, "setDefaultParagraphStyle:", NSParagraphStyle)(paragraphStyle);
	}

	NSParagraphStyle defaultParagraphStyle ()
	{
		return invokeObjcSelf!(NSParagraphStyle, "defaultParagraphStyle");
	}

	void setAllowsUndo (bool flag)
	{
		return invokeObjcSelf!(void, "setAllowsUndo:", bool)(flag);
	}

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

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

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

	void setAllowsImageEditing (bool flag)
	{
		return invokeObjcSelf!(void, "setAllowsImageEditing:", bool)(flag);
	}

	void showFindIndicatorForRange (NSRange charRange)
	{
		return invokeObjcSelf!(void, "showFindIndicatorForRange:", NSRange)(charRange);
	}

	Object delegate_ ()
	{
		return invokeObjcSelf!(Object, "delegate");
	}

	void setDelegate (Object anObject)
	{
		return invokeObjcSelf!(void, "setDelegate:", Object)(anObject);
	}

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

	void setEditable (bool flag)
	{
		return invokeObjcSelf!(void, "setEditable:", bool)(flag);
	}

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

	void setSelectable (bool flag)
	{
		return invokeObjcSelf!(void, "setSelectable:", bool)(flag);
	}

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

	void setRichText (bool flag)
	{
		return invokeObjcSelf!(void, "setRichText:", bool)(flag);
	}

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

	void setImportsGraphics (bool flag)
	{
		return invokeObjcSelf!(void, "setImportsGraphics:", bool)(flag);
	}

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

	void setDrawsBackground (bool flag)
	{
		return invokeObjcSelf!(void, "setDrawsBackground:", bool)(flag);
	}

	NSColor backgroundColor ()
	{
		return invokeObjcSelf!(NSColor, "backgroundColor");
	}

	void setBackgroundColor (NSColor color)
	{
		return invokeObjcSelf!(void, "setBackgroundColor:", NSColor)(color);
	}

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

	void setFieldEditor (bool flag)
	{
		return invokeObjcSelf!(void, "setFieldEditor:", bool)(flag);
	}

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

	void setUsesFontPanel (bool flag)
	{
		return invokeObjcSelf!(void, "setUsesFontPanel:", bool)(flag);
	}

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

	void setSelectedRange (NSRange charRange)
	{
		return invokeObjcSelf!(void, "setSelectedRange:", NSRange)(charRange);
	}

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

	void setSmartInsertDeleteEnabled (bool flag)
	{
		return invokeObjcSelf!(void, "setSmartInsertDeleteEnabled:", bool)(flag);
	}

	NSRange smartDeleteRangeForProposedRange (NSRange proposedCharRange)
	{
		return invokeObjcSelf!(NSRange, "smartDeleteRangeForProposedRange:", NSRange)(proposedCharRange);
	}

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

	void smartInsertForString (NSString pasteString, NSRange charRangeToReplace, NSString** beforeString, NSString** afterString)
	{
		return invokeObjcSelf!(void, "smartInsertForString:replacingRange:beforeString:afterString:", NSString, NSRange, NSString**, NSString**)(pasteString, charRangeToReplace, beforeString, afterString);
	}

	NSString smartInsertBeforeStringForString (NSString pasteString, NSRange charRangeToReplace)
	{
		return invokeObjcSelf!(NSString, "smartInsertBeforeStringForString:replacingRange:", NSString, NSRange)(pasteString, charRangeToReplace);
	}

	NSString smartInsertAfterStringForString (NSString pasteString, NSRange charRangeToReplace)
	{
		return invokeObjcSelf!(NSString, "smartInsertAfterStringForString:replacingRange:", NSString, NSRange)(pasteString, charRangeToReplace);
	}

	void setAutomaticQuoteSubstitutionEnabled (bool flag)
	{
		return invokeObjcSelf!(void, "setAutomaticQuoteSubstitutionEnabled:", bool)(flag);
	}

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

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

	void setAutomaticLinkDetectionEnabled (bool flag)
	{
		return invokeObjcSelf!(void, "setAutomaticLinkDetectionEnabled:", bool)(flag);
	}

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

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

	NSArray allowedInputSourceLocales ()
	{
		return invokeObjcSelf!(NSArray, "allowedInputSourceLocales");
	}

	void setAllowedInputSourceLocales (NSArray localeIdentifiers)
	{
		return invokeObjcSelf!(void, "setAllowedInputSourceLocales:", NSArray)(localeIdentifiers);
	}
	
	// NSPasteboard
	NSArray writablePasteboardTypes ()
	{
		return invokeObjcSelf!(NSArray, "writablePasteboardTypes");
	}

	bool writeSelectionToPasteboard (NSPasteboard pboard, NSString type)
	{
		return invokeObjcSelf!(bool, "writeSelectionToPasteboard:type:", NSPasteboard, NSString)(pboard, type);
	}

	bool writeSelectionToPasteboard (NSPasteboard pboard, NSArray types)
	{
		return invokeObjcSelf!(bool, "writeSelectionToPasteboard:types:", NSPasteboard, NSArray)(pboard, types);
	}

	NSArray readablePasteboardTypes ()
	{
		return invokeObjcSelf!(NSArray, "readablePasteboardTypes");
	}

	NSString preferredPasteboardTypeFromArray (NSArray availableTypes, NSArray allowedTypes)
	{
		return invokeObjcSelf!(NSString, "preferredPasteboardTypeFromArray:restrictedToTypesFromArray:", NSArray, NSArray)(availableTypes, allowedTypes);
	}

	bool readSelectionFromPasteboard (NSPasteboard pboard, NSString type)
	{
		return invokeObjcSelf!(bool, "readSelectionFromPasteboard:type:", NSPasteboard, NSString)(pboard, type);
	}

	bool readSelectionFromPasteboard (NSPasteboard pboard)
	{
		return invokeObjcSelf!(bool, "readSelectionFromPasteboard:", NSPasteboard)(pboard);
	}

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

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

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

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