aboutsummaryrefslogtreecommitdiff
path: root/pkg/system/help/xhelp/xhcmds.x
diff options
context:
space:
mode:
authorJoe Hunkeler <jhunkeler@gmail.com>2015-08-11 16:51:37 -0400
committerJoe Hunkeler <jhunkeler@gmail.com>2015-08-11 16:51:37 -0400
commit40e5a5811c6ffce9b0974e93cdd927cbcf60c157 (patch)
tree4464880c571602d54f6ae114729bf62a89518057 /pkg/system/help/xhelp/xhcmds.x
downloadiraf-osx-40e5a5811c6ffce9b0974e93cdd927cbcf60c157.tar.gz
Repatch (from linux) of OSX IRAF
Diffstat (limited to 'pkg/system/help/xhelp/xhcmds.x')
-rw-r--r--pkg/system/help/xhelp/xhcmds.x185
1 files changed, 185 insertions, 0 deletions
diff --git a/pkg/system/help/xhelp/xhcmds.x b/pkg/system/help/xhelp/xhcmds.x
new file mode 100644
index 00000000..2c98af79
--- /dev/null
+++ b/pkg/system/help/xhelp/xhcmds.x
@@ -0,0 +1,185 @@
+# Copyright(c) 1986 Association of Universities for Research in Astronomy Inc.
+
+include <syserr.h>
+include "../help.h"
+include "xhelp.h"
+
+
+# XHELP callback commands.
+define XC_COMMANDS "|help|load|print|quit|search|files|directory|type|package|"
+define CMD_HELP 1
+define CMD_LOAD 2
+define CMD_PRINT 3
+define CMD_QUIT 4
+define CMD_SEARCH 5
+define CMD_FILES 6
+define CMD_DIRECTORY 7
+define CMD_TYPE 8
+define CMD_PACKAGE 9
+
+
+# XH_COMMAND_LOOP -- Process the GUI command loop.
+
+procedure xh_command_loop (xh)
+
+pointer xh #I task descriptor
+
+pointer sp, cmd, name, pkg, pat, opt, dev
+real x, y
+int wcs, key, exact_match
+char str[SZ_FNAME]
+
+bool streq()
+int strdic(), clgcur()
+int xh_pkglist()
+
+begin
+ call smark (sp)
+ call salloc (name, SZ_FNAME, TY_CHAR)
+ call salloc (pkg, SZ_FNAME, TY_CHAR)
+ call salloc (opt, SZ_FNAME, TY_CHAR)
+ call salloc (dev, SZ_FNAME, TY_CHAR)
+ call salloc (cmd, SZ_FNAME, TY_CHAR)
+ call salloc (pat, SZ_FNAME, TY_CHAR)
+
+
+ # Enter the command loop.
+ while (clgcur ("coords", x, y, wcs, key, str, SZ_FNAME) != EOF) {
+
+ # Skip any non-colon commands.
+ if (key != ':')
+ next
+
+ # Get the colon command string.
+ call sscan (str)
+ call gargwrd (Memc[cmd], SZ_FNAME)
+
+ switch (strdic (Memc[cmd], Memc[cmd], SZ_FNAME, XC_COMMANDS)) {
+ case CMD_HELP:
+ call gargwrd (Memc[name], SZ_FNAME)
+
+ # Get help on the requested topic, updates package list
+ # if necesary.
+ if (streq(Memc[name],"Home")) {
+ call xh_init (xh, NO, YES)
+ } else {
+ call gargwrd (Memc[pkg], SZ_FNAME) # curpack
+ call gargwrd (Memc[opt], SZ_FNAME) # option
+ call xh_cmd_help (xh, Memc[name], Memc[pkg], Memc[opt])
+ }
+
+ case CMD_FILES:
+ call gargwrd (Memc[name], SZ_FNAME) # task name
+ call gargwrd (Memc[pkg], SZ_FNAME) # parent package
+ call xh_files (xh, Memc[name], Memc[pkg])
+
+ case CMD_LOAD:
+ # Load a requested page from the history.
+ call gargwrd (Memc[name], SZ_FNAME) # task name
+ call gargwrd (Memc[pkg], SZ_FNAME) # curpack
+ call gargwrd (Memc[opt], SZ_FNAME) # help option
+ if (xh_pkglist (xh, Memc[name], HELPDB(xh), LIST(xh)) != 0)
+ call gmsg (XH_GP(xh), "pkglist", LIST(xh))
+ call xh_help (xh, Memc[name], Memc[pkg], Memc[opt])
+
+ case CMD_PRINT:
+ # Print the current results.
+ call gargwrd (Memc[name], SZ_FNAME) # task name
+ call gargwrd (Memc[pkg], SZ_FNAME) # curpack
+ call gargwrd (Memc[dev], SZ_FNAME) # printer name
+ call xh_print_help (xh, Memc[name], Memc[pkg], Memc[dev])
+
+ case CMD_QUIT:
+ # Quit the task.
+ break
+
+ case CMD_SEARCH:
+ # Get the results of the keyword search.
+ call gargi (exact_match)
+ call gargstr (Memc[pat], SZ_FNAME)
+ call xh_search (xh, exact_match, Memc[pat])
+
+ case CMD_DIRECTORY:
+ # Process the directory browsing command.
+ call gargwrd (Memc[opt], SZ_FNAME)
+ call xh_directory (xh, Memc[opt])
+
+ case CMD_TYPE:
+ # Get the showtype value from the GUI
+ call gargi (XH_SHOWTYPE(xh))
+
+ case CMD_PACKAGE:
+ # For the given item return the package in which it
+ # was found. [DEBUG ROUTINE.]
+ call gargwrd (Memc[name], SZ_FNAME)
+ call xh_pkgpath (xh, Memc[name], CURPACK(xh), Memc[pkg])
+ call printf ("%s => %s\n")
+ call pargstr (Memc[name])
+ call pargstr (Memc[pkg])
+ call flush(STDOUT)
+ }
+ }
+
+ call sfree (sp)
+end
+
+
+# XH_CMD_HELP -- Process a help command.
+
+procedure xh_cmd_help (xh, topic, curpack, option)
+
+pointer xh # task descriptor
+char topic[ARB] # requested topic
+char curpack[ARB] # current package
+char option[ARB] # option (help|source|sysdoc)
+
+int len
+
+bool streq()
+int strncmp()
+int xh_pkgname(), xh_pkglist()
+
+begin
+ if (streq (option, "help")) {
+ # No package name given, find one and load it.
+ if (streq (curpack, "{}")) {
+ curpack[1] = EOS
+ len = 0
+ if (xh_pkgname (xh, topic, curpack) == OK)
+ len = xh_pkglist (xh, curpack, HELPDB(xh), LIST(xh))
+
+ if (len != 0 &&
+ strncmp(curpack, "root", 4) != 0 &&
+ strncmp(curpack, "clpack", 6) != 0) {
+ call gmsg (XH_GP(xh), "pkglist", LIST(xh))
+ call strcpy (curpack, CURPACK(xh), SZ_FNAME)
+ call gmsg (XH_GP(xh), "curpack", curpack)
+ call gmsg (XH_GP(xh), "history", "package")
+ }
+ }
+
+ if (xh_pkglist (xh, topic, HELPDB(xh), LIST(xh)) != 0) {
+ # Got a package listing....
+ call gmsg (XH_GP(xh), "pkglist", LIST(xh))
+ call strcpy (topic, CURPACK(xh), SZ_FNAME)
+ call gmsg (XH_GP(xh), "curpack", topic)
+ }
+ }
+
+ if (streq (topic, CURPACK(xh))) {
+ call gmsg (XH_GP(xh), "type", "package")
+ call gmsg (XH_GP(xh), "curtask", topic)
+ if (streq (option, "help"))
+ call xh_help (xh, "", CURPACK(xh), option)
+ else
+ call xh_help (xh, topic, curpack, option)
+ call strcpy (CURPACK(xh), CURTASK(xh), SZ_FNAME)
+
+ } else {
+ call gmsg (XH_GP(xh), "type", "task")
+ call gmsg (XH_GP(xh), "curtask", topic)
+ call xh_help (xh, topic, CURPACK(xh), option)
+ call strcpy (topic, CURTASK(xh), SZ_FNAME)
+ }
+ call gmsg (XH_GP(xh), "history", "append")
+end