This is MiscCSInspector.m in view mode; [Download] [Up]
/*
* Filename: CircularSliderInspector.m
* Created : Thu Oct 22 00:46:47 1992
* Author : Vince DeMarco
* <vince@whatnxt.cuc.ab.ca>
* LastEditDate was "Sun Nov 15 21:05:03 1992"
*
* Modified by Laurent Daudelin <laurent@planon.qc.ca> to
* add support for lower and upper stop values.
* LastEditDate was "Tus Sep 27 10:00:00 1994"
*
* Copyright (C) 1995 Vince DeMarco
* Use is governed by the MiscKit license
*/
#import "MiscCSInspector.h"
#import "MiscCircularSlider.h"
@implementation MiscCircularSliderInspector
- init
{
char buf[MAXPATHLEN + 1];
id bundle = [NXBundle bundleForClass:[MiscCircularSlider class]];
[bundle getPath:buf forResource:"MiscCSInspector" ofType:"nib"];
[NXApp loadNibFile:buf owner:self withNames:NO fromZone:[self zone]];
[[NXColorPanel sharedInstance:YES] setShowAlpha:YES];
return self;
}
- ok:sender
{
[object display];
return [super ok:sender];
}
- update
{
[typeMatrix selectCellWithTag:[object sliderStyle]];
[tagField setIntValue:[object tag]];
[widthField setFloatValue:[object sliderPathWidth]];
[minValueField setFloatValue:[(Slider *)object minValue]];
[maxValueField setFloatValue:[(Slider *)object maxValue]];
[upperStopValueField setFloatValue:[object upperStopValue]];
[lowerStopValueField setFloatValue:[object lowerStopValue]];
[currentValueField setFloatValue:[object floatValue]];
[startAngleField setFloatValue:[object startAngle]];
[useBoundariesSwitch setState:[object useBoundaries]];
[upperStopValueField setEnabled:[object useBoundaries]];
[lowerStopValueField setEnabled:[object useBoundaries]];
[[optionMatrix cellAt:0:0] setState:[object isContinuous]];
[[optionMatrix cellAt:1:0] setState:![object isEnabled]];
[[optionMatrix cellAt:3:0] setState:[object jumpToMousePoint]];
[[optionMatrix cellAt:4:0] setState:[object isClockwise]];
if ([object hidden] == YES) {
[[optionMatrix cellAt:2:0] setState: 1]; /* If hidden it is disabled */
[[optionMatrix cellAt:1:0] setEnabled:NO];
} else {
[[optionMatrix cellAt:2:0] setState: 0];
[[optionMatrix cellAt:1:0] setEnabled:YES];
}
[borderMatrix selectCellWithTag:[object borderType]];
[BGColorWell setColor:[object backgroundColor]];
[optionMatrix display];
[borderMatrix display];
return self;
}
- revert:sender
{
[self update];
return [super revert:sender];
}
- (BOOL)wantsButtons
{
return NO;
}
- setType:sender
{
[object setSliderStyle:[[sender selectedCell] tag]];
[self touch:self];
return [self ok:sender];
}
- setMaximum:sender
{
[object setMaxValue:[sender floatValue]];
if ([sender floatValue] < [upperStopValueField floatValue])
{
[object setUpperStopValue:[sender floatValue]];
[upperStopValueField setFloatValue:[sender floatValue]];
}
[self touch:self]; [self update];
return [self ok:sender];
}
- setMinimum:sender
{
[object setMinValue:[sender floatValue]];
if ([sender floatValue] > [lowerStopValueField floatValue])
{
[object setLowerStopValue:[sender floatValue]];
[lowerStopValueField setFloatValue:[sender floatValue]];
}
[self touch:self]; [self update];
return [self ok:sender];
}
- setLowerStop:sender
{
if ([sender floatValue] >= [object upperStopValue])
{
if ([object upperStopValue] - 5.0 < 0)
[object setLowerStopValue:0.0];
else
[object setLowerStopValue:[object upperStopValue] - 5.0];
}
else if ([sender floatValue] < [minValueField floatValue])
[object setLowerStopValue:[minValueField floatValue]];
else
[object setLowerStopValue:[sender floatValue]];
if ([object lowerStopValue] > [currentValueField floatValue])
[currentValueField setFloatValue:
(([object upperStopValue] - [object lowerStopValue]) / 2) + [object lowerStopValue]];
[self touch:self]; [self update];
return [self ok:sender];
}
- setUpperStop:sender
{
if ([sender floatValue] <= [object lowerStopValue])
{
if ([object lowerStopValue] + 5.0 > 360.0)
[object setUpperStopValue:360.0];
else
[object setUpperStopValue:[object lowerStopValue] + 5.0];
}
else if ([sender floatValue] > [maxValueField floatValue])
[object setUpperStopValue:[maxValueField floatValue]];
else
[object setUpperStopValue:[sender floatValue]];
if ([object upperStopValue] < [currentValueField floatValue])
[currentValueField setFloatValue:
(([object upperStopValue] - [object lowerStopValue]) / 2) + [object lowerStopValue]];
[self touch:self]; [self update];
return [self ok:sender];
}
- setUsingBoundaries:sender
{
if ([sender state])
[object setUseBoundaries:YES];
else
[object setUseBoundaries:NO];
[self touch:self]; [self update];
return [self ok:sender];
}
- setCurrent:sender
{
if ([sender floatValue] > [object upperStopValue])
[object setFloatValue:[object upperStopValue]];
else if ([sender floatValue] < [object lowerStopValue])
[object setFloatValue:[object lowerStopValue]];
else
[object setFloatValue:[sender floatValue]];
[self touch:self]; [self update];
return [self ok:sender];
}
- setOptions:sender
{
int state = [[sender selectedCell] state];
switch ([[sender selectedCell] tag]){
case 1: /* Cont */
if (state)
[object setContinuous:YES];
else
[object setContinuous:NO];
break;
case 2: /* Disabled */
if (state)
[object setEnabled:NO];
else
[object setEnabled:YES];
break;
case 3: /* Hidden */
if (state){
[object setHidden:YES]; /* If Hidden it is also disabled */
[object setEnabled:NO];
[[optionMatrix cellAt:1:0] setEnabled:NO];
[[optionMatrix cellAt:1:0] setState:YES];
} else {
[object setHidden:NO];
[[optionMatrix cellAt:1:0] setEnabled:YES];
}
[optionMatrix display];
break;
case 4: /* Jumps to mouse click */
if (state)
[object setJumpToMousePoint:YES];
else
[object setJumpToMousePoint:NO];
break;
case 5: /* Goes clockwise */
if (state)
[object setClockwise:YES];
else
[object setClockwise:NO];
break;
}
[self touch:self];
return [self ok:sender];
}
- setBorder:sender
{
[object setBorderType:[[sender selectedCell] tag]];
[self touch:self];
return [self ok:sender];
}
- setTag:sender
{
[(Cell *)object setTag:[sender intValue]];
[self touch:self];
return [self ok:sender];
}
- changeWidth:sender
{
[object setSliderPathWidth:[sender floatValue]];
[self touch:self];
return [self ok:sender];
}
- setBGColor:sender
{
[object setBackgroundColor:[sender color]];
[self touch:self];
return [self ok:sender];
}
- setStartAnglePos:sender
{
[object setStartAngle:[sender floatValue]];
[self touch:self];
return [self ok:sender];
}
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.