This is ViewController.m in view mode; [Download] [Up]
/**************************************************
* SynthBuilder
* Copyright 1993 Nick Porcaro All Rights Reserved
**************************************************/
#import <appkit/Application.h>
#import <objc/List.h>
#import "ViewController.h"
#import "CellScrollView.h"
#import "GenericCell.h"
#import "GenericObject.h"
#import "IconView.h"
#import "DragView.h"
@implementation ViewController
static id theViewController;
+ theViewController
{
return theViewController;
}
- gotItMan:sender
{
[self displayIconForCurrentSelection];
return self;
}
- awakeFromNib
{
[self switchViewToNumber:1];
return self;
}
- init
{
theViewController = self;
[NXApp loadNibSection:"ViewController.nib" owner:self withNames:NO];
return self;
}
- setFocusLock:(BOOL) val
{
doFocusLock = val;
return self;
}
- (BOOL) getFocusLock
{
return doFocusLock;
}
- initView: (int) viewNum list: aList class: (Class) aClass name: (char *) aName
{
switch (viewNum)
{
case(1):
{
list1 = aList;
class1 = aClass;
[scrollView1 initCellMatrix];
[scrollView1 setCellList:list1];
[name1 setStringValue: aName];
break;
}
case(2):
{
list2 = aList;
class2 = aClass;
[scrollView2 initCellMatrix];
[scrollView2 setCellList:list2];
[name2 setStringValue: aName];
break;
}
case(3):
{
list3 = aList;
class3 = aClass;
[scrollView3 initCellMatrix];
[scrollView3 setCellList:list3];
[name3 setStringValue: aName];
break;
}
default:
{
list1 = aList;
class1 = aClass;
[scrollView1 initCellMatrix];
[scrollView1 setCellList:list1];
[name1 setStringValue: aName];
}
}
return self;
}
- setMultiView:aView
{
multiView = aView;
return self;
}
- setDragView:aView
{
theDragView = aView;
return self;
}
- getDragView
{
return theDragView;
}
- switchView:sender
/* Action method: Connect this to a each PopUpList cell */
{
[self switchViewToNumber: [ [sender selectedCell] tag]];
return self;
}
- switchViewToNumber:(int) aTag
{
id newContentView = nil;
NXRect boxRect, viewRect;
switch (aTag)
{
case 1:
{
newContentView = [view1 contentView];
currView = view1;
currScrollView = scrollView1;
currList = list1;
currClass = class1;
break;
}
case 2:
{
newContentView = [view2 contentView];
currView = view2;
currScrollView = scrollView2;
currList = list2;
currClass = class2;
break;
}
case 3:
{
newContentView = [view3 contentView];
currView = view3;
currScrollView = scrollView3;
currList = list3;
currClass = class3;
break;
}
default:
{
newContentView = [view1 contentView];
currView = view1;
currScrollView = scrollView1;
currList = list1;
currClass = class1;
break;
}
}
[multiView getFrame:&boxRect];
[currView getFrame:&viewRect];
[multiView setContentView:currView];
NX_X(&viewRect)=
(NX_WIDTH(&boxRect)-NX_WIDTH(&viewRect)) / 2.0;
NX_Y(&viewRect) =
(NX_HEIGHT(&boxRect)-NX_HEIGHT(&viewRect))/ 2.0;
[currView setFrame:&viewRect];/* center the view */
[currScrollView updateList];
[multiView display];
[theDragView blank];
return self;
}
- makeCopy:sender
{
id anObject;
char *ptr;
char newName[256];
anObject = [[self currentObject] copy];
ptr = [anObject getName];
if (ptr)
{
sprintf(newName, "Copy Of %s", ptr);
[anObject setName:newName];
}
[anObject edit];
[currList addObject:anObject];
[currScrollView objectsJustAdded];
[currScrollView updateList];
[self closeInspector];
return self;
}
- takeNameFrom:sender
{
[self addObjectWithName:
(char *) [sender stringValue]];
return self;
}
- addObjectWithName:(char *) aName
/* The user can connect a control that
* has a stringValue in it to this method
*/
{
id anObject;
if (! aName)
{
return self;
}
anObject = [[currClass alloc] init];
[anObject setName:aName];
[anObject edit];
[currList addObject:anObject];
[currScrollView objectsJustAdded];
[currScrollView updateList];
return self;
}
- editSelections:sender
{
[currScrollView editSelections];
[self closeInspector];
return self;
}
- deleteSelections:sender
/*
* Delete the objects corresponding to the selected
* items in currView
*/
{
[currScrollView deleteSelections];
[self displayInspector:self];
[self closeInspector];
return self;
}
- currentObject
{
return [currScrollView currentlySelectedObject];
}
- reportCurrentSelection:sender
{
[currScrollView reportCurrentSelection];
return self;
}
- displayIconForCurrentSelection
{
[theDragView showImage:[currScrollView getCurrentImage]];
return self;
}
- displayInspector:sender
{
if ([currScrollView haveSelection])
{
[theIconView showImage:[currScrollView getCurrentImage]];
[theLabel setStringValue:[[self currentObject] getName]];
[inspector setTitle:[[self currentObject] getName]];
[inspector makeKeyAndOrderFront:self];
}
return self;
}
- closeInspector
{
if (inspector)
{
[inspector performClose:self];
}
return self;
}
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.