Retired Document
Important: This sample code may not represent best practices for current development. The project may use deprecated symbols and illustrate technologies and techniques that are no longer recommended.
BigEasy/NWindows.c
/* |
File: NWindows.c |
Contains: xxx put contents here xxx |
Written by: xxx put writers here xxx |
Copyright: © 1991-1993 by Apple Computer, Inc., all rights reserved. |
This file is used in these builds: Warhol |
Change History (most recent first): |
<5+> 7/12/93 dvb Symantec C++ |
<5> 1/7/93 dvb Compile under mpw. |
<4> 11/12/91 dvb Refine |
<3> 9/4/91 dvb More. |
<2> 4/25/91 JB Changing to new THINK_C interface files |
To Do: |
*/ |
/* |
* file: NWindows.c |
* |
* started 7 July 1988 09:34 |
* david van brink |
* |
* A starting point for BigEasy programs |
* |
*/ |
/*-------------------------- |
Inclusions |
--------------------------*/ |
#include <QuickDraw.h> |
#include <Windows.h> |
#include <BDC.h> |
#include <Packages.h> |
#include "BigEasy2.h" |
/*-------------------------- |
Limits and Konstants |
--------------------------*/ |
enum |
{ |
mOpen = 100, |
mClose, |
mNew |
}; |
/*-------------------------- |
Types and globals |
--------------------------*/ |
#define kBlipRad 10 |
typedef struct TDoc |
{ |
Boolean used; |
Point aPoint; |
WindowPtr w; |
} TDoc; |
#define kFirstDocWindow 1 |
#define kDocMax 5 |
TDoc gDoc[kDocMax]; |
short gDocCount; |
#define SignIt(x) ( (x)?1:-1) |
/*-------------------------- |
Prototypes |
--------------------------*/ |
static void DrawDoc(short n); |
static void ClickDoc(short n,Point p,short mods); |
static void KeyDoc(short n,short key,short code, short mods); |
static void GoAwayDoc(short n); |
static void ActivateDoc(short n); |
static void DeactivateDoc(short n); |
static void IdleDoc(short n,Boolean front); |
static void LetsQuit(void); |
static void OpenAWindow(void); |
static void NewDoc(void); |
static void MakeWindow(void); |
static void InitVars(void); |
/*-------------------------- |
Computer Programs |
--------------------------*/ |
void DrawDoc(short n) |
/* |
* Draws the window. |
*/ |
{ |
Rect r; |
register TDoc *d; |
d = &gDoc[n-kFirstDocWindow]; |
EraseRect(&gBigRect); |
MoveTo(0,14); |
Line(10000,0); |
MoveTo(0,16); |
Line(10000,0); |
MoveTo(10,11); |
TextSize(9); |
DrawString("\pThis is the window"); |
r.top = r.bottom = d->aPoint.v; |
r.left = r.right = d->aPoint.h; |
InsetRect(&r,-kBlipRad,-kBlipRad); |
PaintRect(&r); |
} |
void ClickDoc(short n,Point p,short mods) |
/* |
* Come here for a click in the window. |
*/ |
{ |
#pragma unused (mods) |
Rect r; |
register TDoc *d; |
d = &gDoc[n-kFirstDocWindow]; |
r.top = r.bottom = d->aPoint.v; |
r.left = r.right = d->aPoint.h; |
InsetRect(&r,-kBlipRad,-kBlipRad); |
InvalRect(&r); |
d->aPoint = p; |
r.top = r.bottom = p.v; |
r.left = r.right = p.h; |
InsetRect(&r,-kBlipRad,-kBlipRad); |
InvalRect(&r); |
} |
void KeyDoc(short n,short key,short code, short mods) |
{ |
#pragma unused (n,key,code,mods) |
} |
void GoAwayDoc(short n) |
/* |
* Close that window... |
*/ |
{ |
register TDoc *d; |
d = &gDoc[n-kFirstDocWindow]; |
d->used = false; |
gDocCount--; |
UninstallWindow(n); |
} |
void ActivateDoc(short n) |
{ |
#pragma unused (n) |
EnDisEdits(0,0,0,0,0); |
SetMenuItem(mClose,1,0,0,nil); /* enable "Close" menu item */ |
SetMenuItem(mOpen,-1,0,0,nil); /* disable "Open" menu item */ |
SetMenuItem(mNew,SignIt(gDocCount<kDocMax),0,0,nil); /* "New" if more docs */ |
} |
void DeactivateDoc(short n) |
{ |
#pragma unused (n) |
SetMenuItem(mClose,-1,0,0,nil); /* disable "Close" menu item */ |
SetMenuItem(mOpen,1,0,0,nil); /* enable "Open" menu item */ |
} |
void IdleDoc(short n,Boolean front) |
{ |
#pragma unused (n,front) |
} |
void LetsQuit(void) |
{ |
gQuitApp++; |
} |
void NewDoc() |
{ |
short i; |
register TDoc *d; |
Rect r; |
unsigned char c[30]; |
SetRect(&r,100,100,260,200); |
for(i = 0; i<kDocMax; i++) |
{ |
d = &gDoc[i]; |
if(!d->used) |
goto gotOne; |
} |
goto goHome; |
gotOne: |
NumToString(i,c); |
d->w = InstallWindow(i+kFirstDocWindow,c,&r,0,1,DrawDoc,ClickDoc,KeyDoc,GoAwayDoc, |
ActivateDoc,DeactivateDoc,IdleDoc); |
d->used = true; |
d->aPoint.v = 100; |
d->aPoint.h = 100; |
gDocCount++; |
goHome:; |
} |
void InitVars() |
/* |
* Called once at startup: yes, it |
* inits the vars. |
*/ |
{ |
TDoc *dp; |
short i; |
for(i = 0; i<kDocMax; i++) |
{ |
dp = &gDoc[i]; |
dp->used = false; |
} |
gDocCount = 0; |
gMenuNeedsCmdKey = false; |
} |
void Bootstrap() |
{ |
/*** File Menu ***/ |
InstallMenu("\pFile",nil,0); |
InstallMenuItem("\pNew/N",(void *)NewDoc,mNew); |
InstallMenuItem("\pClose/W",(void *)GoAwayDoc,-mClose); |
InstallMenuItem("\p(-",nil,0); |
InstallMenuItem("\pQuit/Q",(void *)LetsQuit,0); |
/*** Edit Menu ***/ |
InstallEditMenu(nil,nil,nil,nil,nil); |
/*** Special Menu ***/ |
InstallMenu("\pSpecial",(void *)nil,0); |
InstallMenuItem("\pSo special",nil,0); |
InitVars(); |
} |
void Hatstrap() |
/* |
* clean up |
*/ |
{ |
// SaveWindowPosition(-1); |
} |
Copyright © 2003 Apple Computer, Inc. All Rights Reserved. Terms of Use | Privacy Policy | Updated: 2003-03-19