ngspice/src/frontend/com_ghelp.c

102 lines
3.2 KiB
C

#include "ngspice/ngspice.h"
#include "ngspice/wordlist.h"
#include "ngspice/bool.h"
#include "variable.h"
#include "ngspice/cpextern.h"
#include "ngspice/cpextern.h"
#include "ngspice/hlpdefs.h"
#include "com_ghelp.h"
#include "com_help.h"
/* Displays SPICE3 help for commands if that is available or a link to the
* latest manuals otherwise.
*
* For those interested, an HTML source for the SPICE3 manual can be found at
* Internet Archive using the link below.
* https://web.archive.org/web/20180221111839/http://newton.ex.ac.uk/teaching/CDHW/Electronics2/userguide/
*/
void
com_ghelp(wordlist *wl)
{
#if defined(HAS_WINGUI) || defined(_MSC_VER) || defined(__MINGW32__) || defined(X_DISPLAY_MISSING) || defined(NOINTHELP)
NG_IGNORE(wl);
(void) printf("Internal help is no longer available!\n"
"For the latest official ngspice manual in PDF format, "
"please see\n"
" http://ngspice.sourceforge.net/docs/ngspice-manual.pdf\n"
"Or for HTML see\n"
" http://ngspice.sourceforge.net/docs/ngspice-html-manual/manual.html\n");
return;
#else
char *npath;
char *path = Help_Path;
char buf[BSIZE_SP];
#ifndef X_DISPLAY_MISSING
int i;
#endif /* X_DISPLAY_MISSING 1 */
if (cp_getvar("helppath", CP_STRING, buf, sizeof(buf)))
path = copy(buf);
if (!path) {
fprintf(cp_err, "Note: defaulting to old help.\n\n");
com_help(wl);
return;
}
if ((npath = cp_tildexpand(path)) == NULL) {
fprintf(cp_err, "Note: can't find help dir %s\n", path);
fprintf(cp_err, "Defaulting to old help.\n\n");
com_help(wl);
return;
}
#ifndef X_DISPLAY_MISSING /* 1 */
path = npath;
if (cp_getvar("helpregfont", CP_STRING, buf, sizeof(buf)))
hlp_regfontname = copy(buf);
if (cp_getvar("helpboldfont", CP_STRING, buf, sizeof(buf)))
hlp_boldfontname = copy(buf);
if (cp_getvar("helpitalicfont", CP_STRING, buf, sizeof(buf)))
hlp_italicfontname = copy(buf);
if (cp_getvar("helptitlefont", CP_STRING, buf, sizeof(buf)))
hlp_titlefontname = copy(buf);
if (cp_getvar("helpbuttonfont", CP_STRING, buf, sizeof(buf)))
hlp_buttonfontname = copy(buf);
if (cp_getvar("helpinitxpos", CP_NUM, &i, 0))
hlp_initxpos = i;
if (cp_getvar("helpinitypos", CP_NUM, &i, 0))
hlp_initypos = i;
if (cp_getvar("helpbuttonstyle", CP_STRING, buf, sizeof(buf))) {
if (cieq(buf, "left"))
hlp_buttonstyle = BS_LEFT;
else if (cieq(buf, "center"))
hlp_buttonstyle = BS_CENTER;
else if (cieq(buf, "unif"))
hlp_buttonstyle = BS_UNIF;
else
fprintf(cp_err, "Warning: no such button style %s\n",
buf);
}
if (cp_getvar("width", CP_NUM, &i, 0))
hlp_width = i;
if (cp_getvar("display", CP_STRING, buf, sizeof(buf)))
hlp_displayname = copy(buf);
else if (cp_getvar("device", CP_STRING, buf, sizeof(buf)))
hlp_displayname = copy(buf);
else
hlp_displayname = NULL;
hlp_main(path, wl);
return;
#else
com_help(wl);
#endif /* X_DISPLAY_MISSING 1 */
#endif
}