home *** CD-ROM | disk | FTP | other *** search
/ Nebula 2 / Nebula Two.iso / SourceCode / MiscKit1.7.1 / MiscKit / Palettes / MiscCircularSlider / MiscCSInspector.m < prev    next >
Encoding:
Text File  |  1995-06-11  |  6.4 KB  |  257 lines

  1. /*
  2.  *    Filename:    CircularSliderInspector.m 
  3.  *    Created :    Thu Oct 22 00:46:47 1992 
  4.  *    Author  :    Vince DeMarco
  5.  *        <vince@whatnxt.cuc.ab.ca>
  6.  *    LastEditDate was "Sun Nov 15 21:05:03 1992"
  7.  *
  8.  *    Modified by Laurent Daudelin <laurent@planon.qc.ca> to
  9.  *    add support for lower and upper stop values.
  10.  *    LastEditDate was "Tus Sep 27 10:00:00 1994"
  11.  *
  12.  * Copyright (C) 1995 Vince DeMarco
  13.  * Use is governed by the MiscKit license
  14.  */
  15.  
  16.  
  17. #import "MiscCSInspector.h"
  18. #import "MiscCircularSlider.h"
  19.  
  20. @implementation MiscCircularSliderInspector
  21.  
  22. - init
  23. {
  24.     char buf[MAXPATHLEN + 1];
  25.     id bundle = [NXBundle bundleForClass:[MiscCircularSlider class]];
  26.  
  27.     [bundle getPath:buf forResource:"MiscCSInspector" ofType:"nib"];
  28.     [NXApp loadNibFile:buf owner:self withNames:NO fromZone:[self zone]];
  29.     [[NXColorPanel sharedInstance:YES] setShowAlpha:YES];
  30.     return self;
  31. }
  32.  
  33. - ok:sender
  34. {
  35.     [object display];
  36.     return [super ok:sender];
  37. }
  38.  
  39. - update
  40. {
  41.     [typeMatrix selectCellWithTag:[object sliderStyle]];
  42.     [tagField setIntValue:[object tag]];
  43.     [widthField setFloatValue:[object sliderPathWidth]];
  44.     [minValueField setFloatValue:[(Slider *)object minValue]];
  45.     [maxValueField setFloatValue:[(Slider *)object maxValue]];
  46.     [upperStopValueField setFloatValue:[object upperStopValue]];
  47.     [lowerStopValueField setFloatValue:[object lowerStopValue]];
  48.     [currentValueField setFloatValue:[object floatValue]];
  49.     [startAngleField setFloatValue:[object startAngle]];
  50.     [useBoundariesSwitch setState:[object useBoundaries]];
  51.     [upperStopValueField setEnabled:[object useBoundaries]];
  52.     [lowerStopValueField setEnabled:[object useBoundaries]];
  53.     [[optionMatrix cellAt:0:0] setState:[object isContinuous]];
  54.     [[optionMatrix cellAt:1:0] setState:![object isEnabled]];
  55.     [[optionMatrix cellAt:3:0] setState:[object jumpToMousePoint]];
  56.     [[optionMatrix cellAt:4:0] setState:[object isClockwise]];
  57.     if ([object hidden] == YES) {
  58.         [[optionMatrix cellAt:2:0] setState: 1]; /* If hidden it is disabled */
  59.         [[optionMatrix cellAt:1:0] setEnabled:NO];
  60.     } else {
  61.         [[optionMatrix cellAt:2:0] setState: 0];
  62.         [[optionMatrix cellAt:1:0] setEnabled:YES];
  63.     }
  64.     [borderMatrix selectCellWithTag:[object borderType]];
  65.     [BGColorWell setColor:[object backgroundColor]];
  66.     
  67.     [optionMatrix display];
  68.     [borderMatrix display];
  69.     return self;
  70. }
  71.  
  72. - revert:sender
  73. {
  74.     [self update];
  75.     return [super revert:sender];
  76. }
  77.  
  78. - (BOOL)wantsButtons
  79. {
  80.     return NO;
  81. }
  82.  
  83. - setType:sender
  84. {
  85.     [object setSliderStyle:[[sender selectedCell] tag]];
  86.     [self touch:self];
  87.     return [self ok:sender];
  88. }
  89.  
  90. - setMaximum:sender
  91. {
  92.     [object setMaxValue:[sender floatValue]];
  93.     if ([sender floatValue] < [upperStopValueField floatValue])
  94.     {
  95.         [object setUpperStopValue:[sender floatValue]];
  96.         [upperStopValueField setFloatValue:[sender floatValue]];
  97.     }
  98.     [self touch:self]; [self update];
  99.     return [self ok:sender];
  100. }
  101.  
  102. - setMinimum:sender
  103. {
  104.     [object setMinValue:[sender floatValue]];
  105.     if ([sender floatValue] > [lowerStopValueField floatValue])
  106.     {
  107.         [object setLowerStopValue:[sender floatValue]];
  108.         [lowerStopValueField setFloatValue:[sender floatValue]];
  109.     }
  110.     [self touch:self]; [self update];
  111.     return [self ok:sender];
  112. }
  113.  
  114. - setLowerStop:sender
  115. {
  116.     if ([sender floatValue] >= [object upperStopValue])
  117.     {
  118.         if ([object upperStopValue] - 5.0 < 0)
  119.             [object setLowerStopValue:0.0];
  120.         else
  121.             [object setLowerStopValue:[object upperStopValue] - 5.0];
  122.     }
  123.     else if ([sender floatValue] < [minValueField floatValue])
  124.         [object setLowerStopValue:[minValueField floatValue]];
  125.     else
  126.         [object setLowerStopValue:[sender floatValue]];
  127.     if ([object lowerStopValue] > [currentValueField floatValue])
  128.         [currentValueField setFloatValue:
  129.             (([object upperStopValue] - [object lowerStopValue]) / 2) + [object lowerStopValue]];
  130.     [self touch:self]; [self update];
  131.     return [self ok:sender];
  132. }
  133.  
  134. - setUpperStop:sender
  135. {
  136.     if ([sender floatValue] <= [object lowerStopValue])
  137.     {
  138.         if ([object lowerStopValue] + 5.0 > 360.0)
  139.             [object setUpperStopValue:360.0];
  140.         else
  141.             [object setUpperStopValue:[object lowerStopValue] + 5.0];
  142.     }
  143.     else if ([sender floatValue] > [maxValueField floatValue])
  144.         [object setUpperStopValue:[maxValueField floatValue]];
  145.     else
  146.         [object setUpperStopValue:[sender floatValue]];
  147.     if ([object upperStopValue] < [currentValueField floatValue])
  148.         [currentValueField setFloatValue:
  149.             (([object upperStopValue] - [object lowerStopValue]) / 2) + [object lowerStopValue]];
  150.     [self touch:self]; [self update];
  151.     return [self ok:sender];
  152. }
  153.  
  154. - setUsingBoundaries:sender
  155. {
  156.     if ([sender state])
  157.         [object setUseBoundaries:YES];
  158.     else
  159.         [object setUseBoundaries:NO];
  160.     [self touch:self]; [self update];
  161.     return [self ok:sender];
  162. }
  163.         
  164. - setCurrent:sender
  165. {
  166.     if ([sender floatValue] > [object upperStopValue])
  167.         [object setFloatValue:[object upperStopValue]];
  168.     else if ([sender floatValue] < [object lowerStopValue])
  169.         [object setFloatValue:[object lowerStopValue]];
  170.     else
  171.         [object setFloatValue:[sender floatValue]];
  172.     [self touch:self]; [self update];
  173.     return [self ok:sender];
  174. }
  175.  
  176. - setOptions:sender
  177. {
  178.     int state = [[sender selectedCell] state];
  179.     switch ([[sender selectedCell] tag]){
  180.     case 1: /* Cont */
  181.         if (state)
  182.             [object setContinuous:YES];
  183.         else
  184.             [object setContinuous:NO];
  185.         break;
  186.     case 2:  /* Disabled */
  187.         if (state)
  188.             [object setEnabled:NO];
  189.         else
  190.             [object setEnabled:YES];
  191.         break;
  192.     case 3:  /* Hidden */
  193.         if (state){
  194.             [object setHidden:YES]; /* If Hidden it is also disabled */
  195.             [object setEnabled:NO];
  196.             [[optionMatrix cellAt:1:0] setEnabled:NO];
  197.             [[optionMatrix cellAt:1:0] setState:YES];
  198.         } else {
  199.             [object setHidden:NO];
  200.             [[optionMatrix cellAt:1:0] setEnabled:YES];
  201.         }
  202.         [optionMatrix display];
  203.         break;
  204.     case 4:  /* Jumps to mouse click */
  205.         if (state)
  206.             [object setJumpToMousePoint:YES];
  207.         else
  208.             [object setJumpToMousePoint:NO];
  209.         break;
  210.     case 5:  /* Goes clockwise */
  211.         if (state)
  212.             [object setClockwise:YES];
  213.         else
  214.             [object setClockwise:NO];
  215.         break;
  216.     }    
  217.     [self touch:self];
  218.     return [self ok:sender];
  219. }
  220.  
  221. - setBorder:sender
  222. {
  223.     [object setBorderType:[[sender selectedCell] tag]];
  224.     [self touch:self];
  225.     return [self ok:sender];
  226. }
  227.  
  228. - setTag:sender
  229. {
  230.     [(Cell *)object setTag:[sender intValue]];
  231.     [self touch:self];
  232.     return [self ok:sender];
  233. }
  234.  
  235. - changeWidth:sender
  236. {
  237.     [object setSliderPathWidth:[sender floatValue]];
  238.     [self touch:self];
  239.     return [self ok:sender];
  240. }
  241.  
  242. - setBGColor:sender
  243. {
  244.     [object setBackgroundColor:[sender color]];
  245.     [self touch:self];
  246.     return [self ok:sender];
  247. }
  248.  
  249. - setStartAnglePos:sender
  250. {
  251.     [object setStartAngle:[sender floatValue]];
  252.     [self touch:self];
  253.     return [self ok:sender];
  254. }
  255.  
  256. @end
  257.