This is Preferences.m in view mode; [Download] [Up]
/* * Written by Guy Roberts of Object Skills Ltd, drifting * in cyberspace without a domain or email address right * now. * May 7 1993. You can use this as a base for a better application * as long as it is made publically available. */ #import "Preferences.h" #define TITLE "Choose a directory" /* Should be in a string table */ #define IS_DIR(m) (((m)&S_IFMT) == S_IFDIR) @implementation Preferences - init { const char *buffer = NXReadDefault(OWNER, "automaticallyLaunchEdit"); [super init]; if (buffer) { if (strcmp(buffer, "NO") == 0) launchEditAutomatically = NO; else if (strcmp(buffer, "YES") == 0) launchEditAutomatically = YES; } else launchEditAutomatically = YES; return self; } - showPreferencePanel: sender { const char *dir = NXReadDefault(OWNER, "defaultDirectory"); [inspectorPanel makeKeyAndOrderFront: self]; if (launchEditAutomatically) [[autoEditLaunchSwitch setState: 1] display]; else [[autoEditLaunchSwitch setState: 0] display]; if (dir) [directoryForm setStringValue: dir at:0]; return self; } - setManPageDirectory: sender { const char *dir = [sender stringValueAt:0]; BOOL isGoodDir = NO; char badNews[1024]; /* Check that this place is a directory and is writable */ { struct stat buffer; if (stat(dir, &buffer) == -1) { /* If it does not exist, try to fopen it */ if (mkdir(dir, 0777) == -1) { sprintf(badNews, "Could not make the directory %s (errno %d)", dir, errno); } else isGoodDir = YES; } else { if (!IS_DIR(buffer.st_mode)) sprintf(badNews, "%s is not a directory\n", dir); else if (access(dir, W_OK) != 0) sprintf(badNews, "Cannot access %s", dir); else isGoodDir = YES; } } if( !isGoodDir ) NXRunAlertPanel(NULL, badNews, NULL, NULL, NULL, "me"); else { /* Set the default value */ NXWriteDefault(OWNER, "defaultDirectory", dir); } return self; } - toggleEditDefault: sender { if ([sender state] == 0) { launchEditAutomatically = NO; NXWriteDefault(OWNER, "automaticallyLaunchEdit", "NO"); } else if ([sender state] == 1) { launchEditAutomatically = YES; NXWriteDefault(OWNER, "automaticallyLaunchEdit", "YES"); } return self; }
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.