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 / APISampleMPW / Source / UApp.h < prev    next >
Encoding:
Text File  |  1994-07-25  |  5.7 KB  |  227 lines  |  [TEXT/MPS ]

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