home *** CD-ROM | disk | FTP | other *** search
/ QuickTime 2.0 Developer Kit / QuickTime 2.0 Developer Kit.iso / mac / MAC / Programming Stuff / Sample Code / Music Architecture / Embedding Instruments / BigEasy / NWindows.c < prev    next >
Encoding:
C/C++ Source or Header  |  1993-07-12  |  4.5 KB  |  270 lines  |  [TEXT/KAHL]

  1. /*
  2.     File:        NWindows.c
  3.  
  4.     Contains:    xxx put contents here xxx
  5.  
  6.     Written by:    xxx put writers here xxx
  7.  
  8.     Copyright:    © 1991-1993 by Apple Computer, Inc., all rights reserved.
  9.  
  10.     This file is used in these builds: Warhol
  11.  
  12.     Change History (most recent first):
  13.  
  14.         <5+>     7/12/93    dvb        Symantec C++
  15.          <5>      1/7/93    dvb        Compile under mpw.
  16.          <4>    11/12/91    dvb        Refine
  17.          <3>      9/4/91    dvb        More.
  18.          <2>     4/25/91    JB        Changing to new THINK_C interface files
  19.  
  20.     To Do:
  21. */
  22.  
  23. /*
  24.  * file: NWindows.c
  25.  *
  26.  * started 7 July 1988 09:34
  27.  * david van brink
  28.  *
  29.  * A starting point for BigEasy programs
  30.  *
  31.  */
  32.  
  33.  
  34. /*--------------------------
  35.     Inclusions
  36. --------------------------*/
  37.  
  38. #include <QuickDraw.h>
  39. #include <Windows.h>
  40. #include <BDC.h>
  41. #include <Packages.h>
  42.  
  43. #include "BigEasy2.h"
  44.  
  45. /*--------------------------
  46.     Limits and Konstants
  47. --------------------------*/
  48.  
  49.  
  50. enum
  51.     {
  52.     mOpen = 100,
  53.     mClose,
  54.     mNew
  55.     };
  56.  
  57. /*--------------------------
  58.     Types and globals
  59. --------------------------*/
  60.  
  61. #define kBlipRad 10
  62.  
  63. typedef struct TDoc
  64.     {
  65.     Boolean used;
  66.     Point aPoint;
  67.     WindowPtr w;
  68.     } TDoc;
  69.  
  70. #define kFirstDocWindow 1
  71. #define kDocMax 5
  72. TDoc gDoc[kDocMax];
  73. short gDocCount;
  74.  
  75. #define SignIt(x) ( (x)?1:-1)
  76.  
  77. /*--------------------------
  78.     Prototypes
  79. --------------------------*/
  80. static void DrawDoc(short n);
  81. static void ClickDoc(short n,Point p,short mods);
  82. static void KeyDoc(short n,short key,short code, short mods);
  83. static void GoAwayDoc(short n);
  84. static void ActivateDoc(short n);
  85. static void DeactivateDoc(short n);
  86. static void IdleDoc(short n,Boolean front);
  87. static void LetsQuit(void);
  88. static void OpenAWindow(void);
  89. static void NewDoc(void);
  90. static void MakeWindow(void);
  91. static void InitVars(void);
  92.  
  93. /*--------------------------
  94.     Computer Programs
  95. --------------------------*/
  96.  
  97.  
  98. void DrawDoc(short n)
  99. /*
  100.  * Draws the window.
  101.  */
  102.     {
  103.     Rect r;
  104.     register TDoc *d;
  105.  
  106.     d = &gDoc[n-kFirstDocWindow];
  107.  
  108.     EraseRect(&gBigRect);
  109.     MoveTo(0,14);
  110.     Line(10000,0);
  111.     MoveTo(0,16);
  112.     Line(10000,0);
  113.  
  114.     MoveTo(10,11);
  115.     TextSize(9);
  116.     DrawString("\pThis is the window");
  117.  
  118.     r.top = r.bottom = d->aPoint.v;
  119.     r.left = r.right = d->aPoint.h;
  120.     InsetRect(&r,-kBlipRad,-kBlipRad);
  121.     PaintRect(&r);
  122.     }
  123.  
  124.  
  125. void ClickDoc(short n,Point p,short mods)
  126. /*
  127.  * Come here for a click in the window.
  128.  */
  129.     {
  130. #pragma unused (mods)
  131.  
  132.     Rect r;
  133.     register TDoc *d;
  134.  
  135.     d = &gDoc[n-kFirstDocWindow];
  136.  
  137.     r.top = r.bottom = d->aPoint.v;
  138.     r.left = r.right = d->aPoint.h;
  139.     InsetRect(&r,-kBlipRad,-kBlipRad);
  140.     InvalRect(&r);
  141.     d->aPoint = p;
  142.     r.top = r.bottom = p.v;
  143.     r.left = r.right = p.h;
  144.     InsetRect(&r,-kBlipRad,-kBlipRad);
  145.     InvalRect(&r);
  146.     }
  147.  
  148. void KeyDoc(short n,short key,short code, short mods)
  149.     {
  150. #pragma unused (n,key,code,mods)
  151.  
  152.     }
  153.  
  154. void GoAwayDoc(short n)
  155. /*
  156.  * Close that window...
  157.  */
  158.     {
  159.     register TDoc *d;
  160.  
  161.     d = &gDoc[n-kFirstDocWindow];
  162.     d->used = false;
  163.     gDocCount--;
  164.     UninstallWindow(n);
  165.     }
  166.  
  167. void ActivateDoc(short n)
  168.     {
  169. #pragma unused (n)
  170.  
  171.     EnDisEdits(0,0,0,0,0);
  172.      SetMenuItem(mClose,1,0,0,nil);                /* enable "Close" menu item        */
  173.     SetMenuItem(mOpen,-1,0,0,nil);                /* disable "Open" menu item        */
  174.  
  175.     SetMenuItem(mNew,SignIt(gDocCount<kDocMax),0,0,nil);    /* "New" if more docs    */
  176.     }
  177.  
  178. void DeactivateDoc(short n)
  179.     {
  180. #pragma unused (n)
  181.  
  182.     SetMenuItem(mClose,-1,0,0,nil);                /* disable "Close" menu item        */
  183.     SetMenuItem(mOpen,1,0,0,nil);                /* enable "Open" menu item        */
  184.     }
  185.  
  186. void IdleDoc(short n,Boolean front)
  187.     {
  188. #pragma unused (n,front)
  189.     }
  190.  
  191.  
  192. void LetsQuit(void)
  193.     {
  194.     gQuitApp++;
  195.     }
  196.  
  197. void NewDoc()
  198.     {
  199.     short i;
  200.     register TDoc *d;
  201.     Rect r;
  202.     unsigned char c[30];
  203.  
  204.     SetRect(&r,100,100,260,200);
  205.  
  206.     for(i = 0; i<kDocMax; i++)
  207.         {
  208.         d = &gDoc[i];
  209.         if(!d->used)
  210.             goto gotOne;
  211.         }
  212.     goto goHome;
  213.  
  214. gotOne:
  215.     NumToString(i,c);
  216.     d->w = InstallWindow(i+kFirstDocWindow,c,&r,0,1,DrawDoc,ClickDoc,KeyDoc,GoAwayDoc,
  217.             ActivateDoc,DeactivateDoc,IdleDoc);
  218.     d->used = true;
  219.     d->aPoint.v = 100;
  220.     d->aPoint.h = 100;
  221.     gDocCount++;
  222. goHome:;
  223.     }
  224.  
  225. void InitVars()
  226. /*
  227.  * Called once at startup: yes, it
  228.  * inits the vars.
  229.  */
  230.     {
  231.     TDoc *dp;
  232.  
  233.     short i;
  234.  
  235.     for(i = 0; i<kDocMax; i++)
  236.         {
  237.         dp = &gDoc[i];
  238.         dp->used = false;
  239.         }
  240.     gDocCount = 0;
  241.  
  242.     gMenuNeedsCmdKey = false;
  243.     }
  244.  
  245. void Bootstrap()
  246.     {
  247. /*** File Menu ***/
  248.     InstallMenu("\pFile",nil,0);
  249.     InstallMenuItem("\pNew/N",(void *)NewDoc,mNew);
  250.     InstallMenuItem("\pClose/W",(void *)GoAwayDoc,-mClose);
  251.     InstallMenuItem("\p(-",nil,0);
  252.     InstallMenuItem("\pQuit/Q",(void *)LetsQuit,0);
  253.  
  254. /*** Edit Menu ***/
  255.     InstallEditMenu(nil,nil,nil,nil,nil);
  256.  
  257. /*** Special Menu ***/
  258.     InstallMenu("\pSpecial",(void *)nil,0);
  259.     InstallMenuItem("\pSo special",nil,0);
  260.  
  261.     InitVars();
  262.     }
  263.  
  264. void Hatstrap()
  265. /*
  266.   * clean up
  267.   */
  268.     {
  269. //    SaveWindowPosition(-1);
  270.     }