home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Source Code / Think Class Libraries / WASTE TCL 2.0b2 / WASTE VA / Source / CApp.cp < prev    next >
Encoding:
Text File  |  1996-01-06  |  6.8 KB  |  254 lines  |  [TEXT/KAHL]

  1. /******************************************************************************
  2.  CApp.cp
  3.  
  4.                 My Application Class
  5.     
  6.     Copyright Â© 1995 Dan Crevier. All rights reserved.
  7.  
  8.     Generated by Visual Architectâ„¢ 9:19 AM Mon, Nov 6, 1995
  9.  
  10.     This file is only generated once. You can modify it by filling
  11.     in the placeholder methods and adding any new methods you wish.
  12.  
  13.     If you change the name of the application, a fresh version of this
  14.     file will be generated. If you have made any changes to the file
  15.     with the old name, you will have to copy those changes to the new
  16.     file by hand.
  17.  
  18.  ******************************************************************************/
  19.  
  20. #include "CApp.h"
  21.  
  22. #include <CDialog.h>
  23. #include <TCLForceReferences.h>
  24. #include <CBartender.h>
  25.  
  26. //#include "AppCommands.h"            // Remove comments if DoCommand overridden
  27.  
  28. #include "CWASTEText.h"
  29. #include "CWASTEDlgText.h"
  30.  
  31. #ifndef __SCRIPT__
  32. #include <Script.h>
  33. #endif
  34.  
  35. #include "CTSMSwitchboard.h"
  36. #include "CTSMDesktop.h"
  37.  
  38. #include <Drag.h>
  39.  
  40. static Boolean    DragAndDropAvailable(void);
  41. Boolean gHasDragAndDrop = false;
  42.  
  43. static Boolean    TSMAvailable(void);
  44.  
  45. extern CDesktop *gDesktop;
  46. extern CBartender *gBartender;
  47.  
  48. short gUsingTSM = false;
  49.  
  50. TCL_DEFINE_CLASS_M1(CApp, x_CApp);
  51.  
  52. /**** C O N S T R U C T I O N / D E S T R U C T I O N   M E T H O D S ****/
  53.  
  54. /******************************************************************************
  55.  CApp
  56.  
  57.         Constructor added by Dan Crevier
  58.  
  59.  ******************************************************************************/
  60.  
  61. CApp::CApp(void)
  62. {
  63.     gUsingTSM = TSMAvailable() && (InitTSMAwareApplication()==noErr);
  64.  
  65.     gHasDragAndDrop = DragAndDropAvailable();
  66. }
  67.  
  68. /******************************************************************************
  69.  ICApp
  70.  
  71.         Initialize an Application.
  72.  
  73.  ******************************************************************************/
  74.  
  75. void    CApp::ICApp()
  76.  
  77. {
  78.         // The values below are:
  79.         //
  80.         //     extraMasters        - The number of additional master pointer blocks
  81.         //                          to be allocated.
  82.         //     aRainyDayFund        - The total amount of reserved memory. When
  83.         //                          allocation digs into the rainy day fund, the
  84.         //                          user is notified that memory is low. Set this
  85.         //                          value to the sum of aCriticalBalance plus
  86.         //                          aToolboxBalance plus a fudge for user warning.
  87.         //     aCriticalBalance    - The part of the rainy day fund reserved for
  88.         //                          critical operations, like Save or Quit. Set
  89.         //                          this value to the memory needed for the largest
  90.         //                          possible Save plus aToolboxBalance. This
  91.         //                          memory will only be used if SetCriticalOperation()
  92.         //                          is set TRUE or if RequestMemory()/SetAllocation()
  93.         //                          is set FALSE (kAllocCantFail).
  94.         //     aToolboxBalance    - The part of the rainy day fund reserved for
  95.         //                          ToolBox bozos that bomb if a memory request fails.
  96.         //                          This memory is used unless RequestMemory()/
  97.         //                          SetAllocation() is set TRUE (kAllocCanFail).
  98.         //                          Almost all TCL memory allocation is done with
  99.         //                          kAllocCanFail, and yours should be, too. The
  100.         //                          default 2K is probably enough.
  101.  
  102.     Ix_CApp(4, 24000L, 20480L, 2048L);
  103.     
  104.         // Initialize your own application data here.
  105.  
  106. }
  107.  
  108.  
  109. /******************************************************************************
  110.  ~CApp
  111.  
  112.         Destruct an Application.
  113.  
  114.  ******************************************************************************/
  115.  
  116. CApp::~CApp()
  117. {
  118.     if (gUsingTSM) CloseTSMAwareApplication();
  119. }
  120.  
  121. /******************************************************************************
  122.  ForceClassReferences    {OVERRIDE}
  123.  
  124.     Reference classes that do object I/O or are created only
  125.     by new_by_name.
  126.  ******************************************************************************/
  127.  
  128. void CApp::ForceClassReferences(void)
  129.  
  130. {
  131.     x_CApp::ForceClassReferences();
  132.     
  133.         // Insert your own class references here
  134.         // by calling TCL_FORCE_REFERENCE for each class
  135.         // See x_CApp.cp
  136.     
  137.     TCL_FORCE_REFERENCE(CWASTEText);
  138.     TCL_FORCE_REFERENCE(CWASTEDlgText);
  139.     
  140. }
  141.  
  142.  
  143. /**** C O M M A N D   M E T H O D S ****/
  144.  
  145.  
  146. /******************************************************************************
  147.  DoCommand    {OVERRIDE}
  148.  
  149.     Handle application commands
  150.  ******************************************************************************/
  151.  
  152. void CApp::DoCommand(long theCommand)
  153.  
  154. {
  155.     switch (theCommand)
  156.     {
  157.  
  158.             // Insert your command cases here
  159.  
  160.         default:
  161.             x_CApp::DoCommand(theCommand);
  162.             break;
  163.     }
  164. }
  165.  
  166.  
  167. /******************************************************************************
  168.  GetDocTypeFromDialog
  169.  
  170.     Get the document type from the dialog. If you have multiple
  171.     document types, you must override this function to extract
  172.     the type from the dialog state. (The dialog has been executed
  173.     and OK'd by the user.) If you do not have multiple document
  174.     types, you can remove this function.
  175.  ******************************************************************************/
  176.  
  177. OSType CApp::GetDocTypeFromDialog(CDialogDirector *dialog)
  178.  
  179. {
  180.     return 0;
  181. }
  182.  
  183. /*****************************************************************************\
  184.  SetUpMenus
  185. \*****************************************************************************/
  186.  
  187. void CApp::SetUpMenus(void)
  188. {
  189.     CApplication::SetUpMenus();
  190.     
  191.     // add the system fonts the standard way
  192.     AddResMenu(GetMHandle(MENUfont), 'FONT');
  193.     
  194.     MenuHandle sizeMenuH = GetMHandle(MENUsize);
  195.     
  196.     // add some sizes
  197.     short numItems = CountMItems(sizeMenuH);
  198.     
  199.     InsMenuItem(sizeMenuH, "\p9", numItems + 1);
  200.     InsMenuItem(sizeMenuH, "\p10", numItems + 2);
  201.     InsMenuItem(sizeMenuH, "\p12", numItems + 3);
  202.     InsMenuItem(sizeMenuH, "\p14", numItems + 4);
  203.     InsMenuItem(sizeMenuH, "\p18", numItems + 5);
  204.     InsMenuItem(sizeMenuH, "\p24", numItems + 6);
  205.  
  206.     // set font, style, and size menus to always be not dimmed
  207.     gBartender->SetDimOption(MENUfont, dimNONE);
  208.     gBartender->SetUnchecking(MENUfont, true);
  209.  
  210.     gBartender->SetDimOption(MENUsize, dimNONE);
  211.     gBartender->SetUnchecking(MENUsize, true);
  212.  
  213.     gBartender->SetDimOption(MENUstyle, dimNONE);
  214.     gBartender->SetUnchecking(MENUstyle, true);
  215. }
  216.  
  217. // make TSMSwitchboard
  218. void CApp::MakeSwitchboard( void)
  219. {
  220.     if (gSystem.hasAppleEvents && gUsingTSM)
  221.     {
  222.         FailOSErr(WEInstallTSMHandlers());
  223.     }
  224.     itsSwitchboard = (CSwitchboard *)new CTSMSwitchboard();
  225.     itsSwitchboard->InitAppleEvents();
  226. }
  227.  
  228. // make TSMDesktop
  229. void CApp::MakeDesktop(void)
  230. {
  231.     gDesktop = (CDesktop *)new CTSMDesktop();
  232. }
  233.  
  234. static Boolean TSMAvailable(void)
  235. {
  236.     long    response;
  237.     
  238.     return (Gestalt(gestaltTSMgrVersion, &response)==noErr);
  239. }
  240.  
  241. /******************************************************************************
  242.  DragAndDropAvailable - returns true if drag and drop is available
  243.  ******************************************************************************/
  244.  
  245. static Boolean DragAndDropAvailable(void)
  246. {
  247.     long response;
  248.  
  249.     if (Gestalt(gestaltDragMgrAttr, &response) != noErr) return false;
  250.     if ((response & (1 << gestaltDragMgrPresent)) == 0) return false;
  251.     if ((Ptr)InstallTrackingHandler == 0) return false;
  252.     return true;
  253. }
  254.