home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 7 / Apprentice-Release7.iso / Source Code / Libraries / WASTE 1.3a5 / Demo / Source / WEDemoInit.c < prev    next >
Encoding:
C/C++ Source or Header  |  1997-05-11  |  4.3 KB  |  209 lines  |  [TEXT/CWIE]

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