BigEasy/BigEasy2.h

/*
    File:       BigEasy2.h
 
    Contains:   xxx put contents here xxx
 
    Written by: xxx put writers here xxx
 
    Copyright:  © 1990-1992, 1994 by Apple Computer, Inc., all rights reserved.
 
    This file is used in these builds: Warhol
 
    Change History (most recent first):
 
        <24>     17-8-94    dvb     GX Printing
        <23>      9-8-94    dvb     
        <22>     27-7-94    dvb     InstallQuitItem
        <21>     5/27/94    dvb     .
        <18>      1/7/93    dvb     Built in window-copy command.
        <17>     4/13/92    dvb     Pass activate/deactivates to back windows.
        <16>     3/22/92    dvb     QuitApp message.
        <15>     1/20/92    dvb     Cool new features. Easier AppleEvents.
        <14>    12/19/91    JB      removing think 4.0 code
        <13>     8/25/91    JB      Changed #def Ticks to #def GetTicks
        <12>      6/3/91    dvb     Just hackin.
        <11>     5/28/91    JB      Added prototypes for BigEasy Proc Ptrs
        <10>     5/25/91    JB      OLD_THINK_C && TOOLBOX_LINKED
         <9>     5/23/91    PH      functions..
         <8>      5/5/91    dvb     App Open Events
         <7>     4/25/91    JB      Changing to new THINK C interface files
         <6>     4/19/91    dvb     Add WindowEventProc
         <5>     2/24/91    dvb     Various cool new calls
         <4>     2/18/91    dvb     Miscellaneous Updates
         <3>      2/6/91    JB      Made nil #define conditional
         <2>    11/17/90    dvb     Remove subport machinery
         <4>     9/19/90    dvb     Fix graphics math collision
         <3>     9/10/90    dvb     Take Zoomproc out of InstallWindow call.
         <2>     7/31/90    dvb     Modify inclusion hierarchy
 
    To Do:
*/
 
/* file: BigEasy2.h
 *
 * Started 4 July 1989, more or less.
 *
 * A set of routines to allow the quick development
 * of simple Macintosh applications.
 *
 */
 
#ifndef BigEasyIncludes
#define BigEasyIncludes
 
#include <Types.h>
#include <Menus.h>
#include <Events.h>
#include <Files.h>
 
/************************************
* Simple things
************************************/
 
#ifdef __cplusplus
extern "C" {
#endif
 
typedef void (*beUpdateProcPtr)(short windowNum);       
typedef void (*beClickProcPtr)(short windowNum, Point p, short modifiers);      
typedef void (*beKeyProcPtr)(short windowNum, short key, short keycode, short modifiers);       
typedef void (*beGoAwayProcPtr)(short windowNum);       
typedef void (*beActivateProcPtr)(short windowNum);     
typedef void (*beDeactivateProcPtr)(short windowNum);       
typedef void (*beIdleProcPtr)(short windowNum, Boolean upfront);        
typedef void (*beResizeProcPtr)(short windowNum, Point *oldSize, Point *newSize, short modifiers);      
typedef void (*beGrowWindowProcPtr)(long *newSize, short windowNum,
                        WindowPtr w, Point where, Rect *resizeLim);     
typedef void (*beEventProcPtr)(short windowNum, EventRecord *event, Boolean *tookEvent);    
typedef void (*beMoveWindowProcPtr)(short windowNum);   
typedef void (*beMenuProcPtr)(short windowNum, short menuItem, short menuRef);
 
typedef void (*beAboutProcPtr)(void);       
typedef void (*beWNumCallProcPtr)(short windowNum);
 
typedef void (*beOpenAppProcPtr)(void);
typedef void (*beOpenDocProcPtr)(FSSpec *file);
typedef void (*beQuitAppProcPtr)(void);
 
#ifdef __cplusplus
}
#endif
 
 
#ifndef nil
    #define nil (0L)
#endif
 
#define SwapShort(a,b) {short temp; temp = a; a = b; b = temp;}
 
 
/************************************
* Types
************************************/
 
/*
  * Window Flags (as passed to InstallWindow)
  */
typedef enum
    {
    wGrowable = 1,
    wZoomable = 2,
    wCoolDrag = 4,              /* Set to do the really cool live-dragwindow trick */
    wCopyDraw = 8,              /* Enables Copy edit item, and uses DrawDoc to do it. */
    wPrintDraw = 16             /* Enables Print & Page Setup via GX */
    };
 
/*
 * Built in menu ref-numbers
 */
