This is CommandScroll.m in view mode; [Download] [Up]
//************************************************************************ // // Most of this code is from the CommandScroll object. // Numerous additions, deletions, changes and any bugs courtesy of: // // Felipe A. Rodriguez // // Portions of this file were derived from: // // CommandScroll.m // by Joe Freeman // Subprocess Example, Release 2.0 // NeXT Computer, Inc. // // This code is supplied "as is" the author makes no warranty as to its // suitability for any purpose. This code is free and may be distributed // in accordance with the terms of the: // // GNU GENERAL PUBLIC LICENSE // Version 2, June 1991 // copyright (C) 1989, 1991 Free Software Foundation, Inc. // 675 Mass Ave, Cambridge, MA 02139, USA // //************************************************************************ #import "CommandScroll.h" #import <appkit/Application.h> #import <appkit/nextstd.h> #import <defaults/defaults.h> #import <appkit/appkit.h> #import <appkit/Font.h> #import <appkit/Text.h> @implementation CommandScroll - initFrame:(const NXRect *)frameRect { [super initFrame:frameRect]; [self setVertScrollerRequired: YES]; [self setBackgroundGray: NX_WHITE]; [self awake]; return self; } - awake // these initializations implemented here so that this object can be // made an IB palatte more easily { NXRect textRect; id theText; textRect.origin.x = textRect.origin.y = 0.0; [self getContentSize: &(textRect.size)]; theText = [[Text alloc] // create TEXT object initFrame:&textRect text:NULL alignment: NX_LEFTALIGNED]; [theText notifyAncestorWhenFrameChanged:YES]; [theText setHorizResizable:NO]; [theText setVertResizable:YES]; [theText setEditable:NO]; textRect.size.width = 0.0; [theText setMinSize:&(textRect.size)]; [self getContentSize: &(textRect.size)]; textRect.size.height = 1000000; [theText setMaxSize:&(textRect.size)]; [[theText superview] setAutoresizeSubviews:YES]; [[theText superview] setAutosizing: NX_HEIGHTSIZABLE | NX_WIDTHSIZABLE]; [theText setCharFilter: NXFieldFilter]; [theText setMonoFont:FALSE]; [self setDocView: theText]; machineFont = [Font newFont:"Ohlfs" size:10]; helvFont = [Font newFont:"Helvetica" size:12]; return self; } - setDocView:anObject { [super setDocView:anObject]; //set anObject as the doc view of our docView = anObject; //scrollview. [docView setDelegate:self]; return self; } //***************************************************************************** // // append the buffer to the end of the text object // //***************************************************************************** - appendString:(const char *)buffer { if([docView textLength] > 500000) //if the textobject exceeds { //500000 chars, then delete [docView setSel:0 :[docView textLength]]; //all chars [docView delete:self]; } [docView setSel:[docView textLength] :0]; // set selection at end of // text [docView setSelFont:helvFont]; // set font of sel'td text [docView replaceSel:buffer]; // add buffer at selection [docView scrollSelToVisible]; // point and scroll to vis lastTextCount = [docView textLength]; return self; } //***************************************************************************** // // append the buffer to the end of the text object, use a fixed font // -- used by pppstats for proper formatting // //***************************************************************************** - appendStringUseFixedFont:(const char *)buffer { if([docView textLength] > 500000) //if the textobject exceeds { //500000 chars, then delete [docView setSel:0 :[docView textLength]]; //all chars [docView delete:self]; } [docView setSel:[docView textLength] :0]; //set selection at end of //text [docView setSelFont:machineFont]; // set font of sel'td text [docView replaceSel:buffer]; //add buffer at selection [docView scrollSelToVisible]; //point and scroll to vis lastTextCount = [docView textLength]; return self; } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.