This is UGArgDef.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 "UGArgDef.h"
#import "UGDef.h"
extern char *getAppName();
@implementation UGArgDef
static char TempString[MAX_STR];
+ initialize
/* Set the version. This can be used in a later version to distinguish older
* formats when unarchiving documents.
*/
{
[UGArgDef setVersion:3];
return self;
}
- awakeFromNib
{
theTypeSwitchPop = [theTypeSwitch target];
[theTypeSwitchPop setTarget:self];
[theTypeSwitchPop setAutoupdate:YES];
[theTypeSwitchPop changeButtonTitle:YES];
[theTypeSwitchPop setAction:@selector(setArgTypeFromMenu:)];
return self;
}
- init
{
[NXApp loadNibSection:"UGArgDef.nib" owner:self withNames:YES];
argType = 0; /* Make sure this is sync with theTypeSwitch */
theName = NULL;
return self;
}
- initUGDef: aUGDef
{
theUGDef = aUGDef;
return self;
}
- takeNameFrom:sender
{
[self setName:(char *) [sender stringValue]];
[theUGDef updateDisplay];
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:theName];
return self;
}
- takeDefaultValueFrom:sender
{
[self setDefaultValue:(char *) [sender stringValue]];
[theUGDef updateDisplay];
return self;
}
- setDefaultValue:(char *) aDefaultValue
{
int len;
char *val;
if (! aDefaultValue || ! (len = strlen(aDefaultValue)))
{
val = "";
len = 1;
}
else
{
val = aDefaultValue;
}
if (defaultValue)
{
NXZoneFree([self zone], defaultValue);
}
len += 10; // for good measure!
defaultValue = (char *) NXZoneCalloc([self zone], len, sizeof(char));
strcpy(defaultValue, val);
[theDefaultValueField setStringValue:val];
return self;
}
- setArgTypeFromMenu:sender
/* This gets called when the user hits the theTypeSwitchPop */
{
char *s;
s = (char *) [theTypeSwitchPop selectedItem];
if (s)
{
if (strcmp(s, "INT") == 0)
{
argType = INT;
}
else if (strcmp(s, "DOUBLE") == 0)
{
argType = DOUBLE;
}
else if (strcmp(s, "ENV") == 0)
{
argType = ENV;
}
else if (strcmp(s, "BOOLEAN") == 0)
{
argType = BOOLEAN;
}
else if (strcmp(s, "DSPDATUM") == 0)
{
argType = DSPDATUM;
}
else if (strcmp(s, "PARTIALS") == 0)
{
argType = PARTIALS;
}
else
{
NXRunAlertPanel(getAppName(), "Brain fart", NULL, NULL, NULL);
}
}
return self;
}
- setArgType:(int) aType
{
argType = aType;
return self;
}
- (char *) getName
{
return theName;
}
- (int) argType
{
return argType;
}
- (char *) defaultValue
{
return defaultValue;
}
- updateInspector
{
if (theName)
{
[theNameField setStringValue:theName];
}
else
{
[theNameField setStringValue:""];
}
if (defaultValue)
{
[theDefaultValueField setStringValue:defaultValue];
}
else
{
[theDefaultValueField setStringValue:""];
}
switch (argType)
{
case (INT):
{
[theTypeSwitch setTitle:"INT"];
break;
}
case (DOUBLE):
{
[theTypeSwitch setTitle:"DOUBLE"];
break;
}
case (ENV):
{
[theTypeSwitch setTitle:"ENV"];
break;
}
case (BOOLEAN):
{
[theTypeSwitch setTitle:"BOOLEAN"];
break;
}
case (DSPDATUM):
{
[theTypeSwitch setTitle:"DSPDATUM"];
break;
}
case (PARTIALS):
{
[theTypeSwitch setTitle:"PARTIALS"];
break;
}
default:
{
NXRunAlertPanel(getAppName(), "Internal error File: %s Line: %d",
NULL, NULL, NULL, __FILE__, __LINE__);
}
}
return self;
}
- edit
{
sprintf(TempString, "%s %s",
[theUGDef getName], theName);
if (! inspector)
{
[NXApp loadNibSection:"UGArgDef.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, "*", &defaultValue);
NXWriteTypes(stream, "i", &argType);
NXWriteTypes(stream, "@", &theUGDef);
return self;
}
- read:(NXTypedStream *) stream
{
int version;
id anAppKitObj;
[super read:stream];
version = NXTypedStreamClassVersion(stream, "UGArgDef");
if (version == 3)
{
NXReadTypes(stream, "*", &theName);
NXReadTypes(stream, "*", &defaultValue);
NXReadTypes(stream, "i", &argType);
NXReadTypes(stream, "@", &theUGDef);
}
else
{
NXReadTypes(stream, "@", &anAppKitObj);
NXReadTypes(stream, "*", &theName);
NXReadTypes(stream, "*", &defaultValue);
NXReadTypes(stream, "i", &argType);
NXReadTypes(stream, "@", &anAppKitObj);
NXReadTypes(stream, "@", &anAppKitObj);
NXReadTypes(stream, "@", &theUGDef);
NXReadTypes(stream, "@", &anAppKitObj);
}
return self;
}
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.