This is TorusWaveInsp.m in view mode; [Download] [Up]
/*
* Copyright 1993 by Cub'x Systemes
*
* All Rights Reserved
*
* Permission to use, copy, and distribute this software and its
* documentation for the purpose of making new intuitiv'3d modules.
* This copyright notice must appears in all copies that you distribute.
* The name of Cub'x Systeme should not be used in advertising or publicity
* without specific, written prior permission.
* CUB'X SYSTEMES DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
* ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
* CUB'X SYSTEMES BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
* ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
* WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
* ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
* SOFTWARE.
*/
/*****************************************************************************
*
* CustomObject module
* -------------------
*
* File: TorusWaveInsp.m
*
* Contents: An inspector for the TorusWave
*
*
*****************************************************************************/
#import "TorusWaveInsp.h"
#import "TorusWave.h"
#import <appkit/Control.h>
@implementation TorusWaveInsp:InspectorView
{
id thetamaxSlider;
id thetamaxTextfield;
id waveCountSlider;
id waveCountTextfield;
id radiusTextfield;
id radiusSlider;
}
/*******************************************************************************
* *
* Class methods *
* *
*******************************************************************************/
/*
* This method should return the name of the nib file that you want to
* use with the inspector.
*/
+ (const char*)nibName
{
return "TorusWaveInsp";
}
/*******************************************************************************
* *
* Instance methods *
* *
*******************************************************************************/
/*
* Target / action methods. Please see DistortedCubeInsp.nib
*
* Please notice macro usage for real-time if needed.
*/
- thetamaxChange:sender
{
float v = [sender floatValue];
if( v < 1.0 )
v = 1.0;
else if( v > 360.0 )
v = 360.0;
[thetamaxSlider setFloatValue: v];
[thetamaxTextfield setFloatValue:v];
UPDATE_OBJECT_IF_NEED(setThetamax:,v);
return self;
}
- waveCountChange:sender
{
int v = [sender intValue];
if( v < 1 )
v = 1;
[waveCountTextfield setIntValue: v];
[waveCountSlider setIntValue: v];
UPDATE_OBJECT_IF_NEED(setWaveCount:,(unsigned int) v);
return self;
}
- radiusChange:sender
{
float v = [sender floatValue];
if( v < .01 )
v = .01;
[radiusTextfield setFloatValue: v];
[radiusSlider setFloatValue: v];
UPDATE_OBJECT_IF_NEED( setRadius:, v );
return self;
}
/*
* Instance methods to be compatible with intuitiv'3d's inspector protocol.
*/
/*
* This method should send all inspector values to the object
* This method is called when the user presses the Ok button.
*/
- sendAllValueToObject: anObject
{
/*
* Note that the textfield is used to get the interface value. */
[anObject setWaveCount: [waveCountTextfield intValue]];
[anObject setThetamax: [thetamaxTextfield floatValue]];
[anObject setRadius: [radiusTextfield floatValue]];
return self;
}
/*
* This method should set the inspector's interface to the
* value of anObject. This method is called when there is
* a new object selection or when the user presses the
* revert button.
*/
- receiveAllValueFromObject: anObject
{
int waveCount = [anObject waveCount];
float thetamax= [anObject thetamax];
float radius = [anObject radius];
[waveCountTextfield setIntValue: waveCount];
[waveCountSlider setIntValue: waveCount];
[thetamaxTextfield setFloatValue: thetamax];
[thetamaxSlider setFloatValue: thetamax];
[radiusTextfield setFloatValue: radius];
[radiusSlider setFloatValue: radius];
return self;
}
/*
* This method should return the name of the inspector
*/
- (const char*) title
{
return "TorusWave inspector";
}
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.