/*
 * abouthelp.c : file containing about(), and help(), as well as
 *    all the text structs for autorequesters.
 */

#include <intuition/intuition.h>
#include "helpwin.h"

#define HELPCOLOR 2L

/*
 *  Handle help request
 */

extern struct Window *wG; /* main window */
struct Window *wH;        /* help window */
struct RastPort *rpH;     /* help RastPort */

struct Window *OpenWindow();
struct IntuiMessage *GetMsg();
struct TextFont *OpenFont();

help()
{
	struct IntuiMessage *message;	/* the message from the IDCMP */
	struct TextFont *font;
	ULONG class;
	int i, j;
	int dun = FALSE;

	font = NULL;
	wH = NULL;

	wH = OpenWindow(&NewWindowStructureHelp);	/* open the window */
	if ( wH == NULL )
		{
		AutoRequest(wG,&winfailtxt,0L,&oktxt,0L,0L,300L,75L);
		return;
		}

	rpH = wH->RPort;	/* get a rastport pointer for the window */

	font = OpenFont(&TOPAZ80); /* make sure correct size font */
	if (font) SetFont(rpH,font);
	SetAPen(rpH,HELPCOLOR);
	i = 0;

	while (!dun) /* repeat til all of text array has been read */
		{
		for (j=0; i<40; j++, i++)	/* dump the help text array */
			{
			if (!HelpText[i]) { dun=TRUE;  break;}
			if (*HelpText[i] == '\f')  { ++i; break; } /* pause for page */
			Move(rpH,25L,(long) j*8+20);
			if (*HelpText[i] != '\0' )
				Text(rpH,HelpText[i], (long) strlen(HelpText[i]));
			}
		while(1)    /* Process all messages */
			{
			WaitPort(wH->UserPort); /* wait for a message */
				while( (message = (struct IntuiMessage *)
					GetMsg(wH->UserPort) ) != NULL)
				{
					class = message->Class;
					ReplyMsg(message);
					switch (class)
						{
						case GADGETUP:  /* MORE is the only gadget */
							goto next;
							break;
						case MENUPICK:
							continue;
						}
				}
			} 
  next:
		SetAPen(rpH,0L);   /* clear window for next page */
		RectFill(rpH,2L,12L,(long)wH->Width-3L,(long)wH->Height-2L);
		RefreshGList(&HelpDone_Gad,wH,NULL,-1L);
		SetAPen(rpH,HELPCOLOR);
		}
	if (font) CloseFont(font);
	if (wH) CloseWindow(wH);

}


/*
 *  Handle 'about' request
 */


about()
{
	AutoRequest(wG,&aboutmsg,0L,&oktxt,0L,0L,300L,75L);
}
