This is PrefController.m in view mode; [Download] [Up]
/*
* Preference Controller. Similar to RandomGenerator it displays views
* view from a holding place in a view according to a pop-up menu.
*
* Copyright (c) 1993 Gil Rivlis
*/
#import "PrefController.h"
#import "Generator.h"
#define SIZE_PREF 0 //whichOne?
#define SHAPE_PREF 1
@implementation PrefController
- awakeFromNib
{
whichOne = SIZE_PREF;
/* get the default universe size and display in the appropriate fields */
[universeHeightField
setIntValue:(atoi(NXGetDefaultValue("LifeByGR","UniverseHeight")))];
[universeWidthField
setIntValue:(atoi(NXGetDefaultValue("LifeByGR","UniverseWidth")))];
/* get the default shape and selcted the appropriate button */
[shapeMatrix selectCellWithTag:((int)([[theGenerator lifeView] lifeChar])
- (int)('a'))];
[self setToView:[sizeView contentView] ];
return self;
}
- window
{
return window;
}
/* see RandomGenerator */
- setToView:theView
{
NXRect boxRect, viewRect;
[multiView getFrame:&boxRect];
[theView getFrame:&viewRect];
[multiView setContentView:theView];
NX_X(&viewRect) = (NX_WIDTH(&boxRect)-NX_WIDTH(&viewRect)) / 2.0;
NX_Y(&viewRect) = (NX_HEIGHT(&boxRect)-NX_HEIGHT(&viewRect)) / 2.0;
[theView setFrame:&viewRect];
[multiView display];
return self;
}
/* see Random Generator */
- setPrefView:sender
{
id newView = nil;
whichOne = [[sender selectedCell] tag];
switch (whichOne) {
case SIZE_PREF:
newView = [sizeView contentView];
break;
case SHAPE_PREF:
newView = [shapeView contentView];
break;
}
[self setToView:newView];
return self;
}
/* saves the new preferences in the default database */
- save:sender
{
char buf[256];
static NXDefaultsVector newDefaults = {
{"UniverseHeight",""}, /* 0 */
{"UniverseWidth", ""}, /* 1 */
{"Mail", ""}, /* 2 */
{"LifeSymbol", ""}, /* 3 */
{NULL, NULL}
};
sprintf(buf,"%d",[universeHeightField intValue]);
newDefaults[0].value = alloca(256);
strcpy(newDefaults[0].value,buf);
sprintf(buf,"%d",[universeWidthField intValue]);
newDefaults[1].value = alloca(256);
strcpy(newDefaults[1].value,buf);
sprintf(buf,"%s", NXGetDefaultValue("LifeByGR","Mail"));
newDefaults[2].value = alloca(256);
strcpy(newDefaults[2].value,buf);
sprintf(buf,"%d", [[shapeMatrix selectedCell] tag]);
newDefaults[3].value = alloca(256);
strcpy(newDefaults[3].value,buf);
NXWriteDefaults("LifeByGR", newDefaults);
return self;
}
/* if we want to actually use it in the current game */
- useNow:sender
{
IntNXSize newSize;
id theLifeView = [theGenerator lifeView];
switch (whichOne) {
case SIZE_PREF:
newSize.width = [universeWidthField intValue];
newSize.height = [universeHeightField intValue];
[theGenerator resetSizeTo:newSize];
break;
case SHAPE_PREF:
[ theLifeView setLifeCharTo:'a'
+[[shapeMatrix selectedCell] tag] ];
[ theLifeView display];
break;
}
return self;
}
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.