This is PreferenceManager.m in view mode; [Download] [Up]
/* PreferenceManager.m
created by Robert Vasvari - July 1994
*/
#import "STSwapBoxManager.h"
#import "STUtil.h"
#import "PreferenceManager.h"
#define RESIZE_CONSTR_WARNING "The change in size constraints will take effect next time a document is opened or resized"
@implementation PreferenceManager
- awakeFromNib
{
[super awakeFromNib];
/* for all matrices, turn off autodisplays here */
[openEmptyMatrix setAutodisplay:NO];
[panel display];
return self;
}
- loadDataFor:(int)boxTag
{
const char *p;
/* general purpose method to display a box specified by the tag
in the preferences panel
for each control in the box:
1: get the current value from the defaults into
an instance variable
2: make the control display that value
*/
switch(boxTag)
{ case 0:
p=getDefaultWithErrorCheck("WindowSize");
if(p)
{ sscanf(p,"%d %d", &winWidth, &winHeight);
[windowWidthText setIntValue:winWidth];
[windowHeightText setIntValue:winHeight];
}
debugfile=(char *)getDefaultWithErrorCheck("DEBUGFILE");
if(debugfile)
{ [debugFileText setStringValue:debugfile];
}
break;
case 1:
openEmptyTag=BoolValueForDefault("NewEmptyDocument");
[openEmptyMatrix selectCellWithTag:openEmptyTag];
break;
default:fprintf(stderr,"loadDataFor: bad boxTag:%d\n",boxTag);
}
return self;
}
- dataChanged:sender
{
BOOL change=NO;
/* this method figures out if there is any change in the currently
selected box and enables/disables the set/revert buttons.
change=(currentvalueOfControl==storedValueOfControl)
*/
[panel disableFlushWindow];
switch([self currentBoxTag])
{ case 0:
change=( (winWidth!=[windowWidthText intValue]) ||
(winHeight!=[windowHeightText intValue]) ||
strcmp(debugfile,[debugFileText stringValue]) );
break;
case 1:
change=(openEmptyTag!=[[openEmptyMatrix selectedCell] tag]);
break;
default: break;
}
if(change)
{ if(![revertButton isEnabled]) [revertButton setEnabled:YES];
if(![setButton isEnabled]) [setButton setEnabled:YES];
[panel setDocEdited:YES];
}
else
{ if([revertButton isEnabled]) [revertButton setEnabled:NO];
if([setButton isEnabled]) [setButton setEnabled:NO];
[panel setDocEdited:NO];
}
[panel reenableFlushWindow];
[panel flushWindow];
return self;
}
- set:sender
{
char buf[BUFSIZE]="";
register const char *a=[NXApp appName];
/* for each control:
1: set instance variable to current value.
2: save current value to the defaults database.
*/
[panel disableFlushWindow];
switch([self currentBoxTag])
{ case 0:
winWidth=[windowWidthText intValue];
winHeight=[windowHeightText intValue];
sprintf(buf,"%d %d", winWidth, winHeight);
NXWriteDefault(a,"WindowSize",buf);
NXWriteDefault(a,"DEBUGFILE",[debugFileText stringValue]);
debugfile=(char *)getDefaultWithErrorCheck("DEBUGFILE");
break;
case 1:
openEmptyTag=[[openEmptyMatrix selectedCell] tag];
NXWriteDefault(a,"NewEmptyDocument",
openEmptyTag ? "YES" : "NO");
break;
default:fprintf(stderr,"set: bad tag:%d\n", [self currentBoxTag]);
}
if([revertButton isEnabled]) [revertButton setEnabled:NO];
if([setButton isEnabled]) [setButton setEnabled:NO];
[panel setDocEdited:NO];
[panel reenableFlushWindow];
[panel flushWindow];
return self;
}
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.