This is Controller.m in view mode; [Download] [Up]
#import "Controller.h"
/* Controller
* by Patrick J. Flynn (flynn@eecs.wsu.edu)
* This class is part of the Movie application, version 2.0.
* 1/15/92
*/
@implementation Controller
- init
{
static NXDefaultsVector MovieDefaults = {
{"DefaultDepth","0"},
{NULL}
};
NXRegisterDefaults("Movie",MovieDefaults);
self = [super init];
projectionists = [[List alloc] init];
prefsPanel=nil;
return self;
}
- (MovieView *)currentMovieView
{
int i;
Window *w=[NXApp mainWindow];
if ((!w)||(![projectionists count])) return nil;
for(i=0;i<[projectionists count];i++) {
Projectionist *p=[projectionists objectAt:i];
if ((w == [p window])||(w==[p panel])) return [p movieView];
};
return nil;
}
- open:sender
{
Projectionist *newProjectionist;
newProjectionist = [[Projectionist alloc] init];
if (![newProjectionist open:sender])
[newProjectionist free];
else
[projectionists addObject:newProjectionist];
return self;
}
- load:sender
{
Projectionist *newProjectionist;
newProjectionist = [[Projectionist alloc] init];
if (![newProjectionist load:sender])
[newProjectionist free];
else
[projectionists addObject:newProjectionist];
return self;
}
#define DOIT(msg) { [[self currentMovieView] msg:self]; return self; }
- save:sender DOIT(save)
- copy:sender DOIT(copy)
- expand2x:sender DOIT(expand2x)
- reduce50pct:sender DOIT(reduce50pct)
- restore:sender DOIT(restore)
- revStep:sender DOIT(revStep)
- rev:sender DOIT(rev)
- stop:sender DOIT(stop)
- fwd:sender DOIT(fwd)
- fwdStep:sender DOIT(fwdStep)
- print:sender DOIT(printPSCode)
- setVersion:anObject
{
[(version = anObject) setStringValue:VERSION];
return self;
}
// preferences handler (Yappish style)
- prefs:sender
{
if (!prefsPanel) {
[NXApp loadNibSection:"Prefs.nib" owner:self withNames:NO];
[self updatePrefs:sender];
};
[prefsPanel makeKeyAndOrderFront:sender];
return self;
}
- updatePrefs:sender
{
int def;
const char *x = NXGetDefaultValue("Movie","DefaultDepth");
if (x) def=atoi(x);
else def=0;
switch(def) {
default:
case 0: [defDepthMatrix selectCellAt:0:0]; break;
case 2: [defDepthMatrix selectCellAt:1:0]; break;
case 8: [defDepthMatrix selectCellAt:2:0]; break;
case 12: [defDepthMatrix selectCellAt:3:0]; break;
case 24: [defDepthMatrix selectCellAt:4:0]; break;
};
return self;
}
- okPrefs:sender
{
int d=[defDepthMatrix selectedRow];
char buf[5];
switch(d) {
default:
case 0: sprintf(buf,"0"); break;
case 1: sprintf(buf,"2"); break;
case 2: sprintf(buf,"8"); break;
case 3: sprintf(buf,"12"); break;
case 4: sprintf(buf,"24"); break;
};
NXWriteDefault("Movie","DefaultDepth",buf);
[[sender window] orderOut:sender];
return self;
}
- cancelPrefs:sender
{
[[sender window] orderOut:sender];
return self;
}
// Application's delegate methods
- (BOOL)appAcceptsAnotherFile:sender
{
return YES;
}
- (int)app:sender openFile:(const char *)filename type:(const char *)type
{
Projectionist *newProjectionist;
newProjectionist = [[Projectionist alloc] init];
if (![[newProjectionist movieView] openFile:(char *)filename]) {
[newProjectionist free];
return NO;
}
else {
[projectionists addObject:newProjectionist];
return YES;
}
}
- appDidInit:sender
{
return self;
}
// Window's delegate methods
- windowDidBecomeMain:sender
{
return self;
}
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.