/* -*-objc-*- NSText.h The text object Copyright (C) 1996 Free Software Foundation, Inc. Author: Scott Christley Date: 1996 Author: Felipe A. Rodriguez Date: July 1998 Author: Daniel Böhringer Date: August 1998 Author: Nicola Pero Date: December 2000 This file is part of the GNUstep GUI Library. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; see the file COPYING.LIB. If not, see or write to the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef _GNUstep_H_NSText #define _GNUstep_H_NSText /* * The NSText class is now an abstract class. When you allocate an * instance of NSText, an instance of NSTextView is always allocated * instead. * * But you can still subclass NSText to implement your own text * editing class not derived from NSTextView. NSText declares general * methods that a text editing object should have; it has some helper * methods which are simple wrappers around the real basic editing * methods. The real editing methods are not implemented in NSText, * which is why it is abstract. To make a working subclass, you need to * implement these methods, marked as "PRIMITIVE" below. * * The working subclass could potentially be implemented in absolutely * *any* way you want. I have been told that some versions of Emacs can * be embedded as an X subwindow inside alien widgets and windows - so * yes, potentially if you are able to figure out how to embed Emacs * inside the GNUstep NSView tree, you can write a subclass of NSText * which just uses Emacs. */ #import #import #import #import //#import @class NSAttributedString; @class NSData; @class NSNotification; @class NSString; @class NSColor; @class NSFont; typedef NSInteger NSTextAlignment; enum { NSLeftTextAlignment = 0, NSRightTextAlignment, NSCenterTextAlignment, NSJustifiedTextAlignment, NSNaturalTextAlignment }; #if OS_API_VERSION(MAC_OS_X_VERSION_10_11, GS_API_LATEST) enum { NSTextAlignmentLeft = NSLeftTextAlignment, NSTextAlignmentRight = NSRightTextAlignment, NSTextAlignmentCenter = NSCenterTextAlignment, NSTextAlignmentJustified = NSJustifiedTextAlignment, NSTextAlignmentNatural = NSNaturalTextAlignment }; #endif enum { NSTextWritingDirectionEmbedding = (0 << 1), NSTextWritingDirectionOverride = (1 << 1) }; enum { NSIllegalTextMovement = 0, NSReturnTextMovement = 0x10, NSTabTextMovement = 0x11, NSBacktabTextMovement = 0x12, NSLeftTextMovement = 0x13, NSRightTextMovement = 0x14, NSUpTextMovement = 0x15, NSDownTextMovement = 0x16, NSCancelTextMovement = 0x17, NSOtherTextMovement = 0 }; enum { NSParagraphSeparatorCharacter = 0x2029, NSLineSeparatorCharacter = 0x2028, NSTabCharacter = 0x0009, NSFormFeedCharacter = 0x000c, NSNewlineCharacter = 0x000a, NSCarriageReturnCharacter = 0x000d, NSEnterCharacter = 0x0003, NSBackspaceCharacter = 0x0008, NSBackTabCharacter = 0x0019, NSDeleteCharacter = 0x007f, }; /* The following are required by the original openstep doc. */ enum { NSBackspaceKey = 8, NSCarriageReturnKey = 13, NSDeleteKey = 0x7f, NSBacktabKey = 25 }; @interface NSText : NSView { } /* * Getting and Setting Contents */ /* these aren't in OPENSTEP */ - (void) replaceCharactersInRange: (NSRange)aRange withRTF: (NSData*)rtfData; - (void) replaceCharactersInRange: (NSRange)aRange withRTFD: (NSData*)rtfdData; /* PRIMITIVE */ - (void) replaceCharactersInRange: (NSRange)aRange withString: (NSString*)aString; /* PRIMITIVE */ -(void) replaceCharactersInRange: (NSRange)aRange /* GNUstep extension */ withAttributedString: (NSAttributedString *)attrString; /* PRIMITIVE */ - (void) setString: (NSString*)aString; /* PRIMITIVE */ - (NSString*) string; /* * Old fashioned OpenStep methods (wrappers for the previous ones) */ - (void) replaceRange: (NSRange)aRange withString: (NSString*)aString; /* not OPENSTEP */ - (void) replaceRange: (NSRange)aRange withRTF: (NSData*)rtfData; - (void) replaceRange: (NSRange)aRange withRTFD: (NSData*)rtfdData; - (void) setText: (NSString*)aString; - (void) setText: (NSString*)aString range: (NSRange)aRange; /* not OPENSTEP */ - (NSString*) text; /* * Graphic attributes */ /* PRIMITIVE */ - (NSColor*) backgroundColor; /* PRIMITIVE */ - (BOOL) drawsBackground; /* PRIMITIVE */ - (void) setBackgroundColor: (NSColor*)color; /* PRIMITIVE */ - (void) setDrawsBackground: (BOOL)flag; /* * Managing Global Characteristics */ - (BOOL) importsGraphics; /* PRIMITIVE */ - (BOOL) isEditable; /* PRIMITIVE */ - (BOOL) isFieldEditor; /* PRIMITIVE */ - (BOOL) isRichText; /* PRIMITIVE */ - (BOOL) isSelectable; /* PRIMITIVE */ - (void) setEditable: (BOOL)flag; /* PRIMITIVE */ - (void) setFieldEditor: (BOOL)flag; /* PRIMITIVE */ - (void) setImportsGraphics: (BOOL)flag; /* PRIMITIVE */ - (void) setRichText: (BOOL)flag; /* PRIMITIVE */ - (void) setSelectable: (BOOL)flag; /* PRIMITIVE */ /* * Using the font panel */ - (void) setUsesFontPanel: (BOOL)flag; /* PRIMITIVE */ - (BOOL) usesFontPanel; /* PRIMITIVE */ /* * Managing the Ruler */ - (BOOL) isRulerVisible; /* PRIMITIVE */ - (void) toggleRuler: (id)sender; /* PRIMITIVE */ /* * Managing the Selection */ - (NSRange) selectedRange; - (void) setSelectedRange: (NSRange)range; /* * Responding to Editing Commands */ - (void) copy: (id)sender; /* PRIMITIVE */ - (void) copyFont: (id)sender; /* PRIMITIVE */ - (void) copyRuler: (id)sender; /* PRIMITIVE */ - (void) cut: (id)sender; - (void) delete: (id)sender; /* PRIMITIVE */ - (void) paste: (id)sender; /* PRIMITIVE */ - (void) pasteFont: (id)sender; /* PRIMITIVE */ - (void) pasteRuler: (id)sender; /* PRIMITIVE */ - (void) selectAll: (id)sender; /* * Managing Font */ - (void) changeFont: (id)sender; /* PRIMITIVE */ - (NSFont*) font; /* PRIMITIVE */ - (void) setFont: (NSFont*)font; /* PRIMITIVE */ - (void) setFont: (NSFont*)font range: (NSRange)aRange; /* PRIMITIVE */ /* Old OpenStep name for the same method. */ - (void) setFont: (NSFont*)font ofRange: (NSRange)aRange; /* * Managing Alignment */ - (NSTextAlignment) alignment; /* PRIMITIVE */ - (void) setAlignment: (NSTextAlignment)mode; /* PRIMITIVE */ - (void) alignCenter: (id)sender; /* PRIMITIVE */ - (void) alignLeft: (id)sender; /* PRIMITIVE */ - (void) alignRight: (id)sender; /* PRIMITIVE */ /* * Text colour */ - (void) setTextColor: (NSColor*)color range: (NSRange)aRange; /* PRIMITIVE */ /* not OPENSTEP */ - (void) setColor: (NSColor*)color ofRange: (NSRange)aRange; /* PRIMITIVE */ - (void) setTextColor: (NSColor*)color; /* PRIMITIVE */ - (NSColor*) textColor; /* PRIMITIVE */ /* * Text attributes */ - (void) subscript: (id)sender; /* PRIMITIVE */ - (void) superscript: (id)sender; /* PRIMITIVE */ - (void) underline: (id)sender; /* PRIMITIVE */ - (void) unscript: (id)sender; /* PRIMITIVE */ /* * Reading and Writing RTFD Files */ -(BOOL) readRTFDFromFile: (NSString*)path; /* PRIMITIVE */ -(BOOL) writeRTFDToFile: (NSString*)path atomically: (BOOL)flag; /* PRIMITIVE */ -(NSData*) RTFDFromRange: (NSRange)aRange; /* PRIMITIVE */ -(NSData*) RTFFromRange: (NSRange)aRange; /* PRIMITIVE */ /* * Sizing the Frame Rectangle */ - (BOOL) isHorizontallyResizable; /* PRIMITIVE */ - (BOOL) isVerticallyResizable; /* PRIMITIVE */ - (NSSize) maxSize; /* PRIMITIVE */ - (NSSize) minSize; /* PRIMITIVE */ - (void) setHorizontallyResizable: (BOOL)flag; /* PRIMITIVE */ - (void) setMaxSize: (NSSize)newMaxSize; /* PRIMITIVE */ - (void) setMinSize: (NSSize)newMinSize; /* PRIMITIVE */ - (void) setVerticallyResizable: (BOOL)flag; /* PRIMITIVE */ - (void) sizeToFit; /* PRIMITIVE */ /* * Spelling */ - (void) checkSpelling: (id)sender; /* PRIMITIVE */ - (void) showGuessPanel: (id)sender; /* * Scrolling */ - (void) scrollRangeToVisible: (NSRange)aRange; /* PRIMITIVE */ /* * Managing the Delegate */ - (id) delegate; /* PRIMITIVE */ - (void) setDelegate: (id)anObject; /* PRIMITIVE */ /* * NSChangeSpelling protocol */ - (void) changeSpelling: (id)sender; /* PRIMITIVE */ /* * NSIgnoreMisspelledWords protocol */ - (void) ignoreSpelling: (id)sender; /* PRIMITIVE */ /* not OPENSTEP */ @end @interface NSText (GNUstepExtensions) - (NSUInteger) textLength; /* PRIMITIVE */ @end /* Notifications */ APPKIT_EXPORT NSString *NSTextDidBeginEditingNotification; APPKIT_EXPORT NSString *NSTextDidEndEditingNotification; APPKIT_EXPORT NSString *NSTextDidChangeNotification; @interface NSObject (NSTextDelegate) - (BOOL) textShouldBeginEditing: (NSText*)textObject; /* YES means do it */ - (BOOL) textShouldEndEditing: (NSText*)textObject; /* YES means do it */ - (void) textDidBeginEditing: (NSNotification*)notification; - (void) textDidEndEditing: (NSNotification*)notification; - (void) textDidChange: (NSNotification*)notification; /* Any keyDown or paste which changes the contents causes this */ @end #endif // _GNUstep_H_NSText