This is PrefControl.m in view mode; [Download] [Up]
#import <defaults/defaults.h> #import "PrefControl.h" #import "ToyView.h" #import "ToyWin.h" #import "ToyWinPCD.h" #define OWNER "ToyViewer" #define pcdSIZE "pcdSIZE" #define pcdBRIGHT "pcdBRIGHT" #define adINTERVAL "adINTERVAL" #define originUL "originUL" #define winPOSITION "winPOSITION" #define timedALERT "timedALERT" #define updateSVC "updateSVC" static const char *winPosKey[] = { "Auto", "Fix", "ScanFix" }; PrefControl *thePreference = NULL; @implementation PrefControl - init { const char *p; p = NXGetDefaultValue(OWNER, pcdSIZE); pcdSizeValue = p ? atoi(p) : 1; /* Base/4 */ p = NXGetDefaultValue(OWNER, pcdBRIGHT); pcdBrightValue = p ? atoi(p) : 1; /* Normal */ [ToyWinPCD setBase:pcdSizeValue bright:pcdBrightValue]; p = NXGetDefaultValue(OWNER, adINTERVAL); adIntervalValue = p ? atoi(p) : 2500; /* 2.5 sec */ p = NXGetDefaultValue(OWNER, originUL); origSWValue = p ? (*p == 'y' || *p == 'Y') : NO; /* UpperLower */ (void)[ToyView setOriginUpperLeft: origSWValue]; p = NXGetDefaultValue(OWNER, winPOSITION); windowPosValue = p ? ((*p == 'F') ? 1 : ((*p == 'S') ? 2 : 0)) : 0; (void)[ToyWin displayOverKeyWindow: (windowPosValue == pos_Fix)]; p = NXGetDefaultValue(OWNER, timedALERT); timedAltValue = (p && (*p == 'y' || *p == 'Y')) ? 1 : 0; if (timedAltValue) timedAlert(YES); p = NXGetDefaultValue(OWNER, updateSVC); updateSvcValue = p ? (*p != 'n' && *p != 'N') : YES; thePreference = self; return self; } - makeKeyAndOrderFront:sender { if (panel == nil) { [NXApp loadNibSection:"Preference.nib" owner:self]; [pcdSize selectCellWithTag: pcdSizeValue]; [pcdBright selectCellWithTag: pcdBrightValue]; [adIntSlider setIntValue: adIntervalValue]; [self changeSlider: adIntSlider]; [origSW selectCellWithTag: (origSWValue ? 1 : 0)]; [positionSW selectCellWithTag: windowPosValue]; [timedAltSW setState: timedAltValue]; [updateSvcSW setState: (updateSvcValue ? 1 : 0)]; } [panel makeKeyAndOrderFront:sender]; return self; } /* Local Method */ - writeDefault: (const char *)name value:(int)val { char buf[16]; sprintf(buf, "%d", val); NXWriteDefault(OWNER, name, buf); return self; } - changeValue:sender { int val; BOOL bval, pcdflag; pcdflag = NO; val = [pcdSize selectedTag]; if (val != pcdSizeValue) { pcdflag = YES; [self writeDefault: pcdSIZE value:(pcdSizeValue = val)]; } val = [pcdBright selectedTag]; if (val != pcdBrightValue) { pcdflag = YES; [self writeDefault: pcdBRIGHT value:(pcdBrightValue = val)]; } if (pcdflag) [ToyWinPCD setBase:pcdSizeValue bright:pcdBrightValue]; bval = ([origSW selectedTag] != 0); if (bval != origSWValue) { origSWValue = bval; NXWriteDefault(OWNER, originUL, (bval ? "YES" : "NO")); (void)[ToyView setOriginUpperLeft: origSWValue]; } val = [positionSW selectedTag]; if (val != windowPosValue) { windowPosValue = val; NXWriteDefault(OWNER, winPOSITION, winPosKey[windowPosValue]); (void)[ToyWin displayOverKeyWindow: (windowPosValue == pos_Fix)]; } val = [timedAltSW state]; if (val != timedAltValue) { timedAltValue = val; NXWriteDefault(OWNER, timedALERT, (val ? "YES" : "NO")); timedAlert(timedAltValue); } bval = ([updateSvcSW state] != 0); if (bval != updateSvcValue) { updateSvcValue = bval; NXWriteDefault(OWNER, updateSVC, (bval ? "YES" : "NO")); } return self; } - changeSlider:sender { int val; char buf[16]; /* adIntervalValue (1 = 0.1 sec) */ val = ([sender intValue] + 50) / 100 * 100; adIntervalValue = val; sprintf(buf, "%d.%d", val / 1000, val % 1000); [adIntText setStringValue: buf]; return self; } - (int) autoDisplayInterval { static int oldvalue = 0; if (oldvalue != adIntervalValue) { oldvalue = adIntervalValue; [self writeDefault: adINTERVAL value: adIntervalValue]; } return adIntervalValue; } - (int) windowPosition { return windowPosValue; } - (BOOL) isUpdatedServices { return updateSvcValue; } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.