home *** CD-ROM | disk | FTP | other *** search
/ Nebula 1 / Nebula One.iso / Graphics / Viewers / aa_m68k_Intel_Only / ToyViewer1.2 / Source / PrefControl.m < prev    next >
Encoding:
Text File  |  1995-11-12  |  2.3 KB  |  113 lines

  1.  
  2. #import <defaults/defaults.h>
  3. #import "PrefControl.h"
  4.  
  5. #define  OWNER        "ToyViewer"
  6. #define  pcdSIZE    "pcdSIZE"
  7. #define  pcdBRIGHT    "pcdBRIGHT"
  8. #define  adINTERVAL    "adINTERVAL"
  9. #define  originUL    "originUL"
  10.  
  11. @implementation PrefControl
  12.  
  13. - init
  14. {
  15.     const char *p;
  16.  
  17.     if (pcdBright != nil)
  18.         return self;
  19.     [NXApp loadNibSection:"Preference.nib" owner:self];
  20.     p = NXGetDefaultValue(OWNER, pcdSIZE);
  21.     pcdSizeValue = p ? atoi(p) : 1;    /* Base/4 */
  22.     [pcdSize selectCellWithTag: pcdSizeValue];
  23.     p = NXGetDefaultValue(OWNER, pcdBRIGHT);
  24.     pcdBrightValue = p ? atoi(p) : 1; /* Normal */
  25.     [pcdBright selectCellWithTag: pcdBrightValue];
  26.  
  27.     p = NXGetDefaultValue(OWNER, adINTERVAL);
  28.     adIntervalValue = p ? atoi(p) : 2500; /* 2.5 sec */
  29.     [adIntSlider setIntValue: adIntervalValue];
  30.     [self changeSlider: adIntSlider];
  31.  
  32.     p = NXGetDefaultValue(OWNER, originUL);
  33.     origSWValue = p ? (*p == 'y' || *p == 'Y') : NO;  /* UpperLower */
  34.     [origSW selectCellWithTag: (origSWValue ? 1 : 0)];
  35.  
  36.     return self;
  37. }
  38.  
  39. - makeKeyAndOrderFront:sender
  40. {
  41.     [self init];
  42.     [panel makeKeyAndOrderFront:sender];
  43.     return self;
  44. }
  45.  
  46. /* Local Method */
  47. - writeDefault: (const char *)name value:(int)val
  48. {
  49.     char buf[16];
  50.     sprintf(buf, "%d", val);
  51.     NXWriteDefault(OWNER, name, buf);
  52.     return self;
  53. }
  54.  
  55. - changeValue:sender
  56. {
  57.     int val;
  58.     BOOL bval;
  59.  
  60.     val = [pcdSize selectedTag];
  61.     if (val != pcdSizeValue)
  62.         [self writeDefault: pcdSIZE value:(pcdSizeValue = val)];
  63.     val = [pcdBright selectedTag];
  64.     if (val != pcdBrightValue)
  65.         [self writeDefault: pcdBRIGHT value:(pcdBrightValue = val)];
  66.     bval = ([origSW selectedTag] != 0);
  67.     if (bval != origSWValue) {
  68.         origSWValue = bval;
  69.         NXWriteDefault(OWNER, originUL, (bval ? "YES" : "NO"));
  70.     }
  71.     return self;
  72. }
  73.  
  74. - pcdSize:(int *)base bright:(int *)bright
  75. {
  76.     *base = pcdSizeValue;
  77.     *bright = pcdBrightValue;
  78.     return self;
  79. }
  80.  
  81.  
  82. - changeSlider:sender
  83. {
  84.     int    val;
  85.     char    buf[16];
  86.  
  87.     /* adIntervalValue (1 = 0.1 sec) */
  88.     val = ([sender intValue] + 50) / 100;
  89.     if (adIntervalValue == val)
  90.         return self;
  91.     adIntervalValue = val;
  92.     sprintf(buf, "%d.%d", val / 10, val % 10);
  93.     [adIntText setStringValue: buf];
  94.     return self;
  95. }
  96.  
  97. - (int) autoDisplayInterval
  98. {
  99.     static int oldvalue = 0;
  100.     if (oldvalue != adIntervalValue) {
  101.         oldvalue = adIntervalValue;
  102.         [self writeDefault: adINTERVAL value: adIntervalValue * 100];
  103.     }
  104.     return adIntervalValue * 100;
  105. }
  106.  
  107. - (BOOL) originUpperLeft
  108. {
  109.     return origSWValue;
  110. }
  111.  
  112. @end
  113.