This is ContourOptionsPanel.m in view mode; [Download] [Up]
/* * Copyright (C) 1993 Robert Davis * * This program is free software; you can redistribute it and/or * modify it under the terms of Version 2, or any later version, of * the GNU General Public License as published by the Free Software * Foundation. */ static char RCSId[]="$Id: ContourOptionsPanel.m,v 1.9 1993/05/18 03:54:47 davis Exp $"; #import <appkit/Application.h> #import <appkit/Box.h> #import <appkit/Button.h> #import <appkit/Form.h> #import <appkit/FormCell.h> #import <appkit/Matrix.h> #import <appkit/MenuCell.h> #import <appkit/PopUpList.h> #import "ContourAutoPane.h" #import "ContourOptionsPanel.h" #import "ContourSeriesPane.h" #import "ContourUserPane.h" #import "Status.h" #import "StatusContour.h" @interface ContourOptionsPanel (Private) - _setupPane:(Pane *)aPane; - _selectPane:(int)aPane; - _swapPane:(Pane *)new; - _updatePanel; /** Overridden from OptionsPanel (Private) **/ @end @implementation ContourOptionsPanel - init { [super init]; [NXApp loadNibSection: "ContourOptionsPanel.nib" owner: self withNames: NO fromZone: [self zone]]; [panel setFrameUsingName:"ContourOptionsPanel"]; [panel setFrameAutosaveName:"ContourOptionsPanel"]; enabled = NO; return self; } - free { [seriesPane free]; [userPane free]; [autoPane free]; [[levelsKindButton target] free]; return [super free]; } - (BOOL)isEnabled { return enabled; } - doSetKind:sender { [status setContourKind:[sender selectedTag]]; [self _updatePanel]; /* Changing kind may change other controls */ return self; } - doSetPoints:sender { [status setContourPoints:[sender intValue]]; /* status may not accept points value */ [pointsField setIntValue:[status contourPoints]]; return self; } - doSetOrder:sender { [status setContourOrder:[sender intValue]]; /* status may not accept order value */ [orderField setIntValue:[status contourOrder]]; return self; } - doSetKey:sender { return [status setContourInKey:[sender state]]; } - doSetLevelsKind:sender { [status setContourLevelsKind:[sender selectedTag]]; [levelsKindButton setTag:[sender selectedTag]]; [self _updatePanel]; /* Changing this changes current pane */ return self; } // Shuts up the compiler about unused RCSId - (const char *) rcsid { return RCSId; } @end @implementation ContourOptionsPanel (Private) - _setupPane:(Pane *)aPane { if (aPane) { View *panesView = [aPane view]; [[panel contentView] addSubview: panesView]; [[panesView allocateGState] lockFocus]; [panesView unlockFocus]; [panesView moveTo:0:0]; } return self; } - _selectPane:(int)aPane { switch (aPane) { case LEVELS_INCREMENTAL: if (!seriesPane) { seriesPane = [[ContourSeriesPane allocFromZone:[self zone]] init]; [self _setupPane:seriesPane]; } [self _swapPane:seriesPane]; break; case LEVELS_DISCRETE: if (!userPane) { userPane = [[ContourUserPane allocFromZone:[self zone]] init]; [self _setupPane:userPane]; } [self _swapPane:userPane]; break; default: if (!autoPane) { autoPane = [[ContourAutoPane allocFromZone:[self zone]] init]; [self _setupPane:autoPane]; } [self _swapPane:autoPane]; break; } [currentPane perform:@selector(selectControl:) with:self afterDelay:1 cancelPrevious:YES]; return self; } - _swapPane:(Pane *)new { /* * If the new pane is not already visible, move it into the panel. */ if (new != currentPane) { [levelsKindBox setContentView: [new view]]; [currentPane didSwapOut:self]; [[new didSwapIn:self] updateStatus:status doc:self]; currentPane = new; } return self; } - _updatePanel { int contourKind = [status contourKind]; int levelsKind = [status contourLevelsKind]; [panel disableDisplay]; /* * If the current status is not nil, update the values of all the * controls. */ if (status) { MenuCell *cell; [kindMatrix selectCellWithTag:contourKind]; [pointsField setIntValue:[status contourPoints]]; [orderField setIntValue:[status contourOrder]]; [keyButton setState:[status contourInKey]]; cell = [[levelsKindButton target] findCellWithTag:levelsKind]; [levelsKindButton setTitle:[cell title]]; [levelsKindButton setTag:levelsKind]; } enabled = status && [status isThreeD] && ([status contourBase] || // contours don't show on opaque surf. ([status contourSurface] && ![status hiddenThreeD])); [kindMatrix setEnabled:enabled]; [pointsField setEnabled:enabled && (contourKind != CONTOUR_KIND_LINEAR)]; [orderField setEnabled:enabled && (contourKind == CONTOUR_KIND_BSPLINE)]; [keyButton setEnabled:enabled]; [levelsKindButton setEnabled:enabled]; [levelsKindField setEnabled:enabled]; /* setEnabled the title in the box around the matrix, too */ [[[[kindMatrix superview] superview] cell] setEnabled:enabled]; [self _selectPane:levelsKind]; [currentPane updateStatus:status doc:self]; [panel reenableDisplay]; [panel display]; return self; } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.