4 ** Copyright (C) 1994,95,96 by Bernardo Innocenti
6 ** Handle on-line, context sensitive, AmigaGuide help.
9 #include <libraries/amigaguide.h>
11 #include <proto/exec.h>
12 #include <proto/dos.h>
13 #include <proto/amigaguide.h>
15 #include "XModulePriv.h"
19 XDEF ULONG AmigaGuideSig = 0L;
21 static struct Library *AmigaGuideBase = NULL;
22 static struct NewAmigaGuide NewGuide = { 0 };
23 static AMIGAGUIDECONTEXT Context = NULL;
25 static STRPTR ContextList[] =
33 GLOBALCALL void HandleHelp (struct IntuiMessage *msg)
38 if (!(AmigaGuideBase = OpenLibrary ("amigaguide.library", 33)))
40 CantOpenLib ("amigaguide.library", 33);
44 NewGuide.nag_Name = (STRPTR) PRGNAME ".guide";
45 NewGuide.nag_Node = (STRPTR) "MAIN";
46 NewGuide.nag_BaseName = (STRPTR) PRGNAME;
47 NewGuide.nag_ClientPort = NULL; // (STRPTR) "XMODULE_HELP";
48 NewGuide.nag_Context = ContextList;
49 NewGuide.nag_Screen = Scr;
51 if(Context = OpenAmigaGuideAsync (&NewGuide,
52 AGA_HelpGroup, UniqueID,
55 AmigaGuideSig = AmigaGuideSignal (Context);
56 Signals |= AmigaGuideSig;
58 /* Get startup message */
65 CloseLibrary (AmigaGuideBase); AmigaGuideBase = NULL;
75 if (IntuiMsg.Class == IDCMP_RAWKEY || IntuiMsg.Class == IDCMP_MENUHELP)
76 SPrintf (cmd, "LINK \"%s\"", ((struct WinUserData *)IntuiMsg.IDCMPWindow->UserData)->HelpNode);
78 strcpy (cmd, "LINK Main");
80 SendAmigaGuideCmdA (Context, cmd, NULL);
86 GLOBALCALL void HandleAmigaGuide (void)
88 struct AmigaGuideMsg *agm;
90 while (agm = GetAmigaGuideMsg (Context))
92 if (agm->agm_Pri_Ret) /* Error? */
96 if (reason = GetAmigaGuideString (agm->agm_Sec_Ret))
97 ShowRequest (MSG_AMIGAGUIDE_ERROR, 0, reason);
100 // switch (agm->agm_Type)
102 // case ToolCmdReplyID: /* A command has completed */
103 // case ToolStatusID:
109 ReplyAmigaGuideMsg (agm);
115 GLOBALCALL void CleanupHelp (void)
119 Signals &= ~AmigaGuideSig;
121 CloseAmigaGuide (Context); Context = NULL;
122 CloseLibrary (AmigaGuideBase); AmigaGuideBase = NULL;