home *** CD-ROM | disk | FTP | other *** search
/ Nebula 1995 August / NEBULA.bin / SourceCode / BrainRulers / Source / Controller.m < prev    next >
Encoding:
Text File  |  1994-06-07  |  4.1 KB  |  169 lines

  1. #import "Controller.h"
  2. #import "Ruler.h"
  3. #import "RuledScrollView.h"
  4. #import "CrosshairView.h"
  5. #import "DragPSView.h"        // DRAGGEDFILENAME
  6. #import    <appkit/Application.h>    // NXApp
  7. #import    <appkit/Matrix.h>
  8. #import    <appkit/MenuCell.h>
  9. #import <appkit/NXImage.h>
  10. #import    <appkit/publicWraps.h>    // NXBeep
  11.  
  12. @implementation Controller
  13.  
  14. - appDidInit:sender
  15. {    
  16.     xSize = 700.0;
  17.     ySize = 300.0;
  18.     [self  setupTileView];
  19.     [[ruledScrollView window] orderFront:NULL];
  20.     
  21.     return self;
  22. }
  23.  
  24. - setupTileView
  25.   /* called by appDidInit */
  26. {
  27.     NXRect        viewRect, rulerViewRect;
  28.     id         ruler;
  29.     
  30.     [ruledScrollView setVertScrollerRequired:YES];
  31.     [ruledScrollView setHorizScrollerRequired:YES];
  32.     [ruledScrollView setBorderType:NX_BEZEL];
  33.  
  34.     NXSetRect(&viewRect, 0, 0, xSize, ySize);
  35.   // create the docView and place it within its scrollView
  36.     crosshairView = [[CrosshairView alloc] initFrame:&viewRect];
  37.     [ruledScrollView setDocView:crosshairView];
  38.  
  39.     // here we retrieve the topRuler (added by setTopRuler)
  40.     // so that we can set some of its attributes
  41.     ruler = [ruledScrollView topRuler];
  42.   // set spacing for inches on top ruler (on printout - appears smaller on-screen) 
  43.     [[ruler setScaleSpacing:72] setInverted:YES];
  44.     [ruler setDraggableRuler:YES];
  45.  
  46.   // Create a Ruler for the bottom - this is how we could add a ruler
  47.   // programmatically.  The height is set to 20 points 
  48.   // (its width will be set to main view's size) 
  49.     NXSetRect(&rulerViewRect, (NXCoord) 0, (NXCoord) 0, (NXCoord) 0, (NXCoord) 20);
  50.     ruler = [[Ruler alloc] initFrame:&rulerViewRect];
  51.     [ruledScrollView addRulerView:ruler toEdge:BOTTOMEDGE];
  52.  
  53.   // retrieve the Ruler for the leftside (added by setLeftRuler)
  54.   // set width to 25 points (its height will be set to main view's size)
  55.     ruler = [ruledScrollView leftRuler];
  56.     [[ruler setAlignment:NX_LEFTALIGNED] setOrientation:VERTICAL];
  57.     [[[ruler setBackgroundGray:NX_DKGRAY] setUnits:"V"] setBorder:5];
  58.     [ruler setDraggableRuler:YES];
  59.  
  60.   // IMPORTANT: We must send a setSize message every
  61.   // time the size of the main view is changed
  62.     [ruledScrollView setSize];
  63.     return self;
  64. }
  65.  
  66. - toggleRulers:sender
  67. {
  68.     if ([ruledScrollView isRulerVisible:LEFTEDGE]) {
  69.         [ruledScrollView hideRuler:LEFTEDGE];
  70.         [ruledScrollView hideRuler:RIGHTEDGE];
  71.         [ruledScrollView hideRuler:TOPEDGE];
  72.         [ruledScrollView hideRuler:BOTTOMEDGE];
  73.         [ruledScrollView setSize];
  74.         [rulerToggleMenuCell setTitleNoCopy:(const char *)"Turn Rulers On"];
  75.         }
  76.     else {
  77.         [ruledScrollView showRuler:LEFTEDGE];
  78.         [ruledScrollView showRuler:RIGHTEDGE];
  79.         [ruledScrollView showRuler:TOPEDGE];
  80.         [ruledScrollView showRuler:BOTTOMEDGE];
  81.         [ruledScrollView setSize];
  82.         [rulerToggleMenuCell setTitleNoCopy:(const char *)"Turn Rulers Off"];
  83.         }
  84.     return self;
  85. }
  86.  
  87. - setSize:sender
  88. {
  89.     [ruledScrollView setSizeIfNeeded];
  90.     return self;
  91. }
  92.  
  93. - cleanAndTerminate:sender
  94. {
  95.     // remove the temp dragging file before terminating
  96.     remove((const char *)DRAGGEDFILENAME);
  97.     [NXApp terminate:self];
  98.     return self;
  99. }
  100.  
  101. - xZoomIn:sender;
  102. {
  103.     if (xSize <1000) {
  104.         NXRect        viewRect;
  105.         xSize += 100.0;
  106.         NXSetRect(&viewRect, 0, 0, xSize, ySize);
  107.         [[ruledScrollView docView] setFrame:&viewRect];
  108.         [ruledScrollView setSize];
  109.         }
  110.     else
  111.         NXBeep();
  112.     return self;
  113. }
  114.  
  115. - xZoomOut:sender;
  116. {
  117.     if (xSize > 100) {
  118.         NXRect        viewRect;
  119.         xSize -= 100.0;
  120.         NXSetRect(&viewRect, 0, 0, xSize, ySize);
  121.         [[ruledScrollView docView] setFrame:&viewRect];
  122.         [ruledScrollView setSize];
  123.         }
  124.     else
  125.         NXBeep();
  126.     return self;
  127. }
  128.  
  129. - yZoomIn:sender;
  130. {
  131.     if (ySize < 1000) {
  132.         NXRect        viewRect;
  133.         ySize += 100.0;
  134.         NXSetRect(&viewRect, 0, 0, xSize, ySize);
  135.         [[ruledScrollView docView] setFrame:&viewRect];
  136.         [ruledScrollView setSize];
  137.         }
  138.     else
  139.         NXBeep();
  140.     return self;
  141. }
  142.  
  143. - yZoomOut:sender;
  144. {
  145.     if (ySize > 100) {
  146.         NXRect        viewRect;
  147.         ySize -= 100.0;
  148.         NXSetRect(&viewRect, 0, 0, xSize, ySize);
  149.         [[ruledScrollView docView] setFrame:&viewRect];
  150.         [ruledScrollView setSize];
  151.         }
  152.     else
  153.         NXBeep();
  154.     return self;
  155. }
  156.  
  157. - zoomSet:sender
  158. {
  159.     NXRect        viewRect;
  160.  
  161.     xSize = ySize = [[sender selectedCell] tag];
  162.     ySize -= 100.0;
  163.     NXSetRect(&viewRect, 0, 0, xSize, ySize);
  164.     [[ruledScrollView docView] setFrame:&viewRect];
  165.     [ruledScrollView setSize];
  166.     return self;
  167. }
  168. @end
  169.