ftp.nice.ch/Attic/openStep/implementation/gnustep/sources/alpha-snapshots/gnustep-gui-960621.tgz#/gnustep-gui-960621/Source/NSText.m

This is NSText.m in view mode; [Download] [Up]

/* 
   NSText.m

   The RTFD text class

   Copyright (C) 1996 Free Software Foundation, Inc.

   Author:  Scott Christley <scottc@net-community.com>
   Date: 1996
   
   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.

   If you are interested in a warranty or support for this source code,
   contact Scott Christley <scottc@net-community.com> for more information.
   
   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.
*/ 

#include <gnustep/gui/NSText.h>
#include <gnustep/gui/NSApplication.h>
#include <gnustep/gui/NSWindow.h>
#include <gnustep/gui/NSFontPanel.h>

// NSText notifications
NSString *NSTextDidBeginEditingNotification;
NSString *NSTextDidEndEditingNotification;
NSString *NSTextDidChangeNotification;

//
// NSText implementation
//
@implementation NSText

//
// Class methods
//
+ (void)initialize
{
  if (self == [NSText class])
    {
      // Initial version
      [self setVersion:1];
    }
}

//
// Instance methods
//
//
// Initialization
//
- initWithFrame:(NSRect)frameRect
{
  [super initWithFrame:frameRect];

  text_contents = @"Field";
  alignment = NSLeftTextAlignment;
  is_editable = YES;
  is_rich_text = NO;
  is_selectable = YES;
  imports_graphics = NO;
  uses_font_panel = YES;
  is_horizontally_resizable = YES;
  is_vertically_resizable = YES;
  is_ruler_visible = NO;
  is_field_editor = NO;
  background_color = [NSColor whiteColor];
  text_color = [NSColor blackColor];
  default_font = [NSFont userFontOfSize:12];
  return self;
}
//
// Getting and Setting Contents 
//
- (void)replaceRange:(NSRange)range
	     withRTF:(NSData *)rtfData
{}

- (void)replaceRange:(NSRange)range
	    withRTFD:(NSData *)rtfdData
{}

- (NSData *)RTFDFromRange:(NSRange)range
{
  return nil;
}

- (NSData *)RTFFromRange:(NSRange)range
{
  return nil;
}

- (void)setText:(NSString *)string
{
  text_contents = string;
}

- (void)setText:(NSString *)string
	  range:(NSRange)range
{
  [self setSelectedRange:range];
}

- (NSString *)text
{
  return text_contents;
}

//
// Managing Global Characteristics
//
- (NSTextAlignment)alignment
{
  return alignment;
}

- (BOOL)drawsBackground
{
  return YES;
}

- (BOOL)importsGraphics
{
  return imports_graphics;
}

- (BOOL)isEditable
{
  return is_editable;
}

- (BOOL)isRichText
{
  return is_rich_text;
}

- (BOOL)isSelectable
{
  return is_selectable;
}

- (void)setAlignment:(NSTextAlignment)mode
{
  alignment = mode;
}

- (void)setDrawsBackground:(BOOL)flag
{}

- (void)setEditable:(BOOL)flag
{
  is_editable = flag;
  // If we are editable then we are selectable
  if (flag)
    is_selectable = YES;
}

- (void)setImportsGraphics:(BOOL)flag
{
  imports_graphics = flag;
}

- (void)setRichText:(BOOL)flag
{
  is_rich_text = flag;
}

- (void)setSelectable:(BOOL)flag
{
  is_selectable = flag;
  // If we are not selectable then we must not be editable
  if (!flag)
    is_editable = NO;
}

//
// Managing Font and Color
//
- (NSColor *)backgroundColor
{
  return background_color;
}

- (void)changeFont:(id)sender
{
}

- (NSFont *)font
{
  return default_font;
}

- (void)setBackgroundColor:(NSColor *)color
{
  background_color = color;
}

- (void)setColor:(NSColor *)color
	 ofRange:(NSRange)range
{
}

- (void)setFont:(NSFont *)obj
{
}

- (void)setFont:(NSFont *)font
	ofRange:(NSRange)range
{
}

