This is StereoController.m in view mode; [Download] [Up]
/* Generated by Interface Builder */ #import <appkit/appkit.h> #import "StereoController.h" #import "StereoView.h" #import "DefaultHandler.h" #import "SterOptikonApp.h" int isCleared; @implementation StereoController id _defaults; extern char TmpDir[]; extern char EyeOffset[]; extern char Cube[]; extern char Axes[]; #import "monitor.m" - (BOOL)appAcceptsAnotherFile:sender { return YES; } - appDidInit:sender { float floatVal; int intVal; inputText = [theScrollView docView]; [inputText setDelegate:self]; [[NXApp appListener] setServicesDelegate:self]; [[theStereoView window] makeKeyAndOrderFront:self]; /* Get default values and send them to theStereoView */ _defaults = [DefaultHandler new]; if (strcmp(EyeOffset,"")) { sscanf(EyeOffset,"%f",&floatVal); [theStereoView setEyeOffset:floatVal]; } if (strcmp(Axes,"")) { sscanf(Axes,"%d",&intVal); [theStereoView setAxes:intVal]; } if (strcmp(Cube,"")) { sscanf(Cube,"%d",&intVal); [theStereoView setCube:intVal]; } strcpy(selectedFile,(char *)[NXApp getInitialFile]); [theStereoView readSData:selectedFile]; [theStereoView setCube:YES]; isCleared = NO; return self; } - requestPlot:(id)pasteboard userData:(const char *)userData error: (char **)msg /* * Responds to a request from another application for the plotting service. * PlotController copies the data from the supplied pasteboard into the Text object * and then sends a plot: message to the StereoView. */ { char *data, *scratch; int length; [NXApp activateSelf:NO]; [pasteboard types]; if ([pasteboard readType:NXAsciiPboardType data:&data length:&length]) { scratch = malloc(length+1); strncpy(scratch, data, length); scratch[length]='\0'; [[inputText selectAll:self] replaceSel:scratch]; free(scratch); /* vm_deallocate(task_self(), (vm_address_t)data, (vm_size_t)length); */ [theStereoView S_Reset:self]; [theStereoView textChanged:self]; [theStereoView plot:self]; } return self; } - quit:sender { /* sprintf(EyeOffset,"%f",[theStereoView getEyeOffset]); sprintf(Axes,"%d",[theStereoView getAxes]); sprintf(Cube,"%d",[theStereoView getCube]); [_defaults free]; */ [theStereoView closeRequest:self]; [NXApp terminate:self]; return self; } - showInfoPanel:sender { if(!infoPanel) { [NXApp loadNibSection:"Info.nib" owner:self]; } [infoPanel makeKeyAndOrderFront:self]; return self; } - showPrefPanel:sender { [prefPanel makeKeyAndOrderFront:self]; return self; } - windowDidResize:sender { /* This is received after resizing */ /* printf("windowDidResize in controller\n"); */ return self; } - windowWillResize:sender toSize:(NXSize *)aSize { /* This is received upon mouse down in resize bar */ /* printf("windowWillResize for controller\n"); */ return self; } - showError:(char *)errorMessage { NXRunAlertPanel("Error", errorMessage, "OK", NULL, NULL); return self; } - textDidGetKeys:theText isEmpty:(BOOL)flag /* * Responds to a message the Text object sends when its text changes. * StereoController causes the StereoView to clear itself when the text changes. */ { if ( isCleared ) return self; isCleared = YES; [theStereoView textEdited:self]; return [theStereoView clear:self]; } - stereoView:sender providePoints:(NXStream **)stream /* * Responds to a message the PlotView sends requesting the points to plot. * PlotController responds by giving the PlotView access to the Text * object's stream. */ { int endPos; endPos = [inputText byteLength]; [inputText setSel:endPos :endPos]; *stream = [inputText stream]; [[theStereoView window] makeFirstResponder:theStereoView]; isCleared = NO; return self; } - stereoView:sender pointDidChange:(char *)aLine /* * Responds to a message the StereoView sends notifying its delegate * that a line has been read. Responds by adding the line to * the end of the list in the Text object. */ { int endPos; char buffer[100]; sprintf(buffer, "%s\n", aLine); endPos = [inputText byteLength]; [inputText setSel:endPos :endPos]; [inputText scrollSelToVisible]; [inputText replaceSel:buffer]; return self; } - stereoView:sender clearText:(char *)aLine /* * Responds to a message the StereoView sends notifying its delegate * to clear the text. */ { int endPos, beginPos; endPos = [inputText byteLength]; beginPos = 0; [inputText setSel:beginPos :endPos]; [inputText scrollSelToVisible]; [inputText replaceSel:""]; [[theStereoView window] makeFirstResponder:theStereoView]; return self; } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.