home *** CD-ROM | disk | FTP | other *** search
/ Big Green CD 8 / BGCD_8_Dev.iso / NEXTSTEP / Graphics / ToyViewer-2.6a / src / PrefControl.m < prev    next >
Encoding:
Text File  |  1997-01-22  |  3.8 KB  |  163 lines

  1.  
  2. #import <defaults/defaults.h>
  3. #import "PrefControl.h"
  4. #import "ToyView.h"
  5. #import "ToyWin.h"
  6. #import "ToyWinPCD.h"
  7.  
  8. #define  OWNER        "ToyViewer"
  9. #define  pcdSIZE    "pcdSIZE"
  10. #define  pcdBRIGHT    "pcdBRIGHT"
  11. #define  adINTERVAL    "adINTERVAL"
  12. #define  originUL    "originUL"
  13. #define  winPOSITION    "winPOSITION"
  14. #define  timedALERT    "timedALERT"
  15. #define  updateSVC    "updateSVC"
  16.  
  17. static const char *winPosKey[] = { "Auto", "Fix", "ScanFix" };
  18.  
  19. PrefControl *thePreference = NULL;
  20.  
  21.  
  22. @implementation PrefControl
  23.  
  24. - init
  25. {
  26.     const char *p;
  27.  
  28.     p = NXGetDefaultValue(OWNER, pcdSIZE);
  29.     pcdSizeValue = p ? atoi(p) : 1;    /* Base/4 */
  30.     p = NXGetDefaultValue(OWNER, pcdBRIGHT);
  31.     pcdBrightValue = p ? atoi(p) : 1; /* Normal */
  32.     [ToyWinPCD setBase:pcdSizeValue bright:pcdBrightValue];
  33.  
  34.     p = NXGetDefaultValue(OWNER, adINTERVAL);
  35.     adIntervalValue = p ? atoi(p) : 2500; /* 2.5 sec */
  36.  
  37.     p = NXGetDefaultValue(OWNER, originUL);
  38.     origSWValue = p ? (*p == 'y' || *p == 'Y') : NO;  /* UpperLower */
  39.     (void)[ToyView setOriginUpperLeft: origSWValue];
  40.  
  41.     p = NXGetDefaultValue(OWNER, winPOSITION);
  42.     windowPosValue = p ? ((*p == 'F') ? 1 : ((*p == 'S') ? 2 : 0)) : 0;
  43.     (void)[ToyWin displayOverKeyWindow: (windowPosValue == pos_Fix)];
  44.  
  45.     p = NXGetDefaultValue(OWNER, timedALERT);
  46.     timedAltValue = (p && (*p == 'y' || *p == 'Y')) ? 1 : 0;
  47.     if (timedAltValue)
  48.         timedAlert(YES);
  49.  
  50.     p = NXGetDefaultValue(OWNER, updateSVC);
  51.     updateSvcValue = p ? (*p != 'n' && *p != 'N') : YES;
  52.  
  53.     thePreference = self;
  54.     return self;
  55. }
  56.  
  57. - makeKeyAndOrderFront:sender
  58. {
  59.     if (panel == nil) {
  60.         [NXApp loadNibSection:"Preference.nib" owner:self];
  61.         [pcdSize selectCellWithTag: pcdSizeValue];
  62.         [pcdBright selectCellWithTag: pcdBrightValue];
  63.         [adIntSlider setIntValue: adIntervalValue];
  64.         [self changeSlider: adIntSlider];
  65.         [origSW selectCellWithTag: (origSWValue ? 1 : 0)];
  66.         [positionSW selectCellWithTag: windowPosValue];
  67.         [timedAltSW setState: timedAltValue];
  68.         [updateSvcSW setState: (updateSvcValue ? 1 : 0)];
  69.     }
  70.     [panel makeKeyAndOrderFront:sender];
  71.     return self;
  72. }
  73.  
  74. /* Local Method */
  75. - writeDefault: (const char *)name value:(int)val
  76. {
  77.     char buf[16];
  78.     sprintf(buf, "%d", val);
  79.     NXWriteDefault(OWNER, name, buf);
  80.     return self;
  81. }
  82.  
  83. - changeValue:sender
  84. {
  85.     int val;
  86.     BOOL bval, pcdflag;
  87.  
  88.     pcdflag = NO;
  89.     val = [pcdSize selectedTag];
  90.     if (val != pcdSizeValue) {
  91.         pcdflag = YES;
  92.         [self writeDefault: pcdSIZE value:(pcdSizeValue = val)];
  93.     }
  94.     val = [pcdBright selectedTag];
  95.     if (val != pcdBrightValue) {
  96.         pcdflag = YES;
  97.         [self writeDefault: pcdBRIGHT value:(pcdBrightValue = val)];
  98.     }
  99.     if (pcdflag)
  100.         [ToyWinPCD setBase:pcdSizeValue bright:pcdBrightValue];
  101.  
  102.     bval = ([origSW selectedTag] != 0);
  103.     if (bval != origSWValue) {
  104.         origSWValue = bval;
  105.         NXWriteDefault(OWNER, originUL, (bval ? "YES" : "NO"));
  106.         (void)[ToyView setOriginUpperLeft: origSWValue];
  107.     }
  108.     val = [positionSW selectedTag];
  109.     if (val != windowPosValue) {
  110.         windowPosValue = val;
  111.         NXWriteDefault(OWNER, winPOSITION, winPosKey[windowPosValue]);
  112.         (void)[ToyWin displayOverKeyWindow: (windowPosValue == pos_Fix)];
  113.     }
  114.     val = [timedAltSW state];
  115.     if (val != timedAltValue) {
  116.         timedAltValue = val;
  117.         NXWriteDefault(OWNER, timedALERT, (val ? "YES" : "NO"));
  118.         timedAlert(timedAltValue);
  119.     }
  120.     bval = ([updateSvcSW state] != 0);
  121.     if (bval != updateSvcValue) {
  122.         updateSvcValue = bval;
  123.         NXWriteDefault(OWNER, updateSVC, (bval ? "YES" : "NO"));
  124.     }
  125.  
  126.     return self;
  127. }
  128.  
  129. - changeSlider:sender
  130. {
  131.     int    val;
  132.     char    buf[16];
  133.  
  134.     /* adIntervalValue (1 = 0.1 sec) */
  135.     val = ([sender intValue] + 50) / 100 * 100;
  136.     adIntervalValue = val;
  137.     sprintf(buf, "%d.%d", val / 1000, val % 1000);
  138.     [adIntText setStringValue: buf];
  139.     return self;
  140. }
  141.  
  142. - (int) autoDisplayInterval
  143. {
  144.     static int oldvalue = 0;
  145.     if (oldvalue != adIntervalValue) {
  146.         oldvalue = adIntervalValue;
  147.         [self writeDefault: adINTERVAL value: adIntervalValue];
  148.     }
  149.     return adIntervalValue;
  150. }
  151.  
  152. - (int) windowPosition
  153. {
  154.     return windowPosValue;
  155. }
  156.  
  157. - (BOOL) isUpdatedServices
  158. {
  159.     return updateSvcValue;
  160. }
  161.  
  162. @end
  163.