home *** CD-ROM | disk | FTP | other *** search
- //************************************************************************
- //
- // 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
-