This is MiscSliderCellInspector.m in view mode; [Download] [Up]
// // 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
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.