This is PrefsController.m in view mode; [Download] [Up]
#import "PrefsController.h" #import "PrefsPanel.h" #import "scsi_cd.subproj/ListScsi.h" @implementation PrefsController - showPrefsPanel:sender { /* * mCD_Prefs.nib is setup with this object as it's owner, so it fills in the * ID for prefsPanel */ if (!prefsPanel) [NXApp loadNibSection:"mCD_Prefs.nib" owner:self]; /* ListScsi seems to cause trouble... */ /* so skip: if ( ! list_SCSI ) list_SCSI = [[ListScsi alloc] init]; */ [prefsPanel showPrefsPanel:self usingScsiList:list_SCSI]; return self; } #define Def_CDDRIVE "CDDrive" - _findFirstCdDrive { int devIndex; if (!list_SCSI) list_SCSI = [[ListScsi alloc] init]; globRawDeviceName[0] = '\0'; for (devIndex = 0; devIndex <= 6; devIndex++) { if ([list_SCSI getTypeOfDev:devIndex] == DEVTYPE_CDROM) { sprintf(globRawDeviceName, "/dev/rsd%dh", devIndex); break; } } /* end for(devIndex =... */ if (globRawDeviceName[0] == '\0') { NXRunAlertPanel(0, "Can't seem to find CD-ROM drive,\nassuming /dev/rsd1h will work", 0, 0, 0); strcpy(globRawDeviceName, "/dev/rsd1h"); } return self; } - _dreadRawDeviceName { strcpy(globRawDeviceName, "/dev/rsd1h"); if (NXGetDefaultValue([NXApp appName], Def_CDDRIVE)) { strcpy(globRawDeviceName, NXGetDefaultValue([NXApp appName], Def_CDDRIVE)); } if (!strcmp(globRawDeviceName, "/dev/rsd0h")) globRawDevicePrefTag = 0; if (!strcmp(globRawDeviceName, "/dev/rsd1h")) globRawDevicePrefTag = 1; if (!strcmp(globRawDeviceName, "/dev/rsd2h")) globRawDevicePrefTag = 2; if (!strcmp(globRawDeviceName, "/dev/rsd3h")) globRawDevicePrefTag = 3; if (!strcmp(globRawDeviceName, "/dev/rsd4h")) globRawDevicePrefTag = 4; if (!strcmp(globRawDeviceName, "/dev/rsd5h")) globRawDevicePrefTag = 5; if (!strcmp(globRawDeviceName, "/dev/rsd6h")) globRawDevicePrefTag = 6; /* the more complicated option */ if (!strcmp(globRawDeviceName, "FirstDriveFound")) { globRawDevicePrefTag = USE_FIRST_CDDRIVE_TAG; [self _findFirstCdDrive]; } return self; } - setRawDevicePrefTag:(int)prefTag andSave:(BOOL)dwriteIt { globRawDevicePrefTag = prefTag; if (globRawDevicePrefTag == USE_FIRST_CDDRIVE_TAG) [self _findFirstCdDrive]; else if ((prefTag >= 0) && (prefTag <= 6)) sprintf(globRawDeviceName, "/dev/rsd%dh", prefTag); if (dwriteIt) { if (globRawDevicePrefTag == USE_FIRST_CDDRIVE_TAG) NXWriteDefault([NXApp appName], Def_CDDRIVE, "FirstDriveFound"); else NXWriteDefault([NXApp appName], Def_CDDRIVE, globRawDeviceName); } return self; } - (char *)rawDeviceName { return globRawDeviceName; } - (int)rawDevicePrefTag { return globRawDevicePrefTag; } #define Def_SEPVOL "SeparateVolumes" - _dreadSeparateVolumes { globSeparateVolumes = NO; if (NXGetDefaultValue([NXApp appName], Def_SEPVOL)) { strcpy(tempStr, NXGetDefaultValue([NXApp appName], Def_SEPVOL)); if (!strcmp(tempStr, "yes")) globSeparateVolumes = YES; if (!strcmp(tempStr, "Yes")) globSeparateVolumes = YES; if (!strcmp(tempStr, "YES")) globSeparateVolumes = YES; } return self; } - setSeparateVolumes:(BOOL)onOffSetting andSave:(BOOL)dwriteIt { globSeparateVolumes = onOffSetting; if (dwriteIt) { if (globSeparateVolumes) NXWriteDefault([NXApp appName], Def_SEPVOL, "YES"); else NXRemoveDefault([NXApp appName], Def_SEPVOL); } return self; } - (BOOL)separateVolumes { return globSeparateVolumes; } #define Def_CONSDEB "ConsoleDebugMsgs" - _dreadConsoleDebugMsgs { globConsoleDebugMsgs = NO; if (NXGetDefaultValue([NXApp appName], Def_CONSDEB)) { strcpy(tempStr, NXGetDefaultValue([NXApp appName], Def_CONSDEB)); if (!strcmp(tempStr, "yes")) globConsoleDebugMsgs = YES; if (!strcmp(tempStr, "Yes")) globConsoleDebugMsgs = YES; if (!strcmp(tempStr, "YES")) globConsoleDebugMsgs = YES; } return self; } - setConsoleDebugMsgs:(BOOL)onOffSetting andSave:(BOOL)dwriteIt { globConsoleDebugMsgs = onOffSetting; if (dwriteIt) { if (globSeparateVolumes) NXWriteDefault([NXApp appName], Def_CONSDEB, "YES"); else NXRemoveDefault([NXApp appName], Def_CONSDEB); } return self; } - (BOOL)consoleDebugMsgs { return globConsoleDebugMsgs; } #define DefPfx_CONTROLFRAME "ControlFrame" /* prefix of controlFrameName */ - _dreadControlFrame { if (NXGetDefaultValue([NXApp appName], controlFrameName)) { strcpy(tempStr, NXGetDefaultValue([NXApp appName], controlFrameName)); [mainPanel_ID setFrameFromString:tempStr]; } return self; } - saveControlFrame:(BOOL)wantSave { if (wantSave) { [mainPanel_ID saveFrameToString:&tempStr[0]]; NXWriteDefault([NXApp appName], controlFrameName, tempStr); } else NXRemoveDefault([NXApp appName], controlFrameName); return self; } #define Def_VOLUMES "Volumes" #define DEF_VOLUMESETTING 220 - _dreadVolumes { char *start, *next; globLeftVolume = DEF_VOLUMESETTING; globRightVolume = DEF_VOLUMESETTING; if (NXGetDefaultValue([NXApp appName], Def_VOLUMES)) { strcpy(tempStr, NXGetDefaultValue([NXApp appName], Def_VOLUMES)); start = tempStr; if (*start == ' ') start++; globLeftVolume = globRightVolume = strtod(start, &next); if (start != next) { start = next; if (*start == ' ') start++; if (*start != '\0') globRightVolume = strtod(start, &next); } globLeftVolume = MIN(globLeftVolume, 255); globRightVolume = MIN(globRightVolume, 255); if (!globSeparateVolumes) globLeftVolume = globRightVolume = MIN(globLeftVolume, globRightVolume); } return self; } - saveVolumes:(BOOL)wantSave { int leftVolume, rightVolume; if (wantSave) { [cdInfo_ID getVolumes:&leftVolume:&rightVolume]; if (!globSeparateVolumes) leftVolume = rightVolume = MIN(leftVolume, rightVolume); if (leftVolume == rightVolume) sprintf(tempStr, "%d", leftVolume); else sprintf(tempStr, "%d %d", leftVolume, rightVolume); NXWriteDefault([NXApp appName], Def_VOLUMES, tempStr); } else NXRemoveDefault([NXApp appName], Def_VOLUMES); return self; } - getVolumes:(int *)leftVolPtr :(int *)rightVolPtr { *leftVolPtr = globLeftVolume; *rightVolPtr = globRightVolume; return self; } /* this has to be the last action defined, as it references many methods which are defined internal to this module */ - initGlobalPreferences:cdInfo mainPanel:ctrlPanel { NXDefaultsVector defs = { {DefPfx_CONTROLFRAME, NULL}, /* must be 0-th element */ {Def_CDDRIVE, NULL}, /* should key on hostname */ {Def_SEPVOL, NULL}, {Def_CONSDEB, NULL}, {Def_VOLUMES, NULL}, /* should key on cd-rom model */ {NULL, NULL} }; cdInfo_ID = cdInfo; mainPanel_ID = ctrlPanel; /* build some defaults names based on current machine/config */ [NXApp getScreenSize:&mainScreenSize]; sprintf(controlFrameName, "%s-%1.0fx%1.0f", DefPfx_CONTROLFRAME, mainScreenSize.width, mainScreenSize.height); defs[0].name = controlFrameName; /* replace 0-th element */ NXRegisterDefaults([NXApp appName], defs); [self _dreadRawDeviceName]; [self _dreadSeparateVolumes]; /* must do before _dreadVolumes */ [self _dreadConsoleDebugMsgs]; [self _dreadControlFrame]; /* sets location of cntrlPanel */ [self _dreadVolumes]; return self; } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.