This is MiscSpaceMouseFrontend.m in view mode; [Download] [Up]
/* MiscSpaceMouseFrontend.m * * This object deals with get GUI we need to do all the settings. * It does not really handle the data. It only controls the views and * graphical controls and work with the main MiscSwapView. * * For interface-info see the header file. The comments in this file mostly * cover only the real implementation details. * * Written by: Thomas Engel * Created: 09.04.1994 (Copyleft) * Last modified: 15.04.1994 */ #import "MiscSpaceMouseFrontend.h" #import "MiscSpaceMouseDriver.h" @implementation MiscSpaceMouseFrontend - revert:sender { [super revert:sender]; if( !view ) { if( [NXApp loadNibSection:"MiscSpaceMouse.nib" owner:self] == nil ) NXRunAlertPanel( NULL, "Couldn't load MiscSpaceMouse.nib", "OK", NULL, NULL); } [mouseDriver setFrontend:self]; // Let's init all the default data. if( [mouseDriver isConnectedToDevice] ) { [privateSwapView setContentView:settingsView]; [[NXApp delegate] setMouse:mouseDriver]; // BUGGY ! NASTY ! } else [privateSwapView setContentView:connectView]; return self; } - usePortA:sender { [portField setEditable:NO]; [portField setStringValue:"/dev/cufa"]; return self; } - usePortB:sender { [portField setEditable:NO]; [portField setStringValue:"/dev/cufb"]; return self; } - useCustomPort:sender { [portField setEditable:YES]; [portField setStringValue:"/dev/?"]; return self; } - connect:sender { if( [mouseDriver connectToDevice:[portField stringValue]] ) { [privateSwapView setContentView:settingsView]; [[NXApp delegate] setMouse:mouseDriver]; // BUGGY ! NASTY ! } return self; } - disconnect:sender { [mouseDriver disconnectFromDevice]; [privateSwapView setContentView:connectView]; return self; } - takeTransModeFrom:sender { if( sender == mouseDriver ) [transModeSwitch setState:[sender hasTranslationEnabled]]; else [mouseDriver setMouseInDominantMode:[mouseDriver isInDominantMode] withTranslationEnabled:[sender state] andRotationEnabled:[mouseDriver hasRotationEnabled]]; return self; } - takeRotModeFrom:sender { if( sender == mouseDriver ) [rotModeSwitch setState:[sender hasRotationEnabled]]; else [mouseDriver setMouseInDominantMode:[mouseDriver isInDominantMode] withTranslationEnabled:[mouseDriver hasTranslationEnabled] andRotationEnabled:[sender state]]; return self; } - takeDomModeFrom:sender { if( sender == mouseDriver ) [domModeSwitch setState:[sender isInDominantMode]]; else [mouseDriver setMouseInDominantMode:[sender state] withTranslationEnabled:[mouseDriver hasTranslationEnabled] andRotationEnabled:[mouseDriver hasRotationEnabled]]; return self; } - takeRotQualityFrom:sender { int anInt; if( sender == mouseDriver ) { anInt = [sender rotationQuality]; [rotQualitySlider setIntValue:anInt]; [rotQualityField setIntValue:anInt]; } else [mouseDriver setQualityForTranslation:[mouseDriver translationQuality] andRotation:[sender intValue]]; return self; } - takeTransQualityFrom:sender { int anInt; if( sender == mouseDriver ) { anInt = [sender translationQuality]; [transQualitySlider setIntValue:anInt]; [transQualityField setIntValue:anInt]; } else [mouseDriver setQualityForTranslation:[sender intValue] andRotation:[mouseDriver rotationQuality]]; return self; } - takeScaleFrom:sender { float scale; float ration; if( sender == mouseDriver ) { scale = [sender rotScale]; ration = [sender transScale] / scale; [scaleSlider setFloatValue:scale]; [scaleField setFloatValue:scale]; } else { scale = [sender floatValue]; ration = [scaleRationSlider floatValue]; [mouseDriver setRotScale:scale]; [mouseDriver setTransScale:scale * ration]; } return self; } - takeScaleRationFrom:sender { float scale; float ration; if( sender == mouseDriver ) { scale = [sender rotScale]; ration = [sender transScale] / scale; [scaleRationSlider setFloatValue:ration]; [scaleRationField setFloatValue:ration]; } else { scale = [scaleSlider floatValue]; ration = [sender floatValue]; [mouseDriver setTransScale:scale * ration]; } return self; } - takeNullRadiusFrom:sender { int anInt; if( sender == mouseDriver ) { anInt = [sender nullRadius]; [nullRadiusSlider setIntValue:anInt]; [nullRadiusField setIntValue:anInt]; } else [mouseDriver setNullRadius:[sender intValue]]; return self; } - takeMinDataRateFrom:sender { int anInt; if( sender == mouseDriver ) { anInt = [sender minDataRate]; [minDataRateSlider setIntValue:anInt]; [minDataRateField setIntValue:anInt]; } else [mouseDriver setDataRateMin:[sender intValue] max:[mouseDriver maxDataRate]]; return self; } - takeMaxDataRateFrom:sender { int anInt; if( sender == mouseDriver ) { anInt = [sender maxDataRate]; [maxDataRateSlider setIntValue:anInt]; [maxDataRateField setIntValue:anInt]; } else [mouseDriver setDataRateMin:[mouseDriver minDataRate] max:[sender intValue]]; return self; } @end /* * History: 15.04.94 All the settings should work now. * * 09.04.94 First codeing done. * * * Bugs: - Not very likely. */
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.