This is IPref.m in view mode; [Download] [Up]
/* Generated by Interface Builder */ #import "IPref.h" @implementation IPref - printerOff:sender { printeroffF = !printeroffF; return self; } - cshrc:sender { cshrcF = !cshrcF; return self; } - ilogspace:sender { ilogspaceF = !ilogspaceF; return self; } - login:sender { loginF = !loginF; return self; } - updateButtons { [printerOff setState:printeroffF]; [cshrc setState:cshrcF]; [login setState:loginF]; [ilogspace setState:ilogspaceF]; return self; } void doCSH(cmd) char *cmd; { FILE *fd; fd = popen(cmd, "r"); pclose(fd); } - doTasks { char cmd[256]; /* more than enough to hold the command */ cmd[0]='\0'; if (printeroffF) fprintf(stderr, "turn printer off\n"); if (cshrcF) sprintf(cmd, "csh > /dev/console"); if (loginF) sprintf(cmd, "csh -f ~/.login > /dev/console"); if (loginF && cshrcF) sprintf(cmd, "csh ~/.login > /dev/console"); doCSH(cmd); if (ilogspaceF) sprintf(cmd, "csh -f ~/.ilogspace > /dev/console"); doCSH(cmd); return self; } - set:sender { /* this should really be done as a vector passed to NXWriteDefaults * but I never bothered to figure out the c syntax for such a * creature... Admittedly, I'm a bum. */ NXWriteDefault(appName, "cshrc", booltostr(cshrcF)); NXWriteDefault(appName, "ilogspace", booltostr(ilogspaceF)); NXWriteDefault(appName, "login", booltostr(loginF)); NXWriteDefault(appName, "printeroff", booltostr(printeroffF)); NXUpdateDefaults(); return self; } - cancel:sender { [self readDefaults]; return self; } - readDefaults { printeroffF = strtobool(NXGetDefaultValue(appName, "printeroff")); loginF = strtobool(NXGetDefaultValue(appName, "login")); cshrcF = strtobool(NXGetDefaultValue(appName, "cshrc")); ilogspaceF = strtobool(NXGetDefaultValue(appName, "ilogspace")); [self updateButtons]; return self; } - appDidInit:sender { static NXDefaultsVector iLogDefaults = { {"login", "NO"}, {"cshrc", "NO"}, {"ilogspace", "NO"}, {"printeroff", "NO"}, { NULL, NULL } }; appName = "iLog"; NXRegisterDefaults(appName, iLogDefaults); [self readDefaults]; [self doTasks]; [self updateButtons]; return self; } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.