typedef enum
    {
    mUndo = 30000,
    mCut,
    mCopy,
    mPaste,
    mClear,
    mPageSetup,
    mPrint
    };
 
/************************************
* BigEasy2 Public Global Variables
************************************/
#ifdef BigEasy2
    #define VAR
#else
    #define VAR extern
#endif
 
VAR Boolean gQuitApp;
VAR Boolean gMenuNeedsCmdKey;
VAR Boolean gStaggerWindows;
VAR Boolean gWindowsInView;
VAR short gLastModifiers;
VAR long gLastEventTime;
 
VAR long gSystemVersion;        /* for app to read */
VAR Boolean gHasAppleEvents;    /* for app interest */
VAR Boolean gHasColor;          /* for app interest */
VAR Boolean gHasGX;             /* for everyone */
 
VAR Rect gBigRect;
 
VAR short gStagStepX;
VAR short gStagStepY;
 
#ifndef __QUICKDRAW__
    #include <QuickDraw.h>
#endif
 
#ifndef __WINDOWS__
    #include <Windows.h>
#endif
 
#undef VAR
 
 
/************************************
* Major BigEasy2 Routines
************************************/
 
#ifdef __cplusplus
extern "C" {
#endif
 
 
WindowPtr InstallWindow(short iNum,StringPtr iTitle,Rect *iRect,short iType,short newFlags,
        beUpdateProcPtr iUpdate,beClickProcPtr iClick,beKeyProcPtr iKey,beGoAwayProcPtr iGoAway,
        beActivateProcPtr iActivate,beDeactivateProcPtr iDeactivate,beIdleProcPtr iIdle);
 
void UninstallWindow(short iNum);
 
Boolean HandleUpdateEvent(EventRecord *er);
Boolean HandleActivateEvent(EventRecord *er);
 
 
void Show(short inum);
void Hide(short iNum);
 
MenuHandle InstallMenu(StringPtr s,beMenuProcPtr action,short ref);
void InstallMenuItem(StringPtr s,beMenuProcPtr action,short ref);
void InstallQuitItem(beMenuProcPtr action,short ref);
 
void InstallPrintItems(beMenuProcPtr pageSetup,beMenuProcPtr print);
 
void RemoveMenuItem(short ref);
void SetMenuItem(short ref,char enable,char isMarked,char mark,StringPtr s);
void EnDisEdits(short Eundo,short Ecut,short Ecopy,short Epaste,short Eclear);
void InstallEditMenu(beWNumCallProcPtr,beWNumCallProcPtr,beWNumCallProcPtr,beWNumCallProcPtr,beWNumCallProcPtr);
MenuHandle SetCurrentMenu(short ref);
long DisableAllMenus(void);
void EnableAllMenus(long saveMenus);
 
void SetMasterIdle(beAboutProcPtr);
void IdleWindow(short n);
 
void SetMasterOpenAppProc(beOpenAppProcPtr);
void SetMasterOpenDocProc(beOpenDocProcPtr);
void SetMasterQuitAppProc(beQuitAppProcPtr);
 
void SetWindowResizeProc(short n,beResizeProcPtr resizeProc);
void SetWindowGrowWindowProc(short n,beGrowWindowProcPtr growWindowProc);
void SetWindowZoomProc(short n,beWNumCallProcPtr iZoom);
void SetWindowMoveProc(short n,beMoveWindowProcPtr moveWindowProc);
void SetWindowEventProc(short n, beEventProcPtr iEvent);
long GetWindowFlags(short n);
void SetWindowFlags(short n,long flags);
 
void GetWindowRect(short n,Rect *r);
WindowPtr GetWindowPtr(short n);
Boolean GetWindowVisible(short n);
void Replace1Resource(Handle,long type,short id);
void SaveWindowPosition(short n);
void ForgetWindowPosition(short n);
 
void SetAbout(StringPtr progName,StringPtr s0,beAboutProcPtr aboutProc);
 
void GoWatch(void);
void GoArrow(void);
void GoCursor(short c);
 
void FailNil(long);
void FailOSErr(long);
 
/************************************
* Client Provided BigEasy2 Routines
************************************/
 
void Bootstrap(void);
void Hatstrap(void);
 
#ifdef __cplusplus
}
#endif
 
 
/************************************
* Minor BigEasy2 Hacks
************************************/
#ifndef BigEasy2
    #define FailNil(x)  FailNil((long)(x))                  /* Simulate a typeless call         */
    #define FailOSErr(x)    FailOSErr((long)(x))            /* Simulate a typeless call         */
#endif
 
#define GetTicks() (*(long *)Ticks)
 
#endif