home *** CD-ROM | disk | FTP | other *** search
- //
- // MiscSliderCellInspector.m -- an IBInspector that edits a MiscSliderCell
- // or its MiscSliderField.
- // Written by David Fedchenko. Copyright 1994 by David Fedchenko.
- // Version 1.0 All rights reserved.
- //
- // This notice may not be removed from this source code.
- //
- // This object is included in the MiscKit by permission from the author
- // and its use is governed by the MiscKit license, found in the file
- // "LICENSE.rtf" in the MiscKit distribution. Please refer to that file
- // for a list of all applicable permissions and restrictions.
- //
-
- #import "MiscSliderCellInspector.h"
-
- @implementation MiscSliderCellInspector
-
- - init
- {
- char buf[MAXPATHLEN + 1];
- id bundle;
-
- [super init];
-
- bundle = [NXBundle bundleForClass:[MiscSliderCell class]];
- [bundle getPath:buf forResource:"MiscSliderCellInspector" ofType:"nib"];
- [NXApp loadNibFile:buf owner:self withNames:NO fromZone:[self zone]];
-
- return self;
- }
-
- - updateControls
- {
- [idSoftLower setEnabled:[idExpandLower state]];
- [idSoftLowerLabel setEnabled:[idExpandLower state]];
- [idSoftUpper setEnabled:[idExpandUpper state]];
- [idSoftUpperLabel setEnabled:[idExpandUpper state]];
-
- return self;
- }
-
- - ok:sender
- {
- float t;
-
- [object setMinValue:[idHardLower doubleValue]];
- [object setMaxValue:[idHardUpper doubleValue]];
- [object setMinBoundary:[idSoftLower doubleValue]];
- [object setMaxBoundary:[idSoftUpper doubleValue]];
- [object setExpandMin:[idExpandLower state]];
- [object setExpandMax:[idExpandUpper state]];
- [object setContinuous:[idContinuous state]];
- [object setPosition:[[idPosition selectedCell] tag]];
- t = [idSplit intValue];
- t = MAX(0, t);
- t = MIN(100, t);
- [object setSplit:t];
- [object setIntegerOnly:[idIntOnly state]];
-
- [self updateControls];
-
- return [super ok:sender];
- }
-
- - revert:sender
- {
- // there is casting here because the NeXT headers have a type conflict
- // for these two methods.
- [idHardLower setDoubleValue:[(MiscSliderField *)object minValue]];
- [idHardUpper setDoubleValue:[(MiscSliderField *)object maxValue]];
- [idSoftLower setDoubleValue:[object minBoundary]];
- [idSoftUpper setDoubleValue:[object maxBoundary]];
- [idExpandLower setState:[object expandMin]];
- [idExpandUpper setState:[object expandMax]];
- [idContinuous setState:[object isContinuous]];
- [idPosition selectCellWithTag:[object position]];
- [idSplit setIntValue:[object split]];
- [idIntOnly setState:[object integerOnly]];
-
- [self updateControls];
-
- return [super revert:sender];
- }
-
- - (BOOL)wantsButtons
- {
- return NO;
- }
-
- // the text delegate functions to get the info more better
- - textDidEnd:sender endChar:(unsigned short)whyEnd
- {
- [self ok:sender];
-
- return self;
- }
-
- @end
-
-
- @implementation MiscSliderCell (AttributesInspector)
-
- - (const char *)getInspectorClassName
- {
- NXEvent *ev;
-
- ev = [NXApp currentEvent];
- if (ev->flags&NX_ALTERNATEMASK) // get the superclass inspector
- return [super getInspectorClassName];
- else // the real inspector
- return "MiscSliderCellInspector";
- }
-
- @end
-
-
- @implementation MiscSliderField (AttributesInspector)
-
- - (const char *)getInspectorClassName
- {
- NXEvent *ev;
-
- ev = [NXApp currentEvent];
- if (ev->flags & NX_ALTERNATEMASK) // get the superclass inspector
- return [super getInspectorClassName];
- else // the real inspector
- return "MiscSliderCellInspector";
- }
-
- // this is an override for a category method provided by IB
- - placeView:(NXRect *)rect
- {
- float yPos;
-
- switch ([cell position])
- {
- case MSC_ABOVELEFT:
- case MSC_ABOVECENTER:
- case MSC_ABOVERIGHT:
- case MSC_BELOWLEFT:
- case MSC_BELOWCENTER:
- case MSC_BELOWRIGHT:
- yPos = rect->origin.y + rect->size.height;
- rect->size.height -= MSC_WIDTH + MSC_SPACING;
- [super placeView:rect];
- rect->size.height = frame.size.height + MSC_WIDTH + MSC_SPACING;
- rect->origin.y = yPos - rect->size.height;
- [self setFrame:rect];
- break;
-
- default:
- [super placeView:rect];
- break;
- }
-
- return self;
- }
-
- @end
-