This is FormCell.m in view mode; [Download] [Up]
/* Implementation of FormCell class
*
* Copyright (C) 1993 The Board of Trustees of
* The Leland Stanford Junior University. All Rights Reserved.
*
* Authors: Scott Francis, Paul Kunz, Imran Qureshi, and Libing Wang
*
* This file is part of an Objective-C class library for a window system
*
* FormCell.m,v 1.50 1995/12/13 22:33:01 fedor Exp
*/
#include "FormCell.h"
#include "TextFieldCell.h"
#include "Text.h"
#include <stdlib.h>
#include <string.h>
#include <objc/hashtable.h>
#include "graphics.h"
extern char *FormCellInstanceName(void);
@interface FormCell(WidgetSet)
- (NXCoord)_titleWidth;
@end
@implementation FormCell:ActionCell
- init
{
[super init];
titleCell = [[TextFieldCell alloc] _initAsLabel];
[titleCell setAlignment:NX_RIGHTALIGNED];
textCell = [[TextFieldCell alloc] init];
instancename = FormCellInstanceName();
return self;
}
- initTextCell:(const char *)aString
{
[self init];
[titleCell setStringValue:aString];
return self;
}
- free
{
[titleCell free];
[textCell free];
return [super free];
}
- (NXCoord)titleWidth:(const NXSize *)aSize
{
[self notImplemented:_cmd];
return titleWidth;
}
- (NXCoord)titleWidth
{
return titleWidth;
}
- setTitleWidth:(NXCoord)width
{
NXSize size;
titleWidth = width;
if ( !widgetid ) {
size.width = titleWidth;
size.height = _frame.size.height;
[titleCell _setSize:&size];
}
return self;
}
- (const char *)title
{
return [titleCell stringValue];
}
- setTitle:(const char *)aTitle
{
[titleCell setStringValue:aTitle];
return self;
}
- titleFont
{
return [self notImplemented:_cmd];
}
- setTitleFont:fontObj
{
return [self notImplemented:_cmd];
}
- (int)titleAlignment
{
return [titleCell alignment];
}
- setTitleAlignment:(int)mode
{
[titleCell setAlignment:mode];
return self;
}
- setEnabled:(BOOL)flag
{
[titleCell setEnabled:flag];
[textCell setEnabled:flag];
return self;
}
- (BOOL)isOpaque
{
return YES;
}
- calcCellSize:(NXSize *)theSize inRect:(const NXRect *)aRect
{
return [self notImplemented:_cmd];
}
- drawInside:(const NXRect *)cellFrame inView:controlView
{
return self;
}
- drawSelf:(const NXRect *)cellFrame inView:controlView
{
return self;
}
- (BOOL)trackMouse:(NXEvent*)event inRect:(const NXRect*)aRect
ofView:controlView
{
[self notImplemented:_cmd];
return 0;
}
- resetCursorRect:(const NXRect *)cellFrame inView:controlView
{
return [self notImplemented:_cmd];
}
- write:(NXTypedStream *)stream
{
return self;
}
- read:(TypedStream*)typedStream
{
char *cellContents;
id oldTitleCell;
[super read:typedStream];
objc_read_object(typedStream, &titleCell);
oldTitleCell = titleCell;
cellContents = (char *)[oldTitleCell stringValue];
titleCell = [[TextFieldCell alloc] _initAsLabel];
[titleCell setAlignment:NX_RIGHTALIGNED];
textCell = [[TextFieldCell alloc] init];
[textCell setStringValue:contents];
/* should probably be delayed until "awake" */
[self setTitle:cellContents];
// if we free it, objcX will crash in "awake" or "awakeFromNib"
// if (nil != oldTitleCell) [oldTitleCell free];
return self;
}
// + new;
// + newTextCell;
// + newTextCell:(const char *)aString;
- setStringValue:(const char *)aString
{
[textCell setStringValue:aString];
return self;
}
- (const char *)stringValue
{
return [textCell stringValue];
}
- setIntValue:(int) anInt
{
[textCell setIntValue:anInt];
return self;
}
- (int) intValue
{
return [textCell intValue];
}
- setFloatValue:(float)aFloat
{
[textCell setFloatValue:aFloat];
return self;
}
- (float) floatValue
{
return [textCell floatValue];
}
- (double) doubleValue
{
return [textCell doubleValue];
}
- setDoubleValue:(double)aDouble
{
[textCell setDoubleValue:aDouble];
return self;
}
- titleCell
{
return titleCell;
}
- textCell
{
return textCell;
}
- copyFromZone:(NSZone *) zone
{
FormCell *newCell;
newCell = [super copyFromZone:zone];
[newCell setTitle:[titleCell stringValue]];
[newCell setStringValue:[textCell stringValue]];
return newCell;
}
- _managedBy:parent
{
// [super _managedBy:parent];
[titleCell _managedBy:controlView];
[textCell _managedBy:controlView];
return self;
}
- _destroy
{
[super _destroy];
[titleCell _destroy];
[textCell _destroy];
return self;
}
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.