home *** CD-ROM | disk | FTP | other *** search
/ Stone Design / Stone Design.iso / Stone_Friends / Wave / WavesWorld / Source / IBPalettes / WWTCLKit / WWThumbWheel.m < prev    next >
Encoding:
Text File  |  1995-03-22  |  4.4 KB  |  191 lines

  1.  
  2. #import "WWThumbWheel.h"
  3. #import "WWThumbWheelCell.h"
  4.  
  5. @implementation WWThumbWheel
  6.  
  7. static id myStoredCellClass;
  8.  
  9.  
  10. + initialize 
  11.   [WWThumbWheel setVersion:1]; 
  12.  
  13.   if (self == [WWThumbWheel class])
  14.   {  myStoredCellClass = [WWThumbWheelCell class];
  15.   }
  16.  
  17.   return self; 
  18. }
  19. //
  20. + setCellClass:classID
  21. {
  22.   myStoredCellClass = classID;
  23.   return self;
  24. }
  25. ////////////////////////////////////////////////////////
  26. //
  27. - initFrame:(const NXRect *)frameRect
  28. {
  29.   id  oldCell;
  30.  
  31.  
  32.   [super initFrame:frameRect];
  33.   oldCell = [self setCell:[[myStoredCellClass alloc] init]];
  34.   [oldCell free];
  35.  
  36.   return self;
  37. }
  38. //
  39. - awakeFromNib
  40. {
  41.   [visibleMinText setFloatValue:[self visibleMin]];
  42.   [visibleMaxText setFloatValue:[self visibleMax]];
  43.   [absoluteMinText setFloatValue:[self absoluteMin]];
  44.   [absoluteMaxText setFloatValue:[self absoluteMax]];
  45.   [valText setFloatValue:[self floatValue]];
  46.   [relativeValText setFloatValue:[self relativeFloatValue]];
  47.   return self;
  48. }
  49. //
  50. - setVisibleMin:(float)value
  51. {
  52.    [visibleMinText setFloatValue:value];
  53.    return [super setVisibleMin:value];
  54. }
  55. //
  56. - setVisibleMax:(float)value
  57. {
  58.    [visibleMaxText setFloatValue:value];
  59.    return [super setVisibleMax:value];
  60. }
  61. //
  62. - setAbsoluteMin:(float)value
  63. {
  64.    [absoluteMinText setFloatValue:value];
  65.    return [super setAbsoluteMin:value];
  66. }
  67. //
  68. - setAbsoluteMax:(float)value
  69. {
  70.    [absoluteMaxText setFloatValue:value];
  71.    return [super setAbsoluteMax:value];
  72. }
  73. // need this because there is no equivalent to awakeFromNib inside of IB...
  74. static BOOL oTheHorrorOfItAll = YES;
  75.  
  76. - sendAction:(SEL)theAction to:theTarget
  77. {
  78.   if (oTheHorrorOfItAll)
  79.   {  oTheHorrorOfItAll = NO;
  80.      [visibleMaxText setFloatValue:[self visibleMax]];
  81.      [visibleMinText setFloatValue:[self visibleMin]];
  82.      [absoluteMaxText setFloatValue:[self absoluteMax]];
  83.      [absoluteMinText setFloatValue:[self absoluteMin]];
  84.   }
  85.   [valText setFloatValue:[self floatValue]];
  86.   [relativeValText setFloatValue:[self relativeFloatValue]];
  87.   if ([cell respondsTo:@selector(updateInterp)])
  88.   {  [cell updateInterp];
  89.   }
  90.   return [super sendAction:theAction to:theTarget];
  91. }
  92.  
  93. - setStringValue:(const char *)str
  94. {
  95.   char  *theStr;
  96.  
  97.   [super setStringValue:str];
  98.   theStr = (char *)[self stringValue];
  99.   [visibleMaxText setStringValue:theStr];
  100.   [visibleMinText setStringValue:theStr];
  101.   [absoluteMaxText setStringValue:theStr];
  102.   [absoluteMinText setStringValue:theStr];
  103.   [valText setStringValue:theStr];
  104.   [relativeValText setStringValue:theStr];
  105.   [self display];
  106.   return self;
  107. }
  108.  
  109. - setIntValue:(int)val
  110. {
  111.   int   theVal;
  112.  
  113.  
  114.   [super setIntValue:val];
  115.   theVal = [self intValue];
  116.   [visibleMaxText setIntValue:theVal];
  117.   [visibleMinText setIntValue:theVal];
  118.   [absoluteMaxText setIntValue:theVal];
  119.   [absoluteMinText setIntValue:theVal];
  120.   [valText setIntValue:theVal];
  121.   [relativeValText setIntValue:theVal];
  122.   [self display];
  123.   return self;
  124. }
  125.  
  126. - setFloatValue:(float)val
  127. {
  128.   float  theVal;
  129.  
  130.  
  131.   [super setFloatValue:val];
  132.   theVal = [self floatValue];
  133.   [visibleMaxText setFloatValue:theVal];
  134.   [visibleMinText setFloatValue:theVal];
  135.   [absoluteMaxText setFloatValue:theVal];
  136.   [absoluteMinText setFloatValue:theVal];
  137.   [valText setFloatValue:theVal];
  138.   [relativeValText setFloatValue:theVal];
  139.   [self display];
  140.   return self;
  141. }
  142.  
  143. // need to be able to see the cell's tclVar...
  144. - setTclVar:(const char *)str { return [[self cell] setTclVar:str]; }
  145. - (const char *)tclVar { return [[self cell] tclVar]; }
  146.  
  147. // need to be able to see the cell's controlString...
  148. - setControlString:(const char *)str { return [[self cell] setControlString:str]; }
  149. - (const char *)controlString { return [[self cell] controlString]; }
  150.  
  151. // need to be able to see the cell's tclExpression...
  152. - setTclExpression:(const char *)str { return [[self cell] setTclExpression:str]; }
  153. - (const char *)tclExpression { return [[self cell] tclExpression]; }
  154.  
  155. - setInterp:newInterp {  return [[self cell] setInterp:newInterp]; }
  156. - evaluateSelf { [[self cell] evaluateSelf]; return [self display]; }
  157.  
  158. // IB stuff
  159. - (const char *)getInspectorClassName 
  160. {  
  161.    NXEvent  *event = [NXApp currentEvent];
  162.  
  163.    if (event->flags & NX_ALTERNATEMASK)
  164.    {  return [super getInspectorClassName];
  165.    }
  166.    
  167.    return "WWThumbWheelIBInspector"; 
  168. }
  169.  
  170. - write:(NXTypedStream *)stream 
  171. {
  172.    [super write:stream];
  173.    return self;
  174. }
  175. //
  176. - read:(NXTypedStream *)stream 
  177. {
  178.    int version;
  179.  
  180.    [super read:stream];
  181.  
  182.    version = NXTypedStreamClassVersion(stream, "WWThumbWheel");
  183.    if (version == 1)
  184.    {  
  185.    }
  186.    return self;
  187. }
  188.  
  189. @end
  190.