home *** CD-ROM | disk | FTP | other *** search
/ ftp.mactech.com 2010 / ftp.mactech.com.tar / ftp.mactech.com / machack / Hacks96 / troz.cgi.sit / troz.cgi / MyHandlers.c < prev    next >
Text File  |  1996-06-22  |  5KB  |  257 lines

  1. /*****
  2.  *
  3.  *    MyHandlers.c
  4.  *
  5.  *    Optional custom functions to handle special events. Includes:
  6.  *        document opening, startup and quitting
  7.  *
  8.  *    Modify these functions if you need to add to the standard support
  9.  *    built into the framework.
  10.  *
  11.  *    The function prototypes are contained in the relevent headers.
  12.  *    For example, AEHandlers.h contains the prototype for CustomOpenDocument
  13.  *
  14.  *    This is a support file for "Grant's CGI Framework".
  15.  *    Please see the license agreement that accompanies the distribution package
  16.  *    for licensing details.
  17.  *
  18.  *    Copyright ©1995,1996 by Grant Neufeld
  19.  *    grant@acm.com
  20.  *    http://arpp.carleton.ca/grant/
  21.  *
  22.  *****/
  23.  
  24. #include "MyConfiguration.h"
  25.  
  26. #if kCompileWithDragNDrop
  27. #include <Drag.h>
  28. #endif
  29.  
  30. #include "AEHandlers.h"
  31. #include "CGI.h"
  32. #include "CustomHandlers.h"
  33. #include "DebugUtil.h"
  34. #include "EventUtil.h"
  35. #include "ListSTAR.h"
  36. #include "ProcessUtil.h"
  37. #include "Quit.h"
  38. #include "Startup.h"
  39. #include "WindowInt.h"
  40.  
  41.  
  42. /***  FUNCTIONS  ***/
  43.  
  44. #pragma segment AppleEvents
  45. /* The application is expected to open the given document, if possible */
  46. OSErr
  47. CustomOpenDocument ( FSSpec *theFile )
  48. {
  49.     OSErr    theErr;
  50.     
  51.     my_assert ( theFile != NULL, "\pCustomOpenDocument: theFile ptr is NULL" );
  52.     
  53.     theErr = noErr;
  54.     
  55.     return theErr;
  56. } /* CustomOpenDocument */
  57.  
  58.  
  59. #pragma segment Utilities
  60. /* Close any custom application windows */
  61. #if kCompileWithApplicationWindows
  62. OSErr
  63. CustomCloseWindow ( WindowPtr theWindow )
  64. {
  65.     OSErr    theErr;
  66.     
  67.     theErr = noErr;
  68.     
  69.     return theErr;
  70. } /* CustomCloseWindow */
  71. #endif
  72.  
  73.  
  74. /* If activate is true, restore theWindow's selections.
  75.     If activate is false, hide, or reduce to outline, theWindow's selections.
  76.     If theWindow has a grow box in the bottom right corner,
  77.     you should invalidate the growrect */
  78. #if kCompileWithApplicationWindows
  79. void
  80. CustomActivateWindow ( WindowPtr theWindow, Boolean activate )
  81. {
  82.     
  83. } /* CustomActivateWindow */
  84. #endif
  85.  
  86.  
  87. /* Draw contents of window on an update event */
  88. #if kCompileWithApplicationWindows
  89. void
  90. CustomUpdateWindow ( WindowPtr theWindow )
  91. {
  92.     
  93. } /* CustomUpdateWindow */
  94. #endif
  95.  
  96.  
  97. /* Support a click in a window.
  98.     If the click is on a dragable item, set onDragItem to true. */
  99. #if kCompileWithApplicationWindows
  100. void
  101. CustomClickInWindow ( WindowPtr theWindow, Point thePoint, Boolean *onDragItem )
  102. {
  103.     
  104. } /* CustomClickInWindow */
  105. #endif
  106.  
  107.  
  108. /* Grow the window */
  109. #if kCompileWithApplicationWindows
  110. void
  111. CustomGrowWindow ( WindowPtr theWindow, Point thePoint )
  112. {
  113.     /* this call is in here by default. You can replace it with your own custom
  114.         handler if you want */
  115.     WindowGrowHandler ( theWindow, thePoint );
  116. } /* CustomGrowWindow */
  117. #endif
  118.  
  119.  
  120. /* Handle Idle time tasks for a window. */
  121. #if kCompileWithApplicationWindows
  122. void
  123. CustomWindowIdle ( WindowPtr theWindow )
  124. {
  125.     
  126. } /* CustomWindowIdle */
  127. #endif
  128.  
  129.  
  130. /* If you add windows that allow for text entry or you accept non-command-key
  131.     keyboard input, you need to support this function. */
  132. #if kCompileWithKeyboardEvents
  133. void
  134. CustomKeyPress ( EventRecord *theEvent )
  135. {
  136.     
  137. } /* CustomKeyPress */
  138. #endif
  139.  
  140.  
  141. /*  */
  142. #if kCompileWithDragNDrop
  143. OSErr
  144. CustomDoStartDrag ( EventRecord *theEvent, WindowPtr theWindow )
  145. {
  146.     OSErr            theErr;
  147.     GrafPtr            savePort;
  148.     DragReference    theDrag;
  149.     RgnHandle        dragRegion;
  150.     
  151.     GetPort ( &savePort );
  152.     SetPort ( (GrafPtr)theWindow );
  153.     
  154.     theErr = NewDrag ( &theDrag );
  155.     
  156.     if ( theErr == noErr )
  157.     {
  158.         dragRegion = NewRgn ();
  159.         
  160.         /* ••• You need to call a function that sets up the drag values such as:
  161.             theErr = customSetupDrag ( theWindow, theDrag, dragRegion, theEvent->where ); */
  162.     }
  163.     else
  164.     {
  165.         theDrag = nil;
  166.     }
  167.     
  168.     SetPort ( savePort );
  169.     
  170.     theErr = TrackDrag ( theDrag, theEvent, dragRegion );
  171.     
  172.     if ( dragRegion != CustomOpenDocument )
  173.     {
  174.         DisposeRgn ( dragRegion );
  175.     }
  176.     
  177.     if ( theDrag != nil )
  178.     {
  179.         DisposeDrag ( theDrag );
  180.     }
  181.         
  182.     return theErr;
  183. } /* CustomDoStartDrag */
  184. #endif
  185.  
  186. /**  OTHER TASKS  **/
  187. #pragma mark -
  188.  
  189. /* The prototype for this function is in "ProcessUtil.h" */
  190. #if kCompileWithPeriodicTask
  191. void
  192. CustomPeriodicTask ( void )
  193. {
  194.     //•••WARNING: THIS DOESN'T EXECUTE EXCEPT WHEN COMPILING AS WEBSTAR PLUG-IN.
  195.     //    THIS WILL BE FIXED IN A FUTURE VERSION
  196.     
  197. } /* CustomPeriodicTask */
  198. #endif
  199.  
  200.  
  201.  
  202. /* The prototype for this function is in "ProcessUtil.h" */
  203. #if kCompileWithDeferredTask
  204. void
  205. CustomDeferredTask ( void )
  206. {
  207.     //•••WARNING: THIS DOESN'T EXECUTE IF COMPILING AS WEBSTAR PLUG-IN.
  208.     //    THIS WILL BE FIXED IN A FUTURE VERSION
  209.     
  210. } /* CustomDeferredTask */
  211. #endif
  212.  
  213.  
  214. /**  **/
  215. #pragma mark -
  216.  
  217. #pragma segment Startup
  218. /* add things like installing additional AppleEvent handlers in this function */
  219. OSErr
  220. CustomStartup ( void )
  221. {
  222.     OSErr    theErr;
  223.     Boolean    success;
  224.     
  225.     CustomCGIStartup (); /* CGI Specific */
  226.     success = CustomListSTARStartup ();    /* ListSTAR Specific */
  227.     
  228.     theErr = noErr;
  229.     
  230.     return theErr;
  231. } /* CustomStartup */
  232.  
  233.  
  234. #pragma segment Main
  235. /* Unless allowUserInteract is true, don't make any calls that might require
  236.     user interaction.
  237.     Return true if your clean up was successful and quitting should proceed. */
  238. Boolean
  239. CustomQuit ( Boolean allowUserInteract )
  240. {
  241.     return CustomCGIQuit ( allowUserInteract );
  242. } /* CustomQuit */
  243.  
  244.  
  245. #pragma segment Main
  246. /* this function is called if some sort of emergency has arisen.
  247.     What you're basically being asked to do is release any memory,
  248.     resources, files, etc. that you can. */
  249. void
  250. CustomEmergencyHandler ( void )
  251. {
  252.     
  253. } /* CustomEmergencyHandler */
  254.  
  255.  
  256. /*****  EOF  *****/
  257.