/* EXAMPLE.C written 09/15/86 by Martin Murray */

/* *****************************************************************************
*       THIS CODE IS IN NO WAY COPYRIGHT 1986 BY INOVATRONICS, INC.  IN FACT,  *
*       YOU CAN DO ANYTHING WITH IT THAT YOU WANT TO DO.  JUST REMEMBER,       *
*       INOVATRONICS, INC. WILL BEAR ABSOLUTELY NO RESPONSIBILITY FOR THE USE, *
*       MISUSE, INABILITY TO USE OR INABLITY TO UNDERSTAND ANY OR ALL PARTS OF *
*       THIS CODE.  ENJOY IT IN GOOD HEALTH.                                   *
********************************************************************************
********************************************************************************
*       THE PURPOSE OF THE CODE IS TO LET YOU SEE WHAT YOUR PowerWindows       *
*       GENERATED SOURCE CODE WILL LOOK LIKE IN A PROGRAM.  IN MOST CASES, ALL *
*       YOU SHOULD HAVE TO DO IS COMPILE THIS FILE.  IT WILL  AUTOMATICALLY    *
*       INCLUDE YOUR SOURCE FILE, PROVIDED IT IS IN THE DEFAULT DIRECTORY, AND *
*       IS NAMED "example.h".  JUST COMPILE IT, LINK IT AND RUN IT.  IT        *
*       DEFAULTS TO TERMINATING WHEN THE CLOSE GADGET IS HIT, BUT IF YOU LOOK  *
*       BELOW YOU'LL SEE HOW TO MAKE IT TERMINATE ON ANY EVENT AT ALL.         *
***************************************************************************** */

/* INCLUDES ********************************************************** */

#include "exec/types.h"
#include "exec/io.h"
#include "exec/memory.h"
#include "libraries/dos.h"
#include "intuition/intuition.h"

#include "example.h"
 
/* EXTERNALS ***************************************************** */

extern struct Window *OpenWindow();

/* GLOBALS ****************************************************** */

long IntuitionBase=0;

main()
{
      ULONG class;

      struct Window *wG;      /* we fetch the RastPort pointer from here */
      struct RastPort *rpG;
      struct IntuiMessage *message; /* the message the IDCMP sends us */
 
      IntuitionBase = OpenLibrary("intuition.library", 0);
      if (IntuitionBase == NULL)
      {
            printf("intuition is not here.  where are we?\n");
            goto cleanup1;
      }

      wG = OpenWindow(&NewWindowStructure); /* open the window */
      if ( wG == NULL )
      {
            printf ("open window failed\n");
            goto cleanup1;
      }

      rpG = wG->RPort;  /* get a rastport pointer for the window */

#ifdef MenuList
      SetMenuStrip(wG,&MenuList);    /* attach any Menu */
#endif

#ifdef ITextList
      PrintIText(rpG,&ITextList,0,0);    /* Print the text if there is any */
#endif

#ifdef BorderList
      DrawBorder(rpG,&BorderList,0,0);   /* Draw the borders if there are any */
#endif

     do 
      {
            WaitPort(wG->UserPort);
                  while( (message = (struct IntuiMessage *)
                         GetMsg(wG->UserPort) ) != NULL)
                  {
                      class = message->Class;
                      ReplyMsg(message);
		      if ( class == CLOSEWINDOW ) goto cleanup2;
                  }
      } while (1);

   cleanup2:
#ifdef MenuList
      ClearMenuStrip(wG);
#endif
      CloseWindow(wG);

   cleanup1:
      if (IntuitionBase != NULL) CloseLibrary(IntuitionBase);
      return(0);

}
