home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 2000 April: Mac OS SDK / Dev.CD Apr 00 SDK1.toast / Development Kits / Mac OS / Apple Guide / Engineering / APISample / APISampleCW / Source / UApp.h < prev    next >
Encoding:
Text File  |  1994-08-23  |  5.9 KB  |  237 lines  |  [TEXT/MPS ]

  1. // Copyright ©1994 Apple Computer, Inc.
  2. // Author: John Powers
  3. // Date:   27-Aug-94
  4.  
  5. // UApp.h
  6. // Header for our main program.
  7. // Contains all our derived classes and our new classes.
  8. // The TApplication and TDocument folders
  9. // have been left unchanged  from the developer CD.
  10. // Our use of the application is tailored in the classes below.
  11.  
  12.                     // Define __UMAIN__ for the TApplication folder
  13. #define __UMAIN__
  14.  
  15. #ifndef __UAPP__
  16. #define __UAPP__                // #endif __UAPP__ is at end of this file
  17.  
  18. #include <AppleEvents.h>
  19. #include <Dialogs.h>
  20. #include <Fonts.h>                // monaco
  21. #include <LowMem.h>                // Low memory accessors
  22. #include <Menus.h>
  23. #include <Packages.h>            // NumToString
  24. #include <Processes.h>            // GetCurrentProcess
  25. #include <PLStringFuncs.h>        // PLstrcpy
  26. #include <Resources.h>
  27. #include <Scrap.h>                // PutScrap, GetScrap
  28. #include <StandardFile.h>        // StandardFileReply
  29. #include <String.h>                // strcpy
  30. #include <Strings.h>            // p2cstr
  31. //#include <SysEqu.h>
  32. #include <ToolUtils.h>            // EqualString
  33.  
  34. #ifndef __APPLEGUIDE__
  35.     #include "AppleGuide.h"
  36. #endif
  37.  
  38. #ifndef __AGFILE__
  39.     #include "AGFile.h"
  40. #endif
  41.  
  42. #ifndef TAPPLICATION_H
  43.     #include "TApplication.h"
  44. #endif
  45.  
  46. #ifndef __UDOC__
  47.     #include "UDoc.h"
  48. #endif
  49.  
  50. #ifndef __UAPPSHARED__
  51.     #include "UAppShared.h"
  52. #endif
  53.  
  54.         // Constants (also see UAppShared.h).
  55.  
  56. #define    override virtual
  57.  
  58. enum
  59. {
  60.     kNoFilterProc = nil,
  61.     kInFrontOfAll =        -1,
  62.     kDefaultStorage =     nil,
  63.     kIsNotSysHandler = false,
  64.     kIsSysHandler = true,
  65.     kHandlerNotRequired = nil
  66. };
  67.                                 // Custom event class and id's
  68.                                 // General events are in TAppMo.
  69.                                 // Context events are in TContext.
  70. enum {    
  71.     kAEClassCustom =        'MoHC'
  72. };
  73.  
  74.                                 // DBInfo Dialog
  75. enum {
  76.     kDBInfoDialogID = 132,
  77.     kDBInfoOK = 1,
  78.     kDBInfoDatabase,
  79.     kDBInfoTypeLabel,
  80.     kDBInfoType,
  81.     kDBInfoMenuLabel,
  82.     kDBInfoMenu,
  83.     kDBInfoSelectorCntLabel,
  84.     kDBInfoSelectorCnt,
  85.     kDBInfoSelector1Label,
  86.     kDBInfoSelector1,
  87.     kDBInfoSelector1Value,
  88.     kDBInfoSelector2Label,
  89.     kDBInfoSelector2,
  90.     kDBInfoSelector2Value,
  91.     kDBInfoSelector3Label,
  92.     kDBInfoSelector3,
  93.     kDBInfoSelector3Value,
  94.     kDBInfoMixinLabel,
  95.     kDBInfoMixin,
  96.     kDBInfoVersionLabel,
  97.     kDBInfoVersion,
  98.     kDBInfoScriptLabel,
  99.     kDBInfoScript,
  100.     kDBInfoRegionLabel,
  101.     kDBInfoRegion
  102. };
  103.                                 // AlertIfError Dialog
  104. enum {
  105.     kAlertIfErrorDialogID = 133,
  106.     kAlertIfErrorOK = 1,
  107.     kAlertIfErrorMsg,
  108.     kAlertIfErrorErrNum
  109. };
  110.  
  111.                                 // Auto-Start alerts
  112. enum {
  113.     rAutoStartNeedAlrt =    134,
  114.     rAutoStartUnknownAlrt =    135
  115. };
  116.  
  117.         // typedef's
  118.  
  119.         // StartSpecType is a resource.
  120.         // See UApp.r for the description of this structure.
  121. typedef struct StartSpecType {
  122.     short    autoStartFlag;
  123.     short    quitAfterGuide;
  124.     short    type;
  125.     short    sequenceID;
  126.     Str63    fileName;
  127. } StartSpecType, *StartSpecPtr, **StartSpecHan;
  128.  
  129.         // Globals
  130.  
  131. #if __powerc && !__MWERKS__
  132.     QDGlobals qd;
  133. #endif
  134.  
  135. OSErr AlertIfError(OSErr err);
  136. void CenterWindow(WindowPtr pWin);
  137. void GetWindowBounds(WindowPtr pWin, Rect* pBoundsRect);
  138.  
  139.         // Forward references
  140.  
  141. class TDoc;
  142. class TDocClip;
  143.  
  144. // ------------------------------------------------------------------------
  145. // TScrap
  146. // Handles the scrap/clipboard.
  147.  
  148. class TScrap
  149. {
  150.     private:
  151.         short        fLastScrapCount;    // Last scrapCount from InfoScrap.
  152.         TDocClip*    fDocClip;            // Collaborator document.
  153.     protected:
  154.     public:
  155.         TScrap();
  156.         virtual void DoIdle();
  157.         virtual void Draw(WindowPtr pWin);
  158.         virtual void Put(Handle hToScrap);
  159.         virtual void SetDoc(TDocClip* doc) {this->fDocClip=doc;}
  160.         virtual Boolean Update();
  161. };
  162.  
  163. // ------------------------------------------------------------------------
  164. // TAStart
  165. // Handles automatic startup and termination.
  166.  
  167. class TAStart
  168. {
  169.     private:
  170.         short        fGuideHasRun;        // true if guide was provided.
  171.         short        fQuitAfterGuide;    // true if app quits after guide done.
  172.         AGRefNum    fGuideRefNum;        // Ref num for open database.
  173.         FSSpec        fPresetGuideFile;    // Guide database from autostart resource
  174.     protected:
  175.     public:
  176.         TAStart();
  177.         virtual AGErr AttemptAutoStart();
  178.         virtual void GetFile(FSSpec& guideFile) {guideFile=this->fPresetGuideFile;}
  179.         virtual void GetRefNum(AGRefNum& refNum) {refNum = this->fGuideRefNum;}
  180.         virtual OSErr Init();
  181.         virtual Boolean ShouldWeQuit();
  182. };
  183.  
  184. // ------------------------------------------------------------------------
  185. // Derive our application class from the application base class.
  186. // Add the About dialog, initialization, and a menu.
  187.  
  188. class TApp : public TApplication
  189. {
  190.     enum
  191.     {
  192.         kSleepValue = 10
  193.     };
  194.     private:
  195.         TDocClip*    fDocClip;        // Clipboard document window
  196.         TScrap*        fScrap;            // Scrap object.
  197.             // New functions.
  198.         virtual void DoDBInfoDialog(FSSpec& guideFileSpec);
  199.     protected:
  200.         short        fMenuBarID;            // Set in the Init function.
  201.         AGRefNum    fGuideRefNum;        // The Apple Guide refnum.
  202.         FSSpec        fPresetGuideFile;    // Preset guide database
  203.         TAStart*    fAutoStart;            // AutoStart object.
  204.             // New functions.
  205.         virtual void CloseDoc(TDoc* docToClose);
  206.         virtual void CopyToClipboard();
  207.         virtual void DoAbout();
  208.         virtual void DoHighLevelEvent();
  209.         virtual void GetVersion(Str255 versStr);
  210.         virtual OSErr OpenGuideDatabase(FSSpec *pFileSpec);
  211.         virtual OSErr SelectFile(FSSpec& selectedFile);
  212.         virtual void SetDoc();
  213.         virtual void ShowClipboard();
  214.         virtual OSErr Start();
  215.             // Overrides.
  216.         override void AdjustCursor() {SetCursor( &qd.arrow );}
  217.         override void AdjustMenus();
  218.         override void DoGoAway();
  219.         override void DoIdle();
  220.         override void DoMenuCommand(short menuID, short menuItem);
  221.         override unsigned long SleepVal() { return kSleepValue; } // Sleep duration in WNE
  222.     public:
  223.             // New functions.
  224.         virtual void GetRefNum(AGRefNum& refNum) { refNum = this->fGuideRefNum; }
  225.         virtual void GetFile(FSSpec& fileSpec) { fileSpec = this->fPresetGuideFile; }
  226.         static pascal OSErr HandleAECore(AppleEvent& theAppleEvent,
  227.                                             AppleEvent& theReply,
  228.                                             long refCon);
  229.         virtual OSErr Init();
  230.         virtual void Quit();
  231.         virtual OSErr SendEventToSelf(AEEventID theEvent);
  232.         virtual void SetRefNum(AGRefNum refNum) { this->fGuideRefNum = refNum; }
  233.             // Overrides
  234.         override void EventLoop();
  235. };
  236.  
  237. #endif __UAPP__