/* WinHelp.c
**
**    SCRAMmer V37.3 - 27th Aug 1992
**    ------------------------------
**
**		Copyright (c)		Giuliano C. Peritore
**								Via Amaseno, 6
**								04100 Latina
**								ITALY
**
**		Phone: (+39) 773 491692 Voice Only
**		EMAIL mc6040@mclink.it
*/

#include	<lattice/string.h>
#include	<lattice/stdio.h>
#include	<exec/types.h>
#include	<exec/libraries.h>
#include	<libraries/amigaguide.h>
#include	<pragma/amigaguide_lib.pragma>
#include	<pragma/exec_lib.pragma>
#include	<clib/amigaguide_protos.h>
#include	<clib/exec_protos.h>

#include	"SCRAMmer.h"

LONG	request_user(struct Window *,char *, char *, char *);
VOID	sleep_window(struct Window *);
VOID	wake_window(struct Window *);

IMPORT	struct	Window	*main_window;
IMPORT	struct	Screen	*def_pub_scr;

struct	Library	*AmigaGuideBase=0;
AMIGAGUIDECONTEXT	handle=0;
ULONG	amigaguidesignal=-1;
struct	NewAmigaGuide	nag={NULL};
STRPTR	context[]={"MAIN",NULL};


VOID	open_help(VOID)
{
	if(!AmigaGuideBase)
	{
		if(AmigaGuideBase=OpenLibrary("amigaguide.library",33))
		{
			nag.nag_BaseName	="ETI020_SCRAMmer3";
			nag.nag_Name		="SCRAMmer.guide";
			nag.nag_ClientPort="AGSCRAM_HELP";
			nag.nag_Line		=1;
			nag.nag_Screen		=def_pub_scr;
			nag.nag_Context	=context;
		}
		else	request_user(main_window,GetString(MSG_SCRAMMER),GetString(MSG_NOAMIGAGUIDE),GetString(MSG_CANCEL));
	}
	if(AmigaGuideBase)
	{
		if(!handle)
		{
			sleep_window(main_window);
			handle=OpenAmigaGuideAsync(&nag,NULL);
			wake_window(main_window);
			if(!handle)
				request_user(main_window,GetString(MSG_SCRAMMER),GetString(MSG_HELPNOGUIDE),GetString(MSG_CANCEL));
			amigaguidesignal=AmigaGuideSignal(handle);
			SetAmigaGuideContext(handle,0L,NULL);
		}
		else
		{
			SetAmigaGuideContext(handle,0L,NULL);
			SendAmigaGuideContext(handle,NULL);
		}
	}
}

VOID	close_help(VOID)
{
	if(handle)
	{
		CloseAmigaGuide(handle);
		handle=0;
	}
	if(AmigaGuideBase)
	{
		CloseLibrary(AmigaGuideBase);
		AmigaGuideBase=0;
	}
}

VOID	process_help(VOID)
{
	struct	AmigaGuideMsg *agm;

	while(agm=GetAmigaGuideMsg(handle))
	{
		switch(agm->agm_Type)
		{
			case	ActiveToolID:
				SetAmigaGuideContext(handle,0L,NULL);
				SendAmigaGuideContext(handle,NULL);
			break;
		}
		ReplyAmigaGuideMsg(agm);
	}
}