aboutsummaryrefslogtreecommitdiff
path: root/pkg/xtools/icfit/icgui.x
diff options
context:
space:
mode:
authorJoseph Hunkeler <jhunkeler@gmail.com>2015-07-08 20:46:52 -0400
committerJoseph Hunkeler <jhunkeler@gmail.com>2015-07-08 20:46:52 -0400
commitfa080de7afc95aa1c19a6e6fc0e0708ced2eadc4 (patch)
treebdda434976bc09c864f2e4fa6f16ba1952b1e555 /pkg/xtools/icfit/icgui.x
downloadiraf-linux-fa080de7afc95aa1c19a6e6fc0e0708ced2eadc4.tar.gz
Initial commit
Diffstat (limited to 'pkg/xtools/icfit/icgui.x')
-rw-r--r--pkg/xtools/icfit/icgui.x138
1 files changed, 138 insertions, 0 deletions
diff --git a/pkg/xtools/icfit/icgui.x b/pkg/xtools/icfit/icgui.x
new file mode 100644
index 00000000..9e0fd6e0
--- /dev/null
+++ b/pkg/xtools/icfit/icgui.x
@@ -0,0 +1,138 @@
+# Copyright(c) 1986 Association of Universities for Research in Astronomy Inc.
+
+include <gset.h>
+include <gio.h>
+include "icfit.h"
+
+define CMDS "|open|close|params|graph|wcs|refit|help|"
+
+define OPEN 1 # Open GUI and send initial parameters
+define CLOSE 2 # Close GUI and send final parameters
+define PARAMS 3 # Send new parameters
+define GRAPH 4 # Send graph type parameters
+define WCS 5 # Send graph wcs parameters
+define REFIT 6 # Send refit flag
+define HELP 7 # Send help
+
+# IC_GUI -- GUI interaction.
+#
+# Note there is currently an interface violation to determine if the graphics
+# stream is connected to a GUI.
+
+procedure ic_gui (ic, cmd)
+
+pointer ic #I ICFIT pointer
+char cmd[ARB] #I Command
+
+int ncmd, strdic()
+real vx1, vx2, vy1, vy2, wx1, wx2, wy1, wy2
+pointer sp, str, msg
+bool streq()
+errchk ic_help
+
+begin
+ if (IC_GP(ic) == NULL)
+ return
+
+ call smark (sp)
+ call salloc (str, SZ_LINE, TY_CHAR)
+
+ # Scan the command and switch on the first word.
+ call sscan (cmd)
+ call gargwrd (Memc[str], SZ_LINE)
+ ncmd = strdic (Memc[str], Memc[str], SZ_LINE, CMDS)
+ switch (ncmd) {
+ case OPEN, CLOSE, PARAMS:
+ call salloc (msg, SZ_LINE+IC_SZSAMPLE, TY_CHAR)
+ call ic_gstr (ic, "function", Memc[str], SZ_LINE)
+ call sprintf (Memc[msg], SZ_LINE+IC_SZSAMPLE,
+ "%s %s %d \"%s\" %d %d %g %g %g %b")
+ call pargstr (cmd)
+ call pargstr (Memc[str])
+ call pargi (IC_ORDER(ic))
+ call pargstr (Memc[IC_SAMPLE(ic)])
+ call pargi (IC_NAVERAGE(ic))
+ call pargi (IC_NITERATE(ic))
+ call pargr (IC_LOW(ic))
+ call pargr (IC_HIGH(ic))
+ call pargr (IC_GROW(ic))
+ call pargi (IC_MARKREJ(ic))
+ if (GP_UIFNAME(IC_GP(ic)) != EOS)
+ call gmsg (IC_GP(ic), "icfit", Memc[msg])
+
+ if (GP_UIFNAME(IC_GP(ic)) != EOS) {
+ if (streq (Memc[IC_HELP(ic)], IC_DEFHELP))
+ call strcpy (IC_DEFHTML, Memc[IC_HELP(ic)], SZ_LINE)
+ }
+
+ case GRAPH:
+ call sprintf (Memc[str], SZ_LINE, "graph %c %c %c")
+ call pargi ('h'+IC_GKEY(ic)-1)
+ call pargi (IC_AXES(ic,IC_GKEY(ic),1))
+ call pargi (IC_AXES(ic,IC_GKEY(ic),2))
+ if (GP_UIFNAME(IC_GP(ic)) != EOS)
+ call gmsg (IC_GP(ic), "icfit", Memc[str])
+
+ case WCS:
+ call ggview (IC_GP(ic), vx1, vx2, vy1, vy2)
+ call ggwind (IC_GP(ic), wx1, wx2, wy1, wy2)
+ call sprintf (Memc[str], SZ_LINE, "wcs %g %g %g %g %g %g %g %g")
+ call pargr (vx1)
+ call pargr (vx2)
+ call pargr (vy1)
+ call pargr (vy2)
+ call pargr (wx1)
+ call pargr (wx2)
+ call pargr (wy1)
+ call pargr (wy2)
+ if (GP_UIFNAME(IC_GP(ic)) != EOS)
+ call gmsg (IC_GP(ic), "icfit", Memc[str])
+
+ case REFIT:
+ if (GP_UIFNAME(IC_GP(ic)) != EOS)
+ call gmsg (IC_GP(ic), "icrefit", cmd)
+
+ case HELP:
+ if (GP_UIFNAME(IC_GP(ic)) != EOS)
+ call ic_help (ic)
+ else
+ call gpagefile (IC_GP(ic), Memc[IC_HELP(ic)], IC_PROMPT)
+ }
+
+ call sfree (sp)
+end
+
+
+# IC_HELP - Send help to GUI
+
+procedure ic_help (ic)
+
+pointer ic #I ICFIT pointer
+
+int i, fd, len_str, open(), getline()
+pointer line, help
+errchk open()
+
+begin
+ len_str = 10 * SZ_LINE
+ call calloc (help, len_str, TY_CHAR)
+ line = help
+
+ fd = open (Memc[IC_HELP(ic)], READ_ONLY, TEXT_FILE)
+ while (getline (fd, Memc[line]) != EOF) {
+ for (; Memc[line]!=EOS; line=line+1)
+ ;
+ i = line - help
+ if (i + SZ_LINE > len_str) {
+ len_str = len_str + 10 * SZ_LINE
+ call realloc (help, len_str, TY_CHAR)
+ line = help + i
+ }
+ }
+ call close (fd)
+
+ # Send results to GUI.
+ call gmsg (IC_GP(ic), "ichelp", Memc[help])
+
+ call mfree (help, TY_CHAR)
+end