diff options
author | Joseph Hunkeler <jhunkeler@gmail.com> | 2015-07-08 20:46:52 -0400 |
---|---|---|
committer | Joseph Hunkeler <jhunkeler@gmail.com> | 2015-07-08 20:46:52 -0400 |
commit | fa080de7afc95aa1c19a6e6fc0e0708ced2eadc4 (patch) | |
tree | bdda434976bc09c864f2e4fa6f16ba1952b1e555 /pkg/utilities/nttools/tedit/prompt.x | |
download | iraf-linux-fa080de7afc95aa1c19a6e6fc0e0708ced2eadc4.tar.gz |
Initial commit
Diffstat (limited to 'pkg/utilities/nttools/tedit/prompt.x')
-rw-r--r-- | pkg/utilities/nttools/tedit/prompt.x | 225 |
1 files changed, 225 insertions, 0 deletions
diff --git a/pkg/utilities/nttools/tedit/prompt.x b/pkg/utilities/nttools/tedit/prompt.x new file mode 100644 index 00000000..24d2be70 --- /dev/null +++ b/pkg/utilities/nttools/tedit/prompt.x @@ -0,0 +1,225 @@ +include "display/curses.h" +include "screen.h" + +# BOOL_PROMPT -- Get a yes or no response from the user + +bool procedure bool_prompt (msg) + +char msg[ARB] # i: message to print in the prompt area +#-- +int index +pointer sp, resp, msg2 + +string yorn "|yes|no|" + +int strdic() + +begin + # Allocate memory for temporary strings + + call smark (sp) + call salloc (resp, SZ_FNAME, TY_CHAR) + call salloc (msg2, SZ_LINE, TY_CHAR) + + # Prompt the user for a response + + call read_prompt (msg, Memc[resp], SZ_FNAME) + call strlwr (Memc[resp]) + + # See if the response is yes or no, + # if it isn't, keep asking + + index = strdic (Memc[resp], Memc[resp], SZ_FNAME, yorn) + while (index == 0) { + call strcpy ("Please answer yes or no. ", Memc[msg2], SZ_LINE) + call strcat (msg, Memc[msg2], SZ_LINE) + + call read_prompt (Memc[msg2], Memc[resp], SZ_FNAME) + call strlwr (Memc[resp]) + + index = strdic (Memc[resp], Memc[resp], SZ_FNAME, yorn) + } + + # Convert result into boolean value + + call sfree (sp) + return (index == 1) +end + +# CLEAR_PROMPT -- Clear the prompt window + +procedure clear_prompt (scr) + +pointer scr # i: Currently active screen +#-- +int win + +int prompt_window() + +begin + win = prompt_window () + call werase (win) + + if (scr != NULL) + call focus_window (TED_WINDOW(scr)) + +end + +# ERR1_PROMPT -- Write an error message in the prompt area of the screen + +procedure err1_prompt (msg) + +char msg[ARB] # i: Message to write +#-- + +begin + call eprintf ("\r\n") + call error (1, msg) +end + +# ERR2_PROMPT -- Write two error messages in the prompt area of the screen + +procedure err2_prompt (msg1, msg2) + +char msg1[ARB] # i: First message to write +char msg2[ARB] # i: Second message to write +#-- +pointer msg + +begin + call salloc (msg, SZ_LINE, TY_CHAR) + + call sprintf (Memc[msg], SZ_LINE, "%s (%s)") + call pargstr (msg1) + call pargstr (msg2) + + call eprintf ("\r\n") + call error (1, Memc[msg]) + +end + +# HELP_PROMPT -- Write help message in prompt area + +procedure help_prompt (scr, bell) + +pointer scr # i: Screen descriptor +int bell # i: Ring the bell after printing message? +#-- +pointer sp, exit, msg + +string helpfmt "Type %s quit to leave editor, %s help for help." + +begin + call smark (sp) + call salloc (exit, SZ_FNAME, TY_CHAR) + call salloc (msg, SZ_LINE, TY_CHAR) + + call k_eseq ("EXIT_UPDATE", Memc[exit], SZ_FNAME) + + call sprintf (Memc[msg], SZ_LINE, helpfmt) + call pargstr (Memc[exit]) + call pargstr (Memc[exit]) + + call write_prompt (scr, bell, Memc[msg]) + call sfree (sp) +end + +# READ_PROMPT -- Read a string from the prompt area of the screen + +procedure read_prompt (msg, str, maxch) + +char msg[ARB] # i: Prompt message +char str[ARB] # o: Output string +int maxch[ARB] # i: Maximum length of output string +#-- +char blank +int win + +data blank / ' ' / + +int prompt_window() + +begin + # Write message in prompt window + + win = prompt_window () + + call werase (win) + call wmove (win, 2, 1) + call waddstr (win, msg) + call waddch (win, blank) + + # Read string from prompt window + + call wgetstr (win, str, maxch) + call werase (win) + +end + +# WARN1_PROMPT -- Write a warning message in the prompt area of the screen + +procedure warn1_prompt (scr, msg) + +pointer scr # i: Currently active screen +char msg[ARB] # i: Message to write +#-- + +begin + call write_prompt (scr, YES, msg) +end + +# WARN2_PROMPT -- Write two warning messages in the prompt area of the screen + +procedure warn2_prompt (scr, msg1, msg2) + +pointer scr # i: Currently active screen +char msg1[ARB] # i: First message to write +char msg2[ARB] # i: Second message to write +#-- +pointer sp, msg + +begin + call smark (sp) + call salloc (msg, SZ_LINE, TY_CHAR) + + call sprintf (Memc[msg], SZ_LINE, "%s (%s)") + call pargstr (msg1) + call pargstr (msg2) + + call write_prompt (scr, YES, Memc[msg]) + + call sfree (sp) +end + +# WRITE_PROMPT -- Write a message in the prompt area of the screen + +procedure write_prompt (scr, bell, msg) + +pointer scr # i: Currently active screen +int bell # i: Ring bell after writing message? +char msg[ARB] # i: Message to write +#-- +int win + +int prompt_window() + +begin + # Write message in prompt window + + win = prompt_window () + + call werase (win) + call wmove (win, 2, 1) + call waddstr (win, msg) + + # Ring the bell to wake up the user + + if (bell == YES) + call ring_bell + + # Restore cursor to original screen position + + if (scr != NULL) + call focus_window (TED_WINDOW(scr)) + +end |