1997-12-04 01:58:57 +00:00
|
|
|
|
/*
|
1998-01-30 00:34:25 +00:00
|
|
|
|
NSTextView.m
|
1997-12-04 01:58:57 +00:00
|
|
|
|
|
|
|
|
|
Copyright (C) 1996 Free Software Foundation, Inc.
|
|
|
|
|
|
1998-08-19 09:00:26 +00:00
|
|
|
|
Author: Daniel B<EFBFBD>hringer <boehring@biomed.ruhr-uni-bochum.de>
|
|
|
|
|
Date: August 1998
|
1998-08-20 09:56:26 +00:00
|
|
|
|
Source by Daniel B<EFBFBD>hringer integrated into GNUstep gui
|
|
|
|
|
by Felipe A. Rodriguez <far@ix.netcom.com>
|
1998-08-19 09:00:26 +00:00
|
|
|
|
|
1997-12-04 01:58:57 +00:00
|
|
|
|
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 Library 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
|
|
|
|
|
Library General Public License for more details.
|
|
|
|
|
|
|
|
|
|
You should have received a copy of the GNU Library General Public
|
|
|
|
|
License along with this library; if not, write to the Free
|
|
|
|
|
Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
|
|
|
*/
|
|
|
|
|
|
1998-08-19 09:00:26 +00:00
|
|
|
|
#include <AppKit/NSTextView.h>
|
|
|
|
|
#include <AppKit/NSPasteboard.h>
|
1998-08-20 09:56:26 +00:00
|
|
|
|
#include <AppKit/NSSpellChecker.h>
|
|
|
|
|
#include <AppKit/NSFontPanel.h>
|
|
|
|
|
#include <AppKit/NSControl.h>
|
1998-08-19 09:00:26 +00:00
|
|
|
|
|
1998-08-20 09:56:26 +00:00
|
|
|
|
#define ASSIGN(variable, value) [value retain]; \
|
|
|
|
|
[variable release]; \
|
|
|
|
|
variable = value;
|
1997-12-04 01:58:57 +00:00
|
|
|
|
|
1998-08-19 09:00:26 +00:00
|
|
|
|
|
1998-08-20 09:56:26 +00:00
|
|
|
|
@implementation NSTextView
|
1998-08-19 09:00:26 +00:00
|
|
|
|
|
1998-08-20 09:56:26 +00:00
|
|
|
|
- (void)insertText:(NSString *)insertString
|
|
|
|
|
{
|
1998-08-19 09:00:26 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
- (NSArray*)acceptableDragTypes
|
|
|
|
|
{
|
|
|
|
|
NSMutableArray *ret = [NSMutableArray arrayWithObjects:NSStringPboardType,
|
|
|
|
|
NSColorPboardType, nil];
|
|
|
|
|
|
|
|
|
|
if([self isRichText])
|
|
|
|
|
[ret addObject:NSRTFPboardType];
|
|
|
|
|
if([self importsGraphics])
|
|
|
|
|
[ret addObject:NSRTFDPboardType];
|
1998-08-20 09:56:26 +00:00
|
|
|
|
|
1998-08-19 09:00:26 +00:00
|
|
|
|
return ret;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
- (void)updateDragTypeRegistration
|
|
|
|
|
{
|
|
|
|
|
[self registerForDraggedTypes:[self acceptableDragTypes]];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
- (NSRange) selectionRangeForProposedRange:(NSRange)proposedCharRange
|
|
|
|
|
granularity:(NSSelectionGranularity)granularity
|
|
|
|
|
{
|
|
|
|
|
switch(granularity)
|
|
|
|
|
{
|
|
|
|
|
case NSSelectByCharacter:
|
|
|
|
|
return proposedCharRange;
|
|
|
|
|
|
|
|
|
|
case NSSelectByWord:
|
|
|
|
|
{ //selectionWordGranularitySet
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case NSSelectByParagraph:
|
|
|
|
|
{ //selectionParagraphGranularitySet
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
}
|
1998-08-20 09:56:26 +00:00
|
|
|
|
|
1998-08-19 09:00:26 +00:00
|
|
|
|
return proposedCharRange;
|
|
|
|
|
}
|
|
|
|
|
|
1998-08-20 09:56:26 +00:00
|
|
|
|
//
|
|
|
|
|
// Managing the Selection
|
|
|
|
|
//
|
|
|
|
|
- (void)setSelectedRange:(NSRange)range
|
|
|
|
|
{
|
|
|
|
|
selected_range = range;
|
|
|
|
|
|
|
|
|
|
if([self usesFontPanel]) // update fontPanel
|
|
|
|
|
{
|
|
|
|
|
BOOL isMultiple=NO;
|
|
|
|
|
NSFont *currentFont;
|
|
|
|
|
if([self isRichText])
|
|
|
|
|
{
|
|
|
|
|
// if(are multiple fonts in selection) isMultiple=YES;
|
|
|
|
|
// else currentFont=[rtfContent attribute:NSFontAttributeName
|
|
|
|
|
// atIndex:range.location longestEffectiveRange:NULL
|
|
|
|
|
// inRange:range]
|
|
|
|
|
}
|
1998-08-20 10:43:36 +00:00
|
|
|
|
// else
|
|
|
|
|
// currentFont = [[self defaultTypingAttributes]
|
|
|
|
|
// objectForKey:NSFontAttributeName];
|
1998-08-20 09:56:26 +00:00
|
|
|
|
[[NSFontPanel sharedFontPanel] setPanelFont:currentFont
|
|
|
|
|
isMultiple:isMultiple];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(range.length) // display
|
|
|
|
|
{
|
|
|
|
|
// disable caret timed entry
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
// enable caret timed entry
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[self scrollRangeToVisible:range];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
- (void)setTypingAttributes:(NSDictionary*) dict
|
|
|
|
|
{
|
|
|
|
|
ASSIGN(typingAttributes, dict);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
- (NSDictionary*)typingAttributes
|
|
|
|
|
{
|
|
|
|
|
if(typingAttributes)
|
|
|
|
|
return typingAttributes;
|
|
|
|
|
else
|
1998-08-20 10:43:36 +00:00
|
|
|
|
// return [self defaultTypingAttributes];
|
|
|
|
|
return nil;
|
1998-08-20 09:56:26 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
- (int) spellCheckerDocumentTag
|
|
|
|
|
{
|
|
|
|
|
if(!spellCheckerDocumentTag)
|
|
|
|
|
spellCheckerDocumentTag = [NSSpellChecker uniqueSpellDocumentTag];
|
|
|
|
|
|
|
|
|
|
return spellCheckerDocumentTag;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//
|
|
|
|
|
// NSIgnoreMisspelledWords protocol
|
|
|
|
|
//
|
|
|
|
|
- (void)ignoreSpelling:(id)sender
|
|
|
|
|
{
|
|
|
|
|
[[NSSpellChecker sharedSpellChecker]
|
|
|
|
|
ignoreWord:[[sender selectedCell] stringValue]
|
|
|
|
|
inSpellDocumentWithTag:[self spellCheckerDocumentTag]];
|
|
|
|
|
}
|
|
|
|
|
|
1997-12-04 01:58:57 +00:00
|
|
|
|
@end
|