This is DefaultHandler.m in view mode; [Download] [Up]
/* Generated by Interface Builder */
#import <appkit/nextstd.h>
#import "DefaultHandler.h"
#import <appkit/publicWraps.h>
#import <appkit/defaults.h>
#import <appkit/Matrix.h>
#import <appkit/Form.h>
#import <appkit/Cell.h>
#import <appkit/Button.h>
#import <strings.h>
extern id NXApp;
@implementation DefaultHandler
/*
* The DefaultHandler object contains the data associated with sort
* defaults, and the routines that access them.
*/
+ initialize
{
static NXDefaultsVector Defaults= {
{ "FieldSort", "No" },
{ "Separator", " " },
{ "Start", "" },
{ "End", "" },
{NULL}
};
NXRegisterDefaults("AtYourService", Defaults);
return self;
}
- writeDefaults:sender
{
int useFields=(int) [inSwitch selectedCell];
if (useFields) {
const char *opt;
NXWriteDefault("AtYourService", "FieldSort", "Yes");
opt = [separator stringValue];
if ( *opt ) {
char sep[2];
sep[0] = *opt;
sep[1] = '\0';
if ( strlen(opt) > 1 ) {
[separator setStringValue:sep];
NXBeep();
}
NXWriteDefault("AtYourService", "Separator", sep);
}
opt = [start stringValue];
if ( *opt ) {
char thisOption[100];
/*
* Sort asks for number of fields to skip, we ask for
* first significant field, so we have to minus one here.
*/
float startVal;
startVal=[start floatValue];
startVal--;
sprintf(thisOption,"%g",startVal);
NXWriteDefault("AtYourService", "Start", thisOption);
}
opt = [end stringValue];
if ( *opt ) NXWriteDefault("AtYourService", "End", opt);
}
else NXWriteDefault("AtYourService", "FieldSort", "No");
return self;
}
- readDefaults:sender
{
int useFields;
useFields=(strncmp(NXGetDefaultValue("AtYourService","FieldSort"),"Yes",3) == 0);
[inForm setEnabled:useFields];
[separator setEnabled:useFields];
[inSwitch selectCellAt:useFields:0];
[start setStringValue:NXGetDefaultValue("AtYourService","Start")];
[end setStringValue:NXGetDefaultValue("AtYourService","End")];
[separator setStringValue:NXGetDefaultValue("AtYourService","Separator")];
// This method is called at startup. Set up the entry types for the panel
[start setEntryType:NX_FLOATTYPE];
[end setEntryType:NX_FLOATTYPE];
return self;
}
- changeState:sender
{
/*
* This method enables/disables the row selection based on whether
* row-based sorting will be done
*/
[inForm setEnabled:[inSwitch selectedRow]];
[separator setEnabled:[inSwitch selectedRow]];
return self;
}
- (char *) sortFields
{
/*
* Return the sort field information
*/
char options[100];
strcpy(options,"");
if ( [inSwitch selectedRow] ) {
const char *opt;
opt = [separator stringValue];
if ( *opt ) {
char sep[2];
sep[0] = *opt;
sep[1] = '\0';
strcat(options," -t");
strcat(options,sep);
if ( strlen(opt) > 1 ) {
[separator setStringValue:sep];
NXBeep();
}
}
opt = [start stringValue];
if ( *opt ) {
char thisOption[100];
/*
* Sort asks for number of fields to skip, we ask for
* first significant field, so we have to minus one here.
*/
float startVal;
startVal=[start floatValue];
startVal--;
sprintf(thisOption," +%g",startVal);
strcat(options,thisOption);
}
opt = [end stringValue];
if ( *opt ) {
strcat(options," -");
strcat(options,opt);
}
}
return options;
}
- showPanel:sender
{
[optionPanel makeKeyAndOrderFront:self];
return self;
}
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.