This is Text.m in view mode; [Download] [Up]
/* Implementation Text class
*
* Copyright (C) 1993 The Board of Trustees of
* The Leland Stanford Junior University. All Rights Reserved.
*
* Authors: Scott Francis, Paul Kunz and Jeff Kamerer (SLAC)
* Mike L. Kienenberger (Alaska)
*
* This file is part of an Objective-C class library for a window system
*
* Text.m,v 1.17 1995/04/19 00:42:58 pfkeb Exp
*/
#define READTEXT_BUFFERSIZE 100
#include "Text.h"
#include <stdlib.h> /* for free() */
#ifdef sgi
#include <malloc.h> /* although you might need to edit malloc.h */
#endif /* sgi */
extern char *TextInstanceName( void );
@implementation Text
- initFrame:(const NXRect *)frameRect
{
return [self initFrame:frameRect text:"" alignment:NX_LEFTALIGNED];
}
- initFrame:(const NXRect *)frameRect text:(const char *)theText
alignment:(int)mode
{
[super initFrame:frameRect];
if (_textString) {
free(_textString);
}
if (theText) {
_textString = (char *)malloc(strlen(theText) + 1);
strcpy(_textString, theText);
} else {
_textString = (char *)malloc(1);
*_textString = '\0';
_numTextLines = 1;
}
// [self _init_Text];
instancename = TextInstanceName();
return self;
}
- setMonoFont:(BOOL)flag
{
mono = flag;
return self;
}
- setEditable:(BOOL)flag
{
editable = flag;
return self;
}
- setSelectable:(BOOL)flag
{
selectable = flag;
return self;
}
- setFlipped:(BOOL)flag
{
flipped = flag;
return self;
}
- read:(TypedStream *)ts;
{
[super read:ts];
objc_read_type( ts, "c", &mono );
objc_read_type( ts, "c", &editable );
objc_read_type( ts, "c", &selectable );
objc_read_type( ts, "c", &flipped );
objc_read_string( ts, &_textString);
return self;
}
- awake
{
[super awake];
// [self _init_Text];
instancename = TextInstanceName();
_numTextLines = 1;
return self;
}
- write:(TypedStream *)ts
{
[super write:ts];
return self;
}
- setText:(const char *)aString
{
if (aString == _textString)
return self;
if (_textString) {
free(_textString);
}
if (aString) {
_textString = (char *)malloc(strlen(aString) + 1);
strcpy(_textString, aString);
} else {
_textString = (char *)malloc(1);
*_textString = '\0';
}
[self _setText];
return self;
}
- (int)textLength
{
return [self _textLength];
}
- setSel:(int)start :(int)end
{
return [self _setSel:start :end];
}
- (int)getSubstring:(char *)buf start:(int)startPos length:(int)numChars
{
return [self _getSubstring:buf start:startPos length:numChars];
}
- (int)charLength
{
return [self textLength];
}
- replaceSel:(const char *)aString
{
return [self _replaceSel:aString];
}
- readText:(NXStream *)stream
{
char buffer[READTEXT_BUFFERSIZE];
int location = 0;
int howMany;
if (!stream) {
return self;
}
[self _preReadText];
[self setText:""];
do {
howMany = NXRead(stream, buffer, READTEXT_BUFFERSIZE);
[self setSel:location :location];
if (howMany < READTEXT_BUFFERSIZE) {
buffer[howMany] = '\0';
}
[self replaceSel:buffer];
location += READTEXT_BUFFERSIZE;
} while (howMany == READTEXT_BUFFERSIZE);
[self _postReadText];
return self;
}
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.