home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 4 / Apprentice-Release4.iso / Source Code / Libraries / WASTE 1.2a4 / WASTE Demo / WEDemoInit.c < prev    next >
Encoding:
C/C++ Source or Header  |  1995-12-16  |  4.3 KB  |  192 lines  |  [TEXT/CWIE]

  1. /*
  2.     WASTE Demo Project:
  3.     Initialization and Finalization Routines
  4.         
  5.     Copyright © 1993-1995 Marco Piovanelli
  6.     All Rights Reserved
  7.  
  8.     C port by John C. Daub
  9. */
  10.  
  11.  
  12. #ifndef __DIALOGS__
  13. #include <Dialogs.h>
  14. #endif
  15.  
  16. #ifndef __FONTS__
  17. #include <Fonts.h>
  18. #endif
  19.  
  20. #ifndef __GESTALT__
  21. #include <Gestalt.h>
  22. #endif
  23.  
  24. #ifndef __SCRAP__
  25. #include <Scrap.h>
  26. #endif
  27.  
  28. #ifndef __TEXTSERVICES__
  29. #include <TextServices.h>
  30. #endif
  31.  
  32. #ifndef __WEDEMOAPP__
  33. #include "WEDemoIntf.h"
  34. #endif
  35.  
  36. #include "WEObjectHandlers.h"
  37.  
  38.  
  39.  
  40. // static variables for the drag handlers
  41.  
  42. static DragTrackingHandlerUPP    sMyTrackingHandler;
  43. static DragReceiveHandlerUPP    sMyReceiveHandler;
  44.  
  45. OSErr    Initialize( void )
  46. {
  47.     long            response;
  48.     long            scrapResult;
  49.     short            i;
  50.     PScrapStuff        scrapReturn;
  51.     OSErr            err;
  52.     
  53.     // expand the zone to its maximum size
  54.     
  55.     MaxApplZone();
  56.     
  57.     // allocate some extra master pointer blocks
  58.     
  59.     for ( i = 0; i < 6; i++ )
  60.         MoreMasters();
  61.     
  62.     // initialize the Toolbox
  63.     
  64.     InitGraf(&qd.thePort);
  65.     InitFonts();
  66.     InitWindows();
  67.     InitMenus();
  68.     TEInit();    // tho we use WASTE for text stuff, dialogs, etc all use TextEdit so don't remove this!
  69.     InitDialogs(NULL);
  70.     InitCursor();
  71.     FlushEvents(everyEvent, 0);
  72.  
  73.     // if desk scrap is too large, unload it
  74.     
  75.     scrapReturn = InfoScrap();
  76.     if ( scrapReturn->scrapSize > kScrapThreshold )
  77.         scrapResult = UnloadScrap();
  78.     
  79.     // make sure system software versino is 7.0 or newer (classic 68K only)
  80.     
  81.     #if !GENERATINGCFM
  82.     if ( (Gestalt(gestaltSystemVersion, &response) != noErr ) || (response < kMinSystemVersion) )
  83.     {
  84.         SetCursor( &qd.arrow );
  85.         response = Alert( kAlertNeedSys7, NULL );
  86.         return -1;
  87.     }
  88.     #endif
  89.     
  90.     // determine whether color Quickdraw is available
  91.     
  92.     gHasColorQD = (Gestalt(gestaltQuickdrawVersion, &response) == noErr)
  93.                     && (response >= gestalt8BitQD);
  94.  
  95.     // determine whether the Drag Manager is available
  96.     
  97.     gHasDragAndDrop = (Gestalt( gestaltDragMgrAttr, &response ) == noErr )
  98.                     && BTST( response, gestaltDragMgrPresent );
  99.     
  100. #if GENERATINGCFM
  101.     // additional check needed if DragLib is weak-linked
  102.     gHasDragAndDrop = gHasDragAndDrop && (&NewDrag != NULL);
  103. #endif
  104.  
  105.     // determine whether the Text Services Manager is available
  106.     
  107.     gHasTextServices = (Gestalt(gestaltTSMgrVersion, &response) == noErr);
  108.  
  109.     // register this application with the TSM
  110.     
  111.     if ( gHasTextServices )
  112.     {
  113.         if ((err = InitTSMAwareApplication()) != noErr)
  114.             goto cleanup;
  115.     }
  116.     
  117.     // install default drag handlers
  118.     
  119.     if ( gHasDragAndDrop )
  120.     {
  121.         sMyTrackingHandler = NewDragTrackingHandlerProc( MyTrackingHandler );
  122.         sMyReceiveHandler = NewDragReceiveHandlerProc( MyReceiveHandler );
  123.  
  124.         if ((err = InstallTrackingHandler( sMyTrackingHandler, NULL, NULL )) != noErr)
  125.             goto cleanup;
  126.  
  127.         if ((err = InstallReceiveHandler( sMyReceiveHandler, NULL, NULL )) != noErr)
  128.             goto cleanup;
  129.     }
  130.  
  131.     // install the sample object handlers for pictures and sounds
  132.     
  133.     if ((err = WEInstallObjectHandler(kTypePicture, weNewHandler,
  134.                 (UniversalProcPtr) NewWENewObjectProc(HandleNewPicture), NULL)) != noErr)
  135.         goto cleanup;
  136.     
  137.     if ((err = WEInstallObjectHandler(kTypePicture, weDisposeHandler,
  138.                 (UniversalProcPtr) NewWEDisposeObjectProc(HandleDisposePicture), NULL)) != noErr)
  139.         goto cleanup;
  140.     
  141.     if ((err = WEInstallObjectHandler(kTypePicture, weDrawHandler,
  142.                 (UniversalProcPtr) NewWEDrawObjectProc(HandleDrawPicture), NULL)) != noErr)
  143.         goto cleanup;
  144.     
  145.     if ((err = WEInstallObjectHandler(kTypeSound, weNewHandler,
  146.                 (UniversalProcPtr) NewWENewObjectProc(HandleNewSound), NULL)) != noErr)
  147.         goto cleanup;
  148.     
  149.     if ((err = WEInstallObjectHandler(kTypeSound, weDrawHandler,
  150.                 (UniversalProcPtr) NewWEDrawObjectProc(HandleDrawSound), NULL)) != noErr)
  151.         goto cleanup;
  152.     
  153.     if ((err = WEInstallObjectHandler(kTypeSound, weClickHandler,
  154.                 (UniversalProcPtr) NewWEClickObjectProc(HandleClickSound), NULL)) != noErr)
  155.         goto cleanup;
  156.     
  157.     // perform other initialization chores
  158.     
  159.     if ((err = InitializeEvents()) != noErr)
  160.         goto cleanup;
  161.     
  162.     if ((err = InitializeMenus()) != noErr)
  163.         goto cleanup;
  164.  
  165.     // clear result code
  166.     err = noErr;
  167.  
  168. cleanup:
  169.     if ( err != noErr )
  170.         ErrorAlert( err );
  171.  
  172.     return err;
  173. }
  174.  
  175.  
  176. void    Finalize( void )
  177. {
  178.     // remove drag handlers
  179.  
  180.     if ( gHasDragAndDrop )
  181.     {
  182.         RemoveTrackingHandler( sMyTrackingHandler, NULL);
  183.         RemoveReceiveHandler( sMyReceiveHandler, NULL );
  184.     }
  185.     
  186.     // notify text services that we're closing down
  187.     
  188.     if ( gHasTextServices )
  189.     {
  190.         CloseTSMAwareApplication();
  191.     }
  192. }