This is UGMethodDef.m in view mode; [Download] [Up]
/**************************************************
* SynthBuilder
* Copyright 1993 Nick Porcaro All Rights Reserved
**************************************************/
#import <stdlib.h>
#import <string.h>
#import <appkit/Application.h>
#import <appkit/Control.h>
#import <appkit/PopUpList.h>
#import "UGMethodDef.h"
#import "UGDef.h"
@implementation UGMethodDef
#define MAX_STR 512
static char TempString[MAX_STR];
+ initialize
/* Set the version. This can be used in a later version to distinguish older
* formats when unarchiving documents.
*/
{
[UGMethodDef setVersion:4];
return self;
}
- awakeFromNib
{
theIOSwitchPop = [theIOSwitch target];
[theIOSwitchPop setTarget:self];
[theIOSwitchPop setAutoupdate:YES];
[theIOSwitchPop changeButtonTitle:YES];
[theIOSwitchPop setAction:@selector(takeIOFromMenu:)];
return self;
}
- init
{
[NXApp loadNibSection:"UGMethodDef.nib" owner:self withNames:YES];
xCoord = 0;
yCoord = 0;
isOutput = NO;
theName = NULL;
return self;
}
- initUGDef: aUGDef
{
theUGDef = aUGDef;
return self;
}
- takeXCoordFrom:sender
{
[self setXCoord:(int) [sender intValue]];
[theUGDef updateDisplay];
return self;
}
- takeYCoordFrom:sender
{
[self setYCoord:(int) [sender intValue]];
[theUGDef updateDisplay];
return self;
}
- takeIOFromMenu:sender
{
char *s;
/* This is sort of a hack */
s = (char *) [theIOSwitchPop selectedItem];
if (s)
{
if (strcmp(s, "Output") == 0)
{
isOutput = YES;
}
else
{
isOutput = NO;
}
}
return self;
}
- takeNameFrom:sender
{
[self setName:(char *) [sender stringValue]];
[theUGDef updateDisplay];
return self;
}
- setXCoord:(int) x
{
xCoord = x;
[theXCoordField setIntValue:x];
return self;
}
- setYCoord:(int) y
{
yCoord = y;
[theYCoordField setIntValue:y];
return self;
}
- setIsOutput:(BOOL) val
{
isOutput = val;
return self;
}
- setName:(char *) aName
{
int len;
if (! aName || ! (len = strlen(aName)))
{
return self;
}
if (theName)
{
NXZoneFree([self zone], theName);
}
len += 10; // for good measure!
theName = (char *) NXZoneCalloc([self zone], len, sizeof(char));
strcpy(theName, aName);
[theNameField setStringValue:aName];
return self;
}
- (char *) getName
{
return theName;
}
- (int) xCoord
{
return xCoord;
}
- (int) yCoord
{
return yCoord;
}
- (BOOL) isOutput
{
return isOutput;
}
- updateInspector
{
if (theName)
{
[theNameField setStringValue:theName];
}
else
{
[theNameField setStringValue:""];
}
[theXCoordField setIntValue:xCoord];
[theYCoordField setIntValue:yCoord];
[theIOSwitch setTitle:(isOutput ? "Output" : "Input")];
return self;
}
- edit
{
sprintf(TempString, "%s %s",
[theUGDef getName], theName);
if (! inspector)
{
[NXApp loadNibSection:"UGMethodDef.nib" owner:self withNames:YES];
[self updateInspector];
}
[inspector setTitle:TempString];
[inspector makeKeyAndOrderFront:self];
return self;
}
- closeInspector
{
if (inspector)
{
[inspector performClose:self];
}
return self;
}
- write:(NXTypedStream *) stream
{
[super write:stream];
NXWriteTypes(stream, "*", &theName);
NXWriteTypes(stream, "i", &xCoord);
NXWriteTypes(stream, "i", &yCoord);
NXWriteTypes(stream, "c", &isOutput);
NXWriteTypes(stream, "@", &theUGDef);
return self;
}
- read:(NXTypedStream *) stream
{
int version;
id anAppKitObj;
[super read:stream];
version = NXTypedStreamClassVersion(stream, "UGMethodDef");
if (version == 4)
{
NXReadTypes(stream, "*", &theName);
NXReadTypes(stream, "i", &xCoord);
NXReadTypes(stream, "i", &yCoord);
NXReadTypes(stream, "c", &isOutput);
NXReadTypes(stream, "@", &theUGDef);
}
else
{
/* The first version of this object archived
* appkit stuff - read them here but don't
* save them later.
*/
NXReadTypes(stream, "@", &anAppKitObj);
NXReadTypes(stream, "*", &theName);
NXReadTypes(stream, "i", &xCoord);
NXReadTypes(stream, "i", &yCoord);
NXReadTypes(stream, "c", &isOutput);
NXReadTypes(stream, "@", &anAppKitObj);
NXReadTypes(stream, "@", &anAppKitObj);
NXReadTypes(stream, "@", &anAppKitObj);
NXReadTypes(stream, "@", &anAppKitObj);
NXReadTypes(stream, "@", &theUGDef);
}
return self;
}
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.