Files
Arquivotheca.SunOS-4.1.4/usr.etc/suninstall/libmenu/help_screen.c
seta75D ff309bfe1c Init
2021-10-11 18:37:13 -03:00

229 lines
4.8 KiB
C

#ifndef lint
static char sccsid[] = "@(#)help_screen.c 1.1 94/10/31";
#endif
/*
* Name: help_screen.c
*
* Description: Thie file contains the two default help screens.
*/
#include <curses.h>
#include "menu.h"
#include "menu_impl.h"
static int help_state = 1;
/*
* Name: form_help_screen()
*
* Description: Print help screen for forms.
*
* Call syntax: form_help_screen()
*/
static char * form_lines[] = {
"",
" ON-LINE HELP FOR FORMS",
" ------------------------------------------------------------------------------",
"",
"",
" -----------------------------------------------------",
" KEYS PURPOSE ",
" -----------------------------------------------------",
" CONTROL B move to previous object",
" CONTROL P move to previous object",
" CONTROL F move to next object",
" CONTROL N move to next object",
"",
" CONTROL U erase field",
" <DELETE> erase one character",
" <RETURN> end field input",
" x or X select a button",
" <SPACE> move to next button",
"",
" CONTROL L repaint screen",
" CONTROL C abort",
CP_NULL
};
void
form_help_screen()
{
pointer saved_fm; /* pointer to saved form */
int x_coord, y_coord; /* saved coordinates */
int y; /* scratch y-coordinate */
getyx(stdscr, y_coord, x_coord); /* save where we were */
clear();
for (y = 0; form_lines[y]; y++) {
if (form_lines[y][0] == NULL) /* skip blank lines */
continue;
mvaddstr(y, 0, form_lines[y]);
}
refresh();
/*
* Wait for an acknowledge from the user. Clear _current_fm
* so menu_ack does not try to display the form/menu on top
* of the help screen.
*/
saved_fm = _current_fm;
_current_fm = NULL;
menu_ack();
_current_fm = saved_fm;
/*
* Redisplay the form/menu, and clear the screen.
*/
redisplay(MENU_CLEAR);
move(y_coord, x_coord); /* put cursor back */
refresh();
} /* end form_help_screen() */
/*
* Name: help_screen_off()
*
* Description: Disable check for help screens.
*
* Call syntax: help_screen_off();
*/
void
help_screen_off()
{
help_state = 0;
} /* end help_screen_off() */
/*
* Name: help_screen_on()
*
* Description: Enable check for help screens.
*
* Call syntax: help_screen_on();
*/
void
help_screen_on()
{
help_state = 1;
} /* end help_screen_on() */
/*
* Name: is_help_screen()
*
* Description: Return the status of the help screen system.
*
* Call syntax: ret_code = is_help_screen();
*
* Return value: int ret_code;
*/
int
is_help_screen()
{
return(help_state);
} /* end help_screen_on() */
/*
* Name: menu_help_screen()
*
* Description: Print help screen for menus.
*
* Call syntax: menu_help_screen()
*/
static char * menu_help_lines[] = {
"",
" ON-LINE HELP FOR MENUS",
" ------------------------------------------------------------------------------",
"",
"",
" -----------------------------------------------------",
" KEYS PURPOSE ",
" -----------------------------------------------------",
" CONTROL B move to previous item",
" CONTROL P move to previous item",
" CONTROL F move to next item",
" CONTROL N move to next item",
" <RETURN> move to next item",
" <SPACE> move to next item",
"",
" x or X select an item",
"",
" CONTROL L repaint screen",
" CONTROL C abort",
CP_NULL
};
void
menu_help_screen()
{
pointer saved_fm; /* pointer to saved form */
int x_coord, y_coord; /* saved coordinates */
int y; /* scratch y-coordinate */
getyx(stdscr, y_coord, x_coord); /* save where we were */
clear();
for (y = 0; menu_help_lines[y]; y++) {
/* skip blank lines */
if (menu_help_lines[y][0] == NULL)
continue;
mvaddstr(y, 0, menu_help_lines[y]);
}
refresh();
/*
* Wait for an acknowledge from the user. Clear _current_fm
* so menu_ack does not try to display the form/menu on top
* of the help screen.
*/
saved_fm = _current_fm;
_current_fm = NULL;
menu_ack();
_current_fm = saved_fm;
/*
* Redisplay the form/menu, and clear the screen.
*/
redisplay(MENU_CLEAR);
move(y_coord, x_coord); /* put cursor back */
refresh();
} /* end menu_help_screen() */