home *** CD-ROM | disk | FTP | other *** search
/ Altsys Virtuoso 2.0K / virtuoso_20k.iso / DemoApps / Graphics / Multimedia / Movie / Source / Controller.m < prev    next >
Encoding:
Text File  |  1993-01-26  |  3.2 KB  |  155 lines

  1. #import "Controller.h"
  2.  
  3. /* Controller
  4.  * by Patrick J. Flynn (flynn@eecs.wsu.edu)
  5.  * This class is part of the Movie application, version 2.0.
  6.  * 1/15/92
  7.  */
  8.  
  9. @implementation Controller
  10.  
  11. - init
  12. {
  13.   static NXDefaultsVector MovieDefaults = {
  14.          {"DefaultDepth","0"},
  15.          {NULL}
  16.          };
  17.   NXRegisterDefaults("Movie",MovieDefaults);
  18.   self = [super init];
  19.   projectionists = [[List alloc] init];
  20.   prefsPanel=nil;
  21.   return self;
  22. }
  23.  
  24. - (MovieView *)currentMovieView
  25. {
  26.   int i;
  27.   Window *w=[NXApp mainWindow];
  28.   
  29.   if ((!w)||(![projectionists count])) return nil;
  30.   for(i=0;i<[projectionists count];i++) {
  31.     Projectionist *p=[projectionists objectAt:i];
  32.     if ((w == [p window])||(w==[p panel])) return [p movieView];
  33.     };
  34.   return nil;
  35. }
  36.  
  37. - open:sender
  38. {
  39.   Projectionist *newProjectionist;
  40.   newProjectionist = [[Projectionist alloc] init];
  41.   if (![newProjectionist open:sender])
  42.     [newProjectionist free];
  43.   else
  44.     [projectionists addObject:newProjectionist];
  45.  
  46.   return self;
  47. }
  48.  
  49. #define DOIT(msg) { [[self currentMovieView] msg:self]; return self; }
  50.  
  51. - save:sender DOIT(save)
  52. - copy:sender DOIT(copy)
  53. - expand2x:sender DOIT(expand2x)
  54. - reduce50pct:sender DOIT(reduce50pct)
  55. - restore:sender DOIT(restore)
  56. - revStep:sender DOIT(revStep)
  57. - rev:sender DOIT(rev)
  58. - stop:sender DOIT(stop)
  59. - fwd:sender DOIT(fwd)
  60. - fwdStep:sender DOIT(fwdStep)
  61.  
  62. - print:sender DOIT(printPSCode)
  63.  
  64. - setVersion:anObject
  65. {
  66.   [(version = anObject) setStringValue:VERSION];
  67.   return self;
  68. }
  69.  
  70. // preferences handler (Yappish style)
  71.  
  72. - prefs:sender
  73. {
  74.   if (!prefsPanel) {
  75.     [NXApp loadNibSection:"Prefs.nib" owner:self withNames:NO];
  76.     [self updatePrefs:sender];
  77.     };
  78.   [prefsPanel makeKeyAndOrderFront:sender];
  79.   return self;
  80. }
  81.  
  82. - updatePrefs:sender
  83. {
  84.   int def;
  85.   const char *x = NXGetDefaultValue("Movie","DefaultDepth");
  86.   if (x) def=atoi(x);
  87.   else def=0;
  88.   switch(def) {
  89.     default:
  90.     case 0: [defDepthMatrix selectCellAt:0:0]; break;
  91.     case 2: [defDepthMatrix selectCellAt:1:0]; break;
  92.     case 8: [defDepthMatrix selectCellAt:2:0]; break;
  93.     case 12: [defDepthMatrix selectCellAt:3:0]; break;
  94.     case 24: [defDepthMatrix selectCellAt:4:0]; break;
  95.     };
  96.   return self;
  97. }
  98.  
  99. - okPrefs:sender
  100. {
  101.   int d=[defDepthMatrix selectedRow];
  102.   char buf[5];
  103.   switch(d) {
  104.     default:
  105.     case 0: sprintf(buf,"0"); break;
  106.     case 1: sprintf(buf,"2"); break;
  107.     case 2: sprintf(buf,"8"); break;
  108.     case 3: sprintf(buf,"12"); break;
  109.     case 4: sprintf(buf,"24"); break;
  110.     };
  111.   NXWriteDefault("Movie","DefaultDepth",buf);
  112.   [[sender window] orderOut:sender];
  113.   return self;
  114. }
  115.  
  116. - cancelPrefs:sender
  117. {
  118.   [[sender window] orderOut:sender];
  119.   return self;
  120. }
  121.  
  122. // Application's delegate methods
  123.  
  124. - (BOOL)appAcceptsAnotherFile:sender
  125. {
  126.   return YES;
  127. }
  128.  
  129. - (int)app:sender openFile:(const char *)filename type:(const char *)type
  130. {
  131.   Projectionist *newProjectionist;
  132.   newProjectionist = [[Projectionist alloc] init];
  133.   if (![[newProjectionist movieView] openFile:(char *)filename]) {
  134.     [newProjectionist free];
  135.     return NO;
  136.     }
  137.   else {
  138.     [projectionists addObject:newProjectionist];
  139.     return YES;
  140.     }
  141. }
  142.  
  143. - appDidInit:sender
  144. {
  145.   return self;
  146. }
  147.  
  148. // Window's delegate methods
  149. - windowDidBecomeMain:sender
  150. {
  151.   return self;
  152. }
  153.  
  154. @end
  155.