129 lines
2.7 KiB
C
129 lines
2.7 KiB
C
|
/*
|
||
|
Title: help
|
||
|
|
||
|
File: help.c
|
||
|
Purpose: Help
|
||
|
Last update: Fri Jun 15 1990
|
||
|
*/
|
||
|
|
||
|
|
||
|
/* ---- Includes ---- */
|
||
|
#include <stdio.h>
|
||
|
|
||
|
#include "help.h"
|
||
|
|
||
|
#include <X11/Intrinsic.h>
|
||
|
#include <X11/Shell.h>
|
||
|
#include <X11/StringDefs.h>
|
||
|
#include <X11/Xaw/AsciiText.h>
|
||
|
#include <X11/Xaw/Command.h>
|
||
|
#include <X11/Xaw/Form.h>
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
/* ---- Statics ---- */
|
||
|
|
||
|
static Widget helpShellWid;
|
||
|
static Boolean helpShellMapped=False;
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
/* ---- Callbacks ---- */
|
||
|
|
||
|
|
||
|
static void removeCallback(Widget w,
|
||
|
XtPointer client_data, XtPointer call_data)
|
||
|
{ XtPopdown(helpShellWid);
|
||
|
helpShellMapped=False;
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
/* ---- Exports ---- */
|
||
|
|
||
|
|
||
|
Widget createHelpShell(Widget toplevelWid)
|
||
|
/*
|
||
|
Create the help shell as a child of `toplevelWid'.
|
||
|
The shell is not initially mapped.
|
||
|
*/
|
||
|
{ Widget formWid, removeWid, textWid;
|
||
|
String fn;
|
||
|
Arg args[10];
|
||
|
int nargs;
|
||
|
|
||
|
char apology[] = "Sorry, I couldn't find the \"ted.help\" file.\n\
|
||
|
This should either be in \"/usr/X11/app-defaults\" or somewhere\n\
|
||
|
referred to by the \"XFILESEARCHPATH\" environment variable.";
|
||
|
|
||
|
|
||
|
/*
|
||
|
The toplevel shell widget holds a form widget
|
||
|
*/
|
||
|
helpShellWid = XtCreatePopupShell("Help", topLevelShellWidgetClass,
|
||
|
toplevelWid,
|
||
|
NULL, (Cardinal) 0);
|
||
|
|
||
|
formWid = XtCreateManagedWidget("form", formWidgetClass, helpShellWid,
|
||
|
NULL, (Cardinal) 0);
|
||
|
|
||
|
|
||
|
nargs = 0;
|
||
|
removeWid = XtCreateManagedWidget("rmButton", commandWidgetClass,
|
||
|
formWid, args, nargs);
|
||
|
XtAddCallback(removeWid, XtNcallback, removeCallback, NULL);
|
||
|
|
||
|
|
||
|
/*
|
||
|
Find the help file.
|
||
|
*/
|
||
|
fn = XtResolvePathname(XtDisplay(toplevelWid),
|
||
|
"app-defaults", /* type */
|
||
|
"ted", /* file name */
|
||
|
".help", /* suffix */
|
||
|
NULL, /* path */
|
||
|
NULL, (Cardinal)0, /* substitutions */
|
||
|
NULL /* file predicate */
|
||
|
);
|
||
|
|
||
|
|
||
|
/*
|
||
|
If we found the file display it, else an apology.
|
||
|
*/
|
||
|
nargs = 0;
|
||
|
if (fn != NULL)
|
||
|
{ XtSetArg(args[nargs], XtNtype, XawAsciiFile); nargs++;
|
||
|
XtSetArg(args[nargs], XtNstring, fn); nargs++;
|
||
|
}
|
||
|
else
|
||
|
{ XtSetArg(args[nargs], XtNtype, XawAsciiString); nargs++;
|
||
|
XtSetArg(args[nargs], XtNstring, apology); nargs++;
|
||
|
}
|
||
|
XtSetArg(args[nargs], XtNfromVert, removeWid); nargs++;
|
||
|
XtSetArg(args[nargs], XtNscrollVertical, XawtextScrollAlways); nargs++;
|
||
|
textWid = XtCreateManagedWidget("text", asciiTextWidgetClass,
|
||
|
formWid, args, nargs);
|
||
|
|
||
|
|
||
|
if (fn != NULL) XtFree(fn);
|
||
|
|
||
|
|
||
|
return(helpShellWid);
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
void help()
|
||
|
/*
|
||
|
Display help modeless dialogue.
|
||
|
*/
|
||
|
{ if (!helpShellMapped)
|
||
|
{ XtPopup(helpShellWid, XtGrabNone);
|
||
|
helpShellMapped = True;
|
||
|
}
|
||
|
}
|