- (void)setTextColor:(NSColor *)color
{
  text_color = color;
}

- (void)setUsesFontPanel:(BOOL)flag
{
  uses_font_panel = YES;
}

- (NSColor *)textColor
{
  return text_color;
}

- (BOOL)usesFontPanel
{
  return uses_font_panel;
}

//
// Managing the Selection
//
- (NSRange)selectedRange
{
  return selected_range;
}

- (void)setSelectedRange:(NSRange)range
{
  selected_range = range;
}

//
// Sizing the Frame Rectangle
//
- (void)setFrame:(NSRect)frameRect
{
  [super setFrame:frameRect];
}

- (BOOL)isHorizontallyResizable
{
  return is_horizontally_resizable;
}

- (BOOL)isVerticallyResizable
{
  return is_vertically_resizable;
}

- (NSSize)maxSize
{
  return NSZeroSize;
}

- (NSSize)minSize
{
  return NSZeroSize;
}

- (void)setHorizontallyResizable:(BOOL)flag
{
  is_horizontally_resizable = flag;
}

- (void)setMaxSize:(NSSize)newMaxSize
{}

- (void)setMinSize:(NSSize)newMinSize
{}

- (void)setVerticallyResizable:(BOOL)flag
{
  is_vertically_resizable = flag;
}

- (void)sizeToFit
{}

//
// Responding to Editing Commands
//
- (void)alignCenter:(id)sender
{}

- (void)alignLeft:(id)sender
{}

- (void)alignRight:(id)sender
{}

- (void)copy:(id)sender
{
}

- (void)copyFont:(id)sender
{}

- (void)copyRuler:(id)sender
{}

- (void)cut:(id)sender
{
}

- (void)delete:(id)sender
{}

- (void)paste:(id)sender
{
}

- (void)pasteFont:(id)sender
{}

- (void)pasteRuler:(id)sender
{}

- (void)selectAll:(id)sender
{
}

- (void)subscript:(id)sender
{
}

- (void)superscript:(id)sender
{
}

- (void)underline:(id)sender
{
}

- (void)unscript:(id)sender
{
}

//
// Managing the Ruler
//
- (BOOL)isRulerVisible
{
  return NO;
}

- (void)toggleRuler:(id)sender
{}

//
// Spelling
//
- (void)checkSpelling:(id)sender
{}

- (void)showGuessPanel:(id)sender
{}

//
// Scrolling
//
- (void)scrollRangeToVisible:(NSRange)range
{}

//
// Reading and Writing RTFD Files
//
- (BOOL)readRTFDFromFile:(NSString *)path
{
  return NO;
}

- (BOOL)writeRTFDToFile:(NSString *)path
	     atomically:(BOOL)flag
{
  return NO;
}

//
// Managing the Field Editor
//
- (BOOL)isFieldEditor
{
  return is_field_editor;
}

- (void)setFieldEditor:(BOOL)flag
{
  is_field_editor = flag;
}

//
// Handling Events 
//
- (void)mouseDown:(NSEvent *)theEvent
{
  // If not selectable then don't recognize the mouse down
  if (!is_selectable) return;

  [[self window] makeFirstResponder:self];
}

- (void)mouseUp:(NSEvent *)theEvent
{
  // If not selectable then don't recognize the mouse up
  if (!is_selectable) return;
}

- (void)mouseMoved:(NSEvent *)theEvent
{
  // If not selectable then don't recognize the mouse moved
  if (!is_selectable) return;
}

- (void)keyDown:(NSEvent *)theEvent
{
  // If not editable then don't recognize the key down
  if (!is_editable) return;
}

- (void)keyUp:(NSEvent *)theEvent
{
  // If not editable then don't recognize the key up
  if (!is_editable) return;
}

- (BOOL)acceptsFirstResponder
{
  if ([self isSelectable])
    return YES;
  else
    return NO;
}

- (BOOL)becomeFirstResponder
{
  if ([self isEditable])
    {
      return YES;
    }
  else
    {
      return NO;
    }
}

//
// Managing the Delegate
//
- (id)delegate
{
  return delegate;
}

- (void)setDelegate:(id)anObject
{
  delegate = anObject;
}

//
// Implemented by the Delegate
//
- (void)textDidBeginEditing:(NSNotification *)aNotification
{
  if ([delegate respondsToSelector:@selector(textDidBeginEditing:)])
    [delegate textDidBeginEditing:nil];
}

- (void)textDidChange:(NSNotification *)aNotification
{
  if ([delegate respondsToSelector:@selector(textDidChange:)])
    [delegate textDidChange:nil];
}

- (void)textDidEndEditing:(NSNotification *)aNotification
{
  if ([delegate respondsToSelector:@selector(textDidEndEditing:)])
    [delegate textDidEndEditing:nil];
}

- (BOOL)textShouldBeginEditing:(NSText *)textObject
{
  if ([delegate respondsToSelector:@selector(textShouldBeginEditing:)])
    return [delegate textShouldBeginEditing:nil];
  else
    return YES;
}

- (BOOL)textShouldEndEditing:(NSText *)textObject
{
  if ([delegate respondsToSelector:@selector(textShouldEndEditing:)])
    return [delegate textShouldEndEditing:nil];
  else
    return YES;
}

//
// Displaying
//
- (void)drawRect:(NSRect)rect
{
}

//
// NSCoding protocol
//
- (void)encodeWithCoder:aCoder
{
  [super encodeWithCoder:aCoder];

  [aCoder encodeObjectReference: delegate withName: @"Delegate"];
  [aCoder encodeObject: text_contents];
  [aCoder encodeValueOfObjCType: "I" at: &alignment];
  [aCoder encodeValueOfObjCType: @encode(BOOL) at: &is_editable];
  [aCoder encodeValueOfObjCType: @encode(BOOL) at: &is_rich_text];
  [aCoder encodeValueOfObjCType: @encode(BOOL) at: &is_selectable];
  [aCoder encodeValueOfObjCType: @encode(BOOL) at: &imports_graphics];
  [aCoder encodeValueOfObjCType: @encode(BOOL) at: &uses_font_panel];
  [aCoder encodeValueOfObjCType: @encode(BOOL) at: &is_horizontally_resizable];
  [aCoder encodeValueOfObjCType: @encode(BOOL) at: &is_vertically_resizable];
  [aCoder encodeValueOfObjCType: @encode(BOOL) at: &is_ruler_visible];
  [aCoder encodeValueOfObjCType: @encode(BOOL) at: &is_field_editor];
  [aCoder encodeObject: background_color];
  [aCoder encodeObject: text_color];
  [aCoder encodeObject: default_font];
  [aCoder encodeValueOfObjCType: @encode(NSRange) at: &selected_range];
}

- initWithCoder:aDecoder
{
  [super initWithCoder:aDecoder];

  [aDecoder decodeObjectAt: &delegate withName: NULL];
  text_contents = [aDecoder decodeObject];
  [aDecoder decodeValueOfObjCType: "I" at: &alignment];
  [aDecoder decodeValueOfObjCType: @encode(BOOL) at: &is_editable];
  [aDecoder decodeValueOfObjCType: @encode(BOOL) at: &is_rich_text];
  [aDecoder decodeValueOfObjCType: @encode(BOOL) at: &is_selectable];
  [aDecoder decodeValueOfObjCType: @encode(BOOL) at: &imports_graphics];
  [aDecoder decodeValueOfObjCType: @encode(BOOL) at: &uses_font_panel];
  [aDecoder decodeValueOfObjCType: @encode(BOOL) 
	    at: &is_horizontally_resizable];
  [aDecoder decodeValueOfObjCType: @encode(BOOL) at: &is_vertically_resizable];
  [aDecoder decodeValueOfObjCType: @encode(BOOL) at: &is_ruler_visible];
  [aDecoder decodeValueOfObjCType: @encode(BOOL) at: &is_field_editor];
  background_color = [aDecoder decodeObject];
  text_color = [aDecoder decodeObject];
  default_font = [aDecoder decodeObject];
  [aDecoder decodeValueOfObjCType: @encode(NSRange) at: &selected_range];

  return self;
}

@end

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.