Commit b1c5f1c6 authored by Sam Ravnborg's avatar Sam Ravnborg

kconfig: Lindent scripts/lxdialog

The lxdialog code was not easy to read. So as first step the code
was run through Lindent.
Fix-ups will come in next patchset.
Signed-off-by: default avatarSam Ravnborg <sam@ravnborg.org>
parent b286e392
This diff is collapsed.
......@@ -18,7 +18,6 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
/*
* Default color definitions
*
......
......@@ -42,7 +42,7 @@
#if defined(NCURSES_VERSION) && defined(_NEED_WRAP) && !defined(GCC_PRINTFLIKE)
#define OLD_NCURSES 1
#undef wbkgdset
#define wbkgdset(w,p) /*nothing*/
#define wbkgdset(w,p) /*nothing */
#else
#define OLD_NCURSES 0
#endif
......@@ -56,7 +56,6 @@
#define MIN(x,y) (x < y ? x : y)
#define MAX(x,y) (x > y ? x : y)
#ifndef ACS_ULCORNER
#define ACS_ULCORNER '+'
#endif
......@@ -137,34 +136,33 @@ extern const char *backtitle;
/*
* Function prototypes
*/
extern void create_rc (const char *filename);
extern int parse_rc (void);
void init_dialog (void);
void end_dialog (void);
void attr_clear (WINDOW * win, int height, int width, chtype attr);
void dialog_clear (void);
void color_setup (void);
void print_autowrap (WINDOW * win, const char *prompt, int width, int y, int x);
void print_button (WINDOW * win, const char *label, int y, int x, int selected);
void draw_box (WINDOW * win, int y, int x, int height, int width, chtype box,
extern void create_rc(const char *filename);
extern int parse_rc(void);
void init_dialog(void);
void end_dialog(void);
void attr_clear(WINDOW * win, int height, int width, chtype attr);
void dialog_clear(void);
void color_setup(void);
void print_autowrap(WINDOW * win, const char *prompt, int width, int y, int x);
void print_button(WINDOW * win, const char *label, int y, int x, int selected);
void draw_box(WINDOW * win, int y, int x, int height, int width, chtype box,
chtype border);
void draw_shadow (WINDOW * win, int y, int x, int height, int width);
void draw_shadow(WINDOW * win, int y, int x, int height, int width);
int first_alpha (const char *string, const char *exempt);
int dialog_yesno (const char *title, const char *prompt, int height, int width);
int dialog_msgbox (const char *title, const char *prompt, int height,
int first_alpha(const char *string, const char *exempt);
int dialog_yesno(const char *title, const char *prompt, int height, int width);
int dialog_msgbox(const char *title, const char *prompt, int height,
int width, int pause);
int dialog_textbox (const char *title, const char *file, int height, int width);
int dialog_menu (const char *title, const char *prompt, int height, int width,
int dialog_textbox(const char *title, const char *file, int height, int width);
int dialog_menu(const char *title, const char *prompt, int height, int width,
int menu_height, const char *choice, int item_no,
const char * const * items);
int dialog_checklist (const char *title, const char *prompt, int height,
const char *const *items);
int dialog_checklist(const char *title, const char *prompt, int height,
int width, int list_height, int item_no,
const char * const * items, int flag);
const char *const *items, int flag);
extern char dialog_input_result[];
int dialog_inputbox (const char *title, const char *prompt, int height,
int dialog_inputbox(const char *title, const char *prompt, int height,
int width, const char *init);
/*
......@@ -178,7 +176,6 @@ int dialog_inputbox (const char *title, const char *prompt, int height,
*/
#define M_EVENT (KEY_MAX+1)
/*
* The `flag' parameter in checklist is used to select between
* radiolist and checklist
......
......@@ -26,16 +26,15 @@ char dialog_input_result[MAX_LEN + 1];
/*
* Print the termination buttons
*/
static void
print_buttons(WINDOW *dialog, int height, int width, int selected)
static void print_buttons(WINDOW * dialog, int height, int width, int selected)
{
int x = width / 2 - 11;
int y = height - 2;
print_button (dialog, " Ok ", y, x, selected==0);
print_button (dialog, " Help ", y, x + 14, selected==1);
print_button(dialog, " Ok ", y, x, selected == 0);
print_button(dialog, " Help ", y, x + 14, selected == 1);
wmove(dialog, y, x+1+14*selected);
wmove(dialog, y, x + 1 + 14 * selected);
wrefresh(dialog);
}
......@@ -43,7 +42,7 @@ print_buttons(WINDOW *dialog, int height, int width, int selected)
* Display a dialog box for inputing a string
*/
int
dialog_inputbox (const char *title, const char *prompt, int height, int width,
dialog_inputbox(const char *title, const char *prompt, int height, int width,
const char *init)
{
int i, x, y, box_y, box_x, box_width;
......@@ -55,73 +54,72 @@ dialog_inputbox (const char *title, const char *prompt, int height, int width,
x = (COLS - width) / 2;
y = (LINES - height) / 2;
draw_shadow(stdscr, y, x, height, width);
draw_shadow (stdscr, y, x, height, width);
dialog = newwin(height, width, y, x);
keypad(dialog, TRUE);
dialog = newwin (height, width, y, x);
keypad (dialog, TRUE);
draw_box (dialog, 0, 0, height, width, dialog_attr, border_attr);
wattrset (dialog, border_attr);
mvwaddch (dialog, height-3, 0, ACS_LTEE);
draw_box(dialog, 0, 0, height, width, dialog_attr, border_attr);
wattrset(dialog, border_attr);
mvwaddch(dialog, height - 3, 0, ACS_LTEE);
for (i = 0; i < width - 2; i++)
waddch (dialog, ACS_HLINE);
wattrset (dialog, dialog_attr);
waddch (dialog, ACS_RTEE);
waddch(dialog, ACS_HLINE);
wattrset(dialog, dialog_attr);
waddch(dialog, ACS_RTEE);
if (title != NULL && strlen(title) >= width-2 ) {
if (title != NULL && strlen(title) >= width - 2) {
/* truncate long title -- mec */
char * title2 = malloc(width-2+1);
memcpy( title2, title, width-2 );
title2[width-2] = '\0';
char *title2 = malloc(width - 2 + 1);
memcpy(title2, title, width - 2);
title2[width - 2] = '\0';
title = title2;
}
if (title != NULL) {
wattrset (dialog, title_attr);
mvwaddch (dialog, 0, (width - strlen(title))/2 - 1, ' ');
waddstr (dialog, (char *)title);
waddch (dialog, ' ');
wattrset(dialog, title_attr);
mvwaddch(dialog, 0, (width - strlen(title)) / 2 - 1, ' ');
waddstr(dialog, (char *)title);
waddch(dialog, ' ');
}
wattrset (dialog, dialog_attr);
print_autowrap (dialog, prompt, width - 2, 1, 3);
wattrset(dialog, dialog_attr);
print_autowrap(dialog, prompt, width - 2, 1, 3);
/* Draw the input field box */
box_width = width - 6;
getyx (dialog, y, x);
getyx(dialog, y, x);
box_y = y + 2;
box_x = (width - box_width) / 2;
draw_box (dialog, y + 1, box_x - 1, 3, box_width + 2,
draw_box(dialog, y + 1, box_x - 1, 3, box_width + 2,
border_attr, dialog_attr);
print_buttons(dialog, height, width, 0);
/* Set up the initial value */
wmove (dialog, box_y, box_x);
wattrset (dialog, inputbox_attr);
wmove(dialog, box_y, box_x);
wattrset(dialog, inputbox_attr);
if (!init)
instr[0] = '\0';
else
strcpy (instr, init);
strcpy(instr, init);
input_x = strlen (instr);
input_x = strlen(instr);
if (input_x >= box_width) {
scroll = input_x - box_width + 1;
input_x = box_width - 1;
for (i = 0; i < box_width - 1; i++)
waddch (dialog, instr[scroll + i]);
waddch(dialog, instr[scroll + i]);
} else
waddstr (dialog, instr);
waddstr(dialog, instr);
wmove (dialog, box_y, box_x + input_x);
wmove(dialog, box_y, box_x + input_x);
wrefresh (dialog);
wrefresh(dialog);
while (key != ESC) {
key = wgetch (dialog);
key = wgetch(dialog);
if (button == -1) { /* Input box selected */
switch (key) {
......@@ -136,41 +134,59 @@ dialog_inputbox (const char *title, const char *prompt, int height, int width,
case KEY_BACKSPACE:
case 127:
if (input_x || scroll) {
wattrset (dialog, inputbox_attr);
wattrset(dialog, inputbox_attr);
if (!input_x) {
scroll = scroll < box_width - 1 ?
0 : scroll - (box_width - 1);
wmove (dialog, box_y, box_x);
scroll =
scroll <
box_width - 1 ? 0 : scroll -
(box_width - 1);
wmove(dialog, box_y, box_x);
for (i = 0; i < box_width; i++)
waddch (dialog, instr[scroll + input_x + i] ?
instr[scroll + input_x + i] : ' ');
input_x = strlen (instr) - scroll;
waddch(dialog,
instr[scroll +
input_x +
i] ?
instr[scroll +
input_x +
i] : ' ');
input_x =
strlen(instr) - scroll;
} else
input_x--;
instr[scroll + input_x] = '\0';
mvwaddch (dialog, box_y, input_x + box_x, ' ');
wmove (dialog, box_y, input_x + box_x);
wrefresh (dialog);
mvwaddch(dialog, box_y, input_x + box_x,
' ');
wmove(dialog, box_y, input_x + box_x);
wrefresh(dialog);
}
continue;
default:
if (key < 0x100 && isprint (key)) {
if (key < 0x100 && isprint(key)) {
if (scroll + input_x < MAX_LEN) {
wattrset (dialog, inputbox_attr);
wattrset(dialog, inputbox_attr);
instr[scroll + input_x] = key;
instr[scroll + input_x + 1] = '\0';
instr[scroll + input_x + 1] =
'\0';
if (input_x == box_width - 1) {
scroll++;
wmove (dialog, box_y, box_x);
for (i = 0; i < box_width - 1; i++)
waddch (dialog, instr[scroll + i]);
wmove(dialog, box_y,
box_x);
for (i = 0;
i < box_width - 1;
i++)
waddch(dialog,
instr
[scroll +
i]);
} else {
wmove (dialog, box_y, input_x++ + box_x);
waddch (dialog, key);
wmove(dialog, box_y,
input_x++ +
box_x);
waddch(dialog, key);
}
wrefresh (dialog);
wrefresh(dialog);
} else
flash (); /* Alarm user about overflow */
flash(); /* Alarm user about overflow */
continue;
}
}
......@@ -178,11 +194,11 @@ dialog_inputbox (const char *title, const char *prompt, int height, int width,
switch (key) {
case 'O':
case 'o':
delwin (dialog);
delwin(dialog);
return 0;
case 'H':
case 'h':
delwin (dialog);
delwin(dialog);
return 1;
case KEY_UP:
case KEY_LEFT:
......@@ -194,8 +210,8 @@ dialog_inputbox (const char *title, const char *prompt, int height, int width,
case 0:
button = -1; /* Indicates input box is selected */
print_buttons(dialog, height, width, 0);
wmove (dialog, box_y, box_x + input_x);
wrefresh (dialog);
wmove(dialog, box_y, box_x + input_x);
wrefresh(dialog);
break;
case 1:
button = 0; /* Indicates "OK" button is selected */
......@@ -218,14 +234,14 @@ dialog_inputbox (const char *title, const char *prompt, int height, int width,
case 1:
button = -1; /* Indicates input box is selected */
print_buttons(dialog, height, width, 0);
wmove (dialog, box_y, box_x + input_x);
wrefresh (dialog);
wmove(dialog, box_y, box_x + input_x);
wrefresh(dialog);
break;
}
break;
case ' ':
case '\n':
delwin (dialog);
delwin(dialog);
return (button == -1 ? 0 : button);
case 'X':
case 'x':
......@@ -235,6 +251,6 @@ dialog_inputbox (const char *title, const char *prompt, int height, int width,
}
}
delwin (dialog);
delwin(dialog);
return -1; /* ESC pressed */
}
......@@ -21,9 +21,9 @@
#include "dialog.h"
static void Usage (const char *name);
static void Usage(const char *name);
typedef int (jumperFn) (const char *title, int argc, const char * const * argv);
typedef int (jumperFn) (const char *title, int argc, const char *const *argv);
struct Mode {
char *name;
......@@ -34,13 +34,12 @@ struct Mode {
jumperFn j_menu, j_checklist, j_radiolist, j_yesno, j_textbox, j_inputbox;
jumperFn j_msgbox, j_infobox;
static struct Mode modes[] =
{
static struct Mode modes[] = {
{"--menu", 9, 0, 3, j_menu},
{"--checklist", 9, 0, 3, j_checklist},
{"--radiolist", 9, 0, 3, j_radiolist},
{"--yesno", 5,5,1, j_yesno},
{"--textbox", 5,5,1, j_textbox},
{"--yesno", 5, 5, 1, j_yesno},
{"--textbox", 5, 5, 1, j_textbox},
{"--inputbox", 5, 6, 1, j_inputbox},
{"--msgbox", 5, 5, 1, j_msgbox},
{"--infobox", 5, 5, 1, j_infobox},
......@@ -53,49 +52,48 @@ static struct Mode *modePtr;
#include <locale.h>
#endif
int
main (int argc, const char * const * argv)
int main(int argc, const char *const *argv)
{
int offset = 0, opt_clear = 0, end_common_opts = 0, retval;
const char *title = NULL;
#ifdef LOCALE
(void) setlocale (LC_ALL, "");
(void)setlocale(LC_ALL, "");
#endif
#ifdef TRACE
trace(TRACE_CALLS|TRACE_UPDATE);
trace(TRACE_CALLS | TRACE_UPDATE);
#endif
if (argc < 2) {
Usage (argv[0]);
exit (-1);
Usage(argv[0]);
exit(-1);
}
while (offset < argc - 1 && !end_common_opts) { /* Common options */
if (!strcmp (argv[offset + 1], "--title")) {
if (!strcmp(argv[offset + 1], "--title")) {
if (argc - offset < 3 || title != NULL) {
Usage (argv[0]);
exit (-1);
Usage(argv[0]);
exit(-1);
} else {
title = argv[offset + 2];
offset += 2;
}
} else if (!strcmp (argv[offset + 1], "--backtitle")) {
} else if (!strcmp(argv[offset + 1], "--backtitle")) {
if (backtitle != NULL) {
Usage (argv[0]);
exit (-1);
Usage(argv[0]);
exit(-1);
} else {
backtitle = argv[offset + 2];
offset += 2;
}
} else if (!strcmp (argv[offset + 1], "--clear")) {
} else if (!strcmp(argv[offset + 1], "--clear")) {
if (opt_clear) { /* Hey, "--clear" can't appear twice! */
Usage (argv[0]);
exit (-1);
Usage(argv[0]);
exit(-1);
} else if (argc == 2) { /* we only want to clear the screen */
init_dialog ();
refresh (); /* init_dialog() will clear the screen for us */
end_dialog ();
init_dialog();
refresh(); /* init_dialog() will clear the screen for us */
end_dialog();
return 0;
} else {
opt_clear = 1;
......@@ -106,43 +104,40 @@ main (int argc, const char * const * argv)
}
if (argc - 1 == offset) { /* no more options */
Usage (argv[0]);
exit (-1);
Usage(argv[0]);
exit(-1);
}
/* use a table to look for the requested mode, to avoid code duplication */
for (modePtr = modes; modePtr->name; modePtr++) /* look for the mode */
if (!strcmp (argv[offset + 1], modePtr->name))
if (!strcmp(argv[offset + 1], modePtr->name))
break;
if (!modePtr->name)
Usage (argv[0]);
Usage(argv[0]);
if (argc - offset < modePtr->argmin)
Usage (argv[0]);
Usage(argv[0]);
if (modePtr->argmax && argc - offset > modePtr->argmax)
Usage (argv[0]);
Usage(argv[0]);
init_dialog ();
init_dialog();
retval = (*(modePtr->jumper)) (title, argc - offset, argv + offset);
if (opt_clear) { /* clear screen before exit */
attr_clear (stdscr, LINES, COLS, screen_attr);
refresh ();
attr_clear(stdscr, LINES, COLS, screen_attr);
refresh();
}
end_dialog();
exit (retval);
exit(retval);
}
/*
* Print program usage
*/
static void
Usage (const char *name)
static void Usage(const char *name)
{
fprintf (stderr, "\
fprintf(stderr, "\
\ndialog, by Savio Lam (lam836@cs.cuhk.hk).\
\n patched by Stuart Herbert (S.Herbert@shef.ac.uk)\
\n modified/gutted for use as a Linux kernel config tool by \
......@@ -162,65 +157,56 @@ Usage (const char *name)
\n --inputbox <text> <height> <width> [<init>]\
\n --yesno <text> <height> <width>\
\n", name, name);
exit (-1);
exit(-1);
}
/*
* These are the program jumpers
*/
int
j_menu (const char *t, int ac, const char * const * av)
int j_menu(const char *t, int ac, const char *const *av)
{
return dialog_menu (t, av[2], atoi (av[3]), atoi (av[4]),
atoi (av[5]), av[6], (ac - 6) / 2, av + 7);
return dialog_menu(t, av[2], atoi(av[3]), atoi(av[4]),
atoi(av[5]), av[6], (ac - 6) / 2, av + 7);
}
int
j_checklist (const char *t, int ac, const char * const * av)
int j_checklist(const char *t, int ac, const char *const *av)
{
return dialog_checklist (t, av[2], atoi (av[3]), atoi (av[4]),
atoi (av[5]), (ac - 6) / 3, av + 6, FLAG_CHECK);
return dialog_checklist(t, av[2], atoi(av[3]), atoi(av[4]),
atoi(av[5]), (ac - 6) / 3, av + 6, FLAG_CHECK);
}
int
j_radiolist (const char *t, int ac, const char * const * av)
int j_radiolist(const char *t, int ac, const char *const *av)
{
return dialog_checklist (t, av[2], atoi (av[3]), atoi (av[4]),
atoi (av[5]), (ac - 6) / 3, av + 6, FLAG_RADIO);
return dialog_checklist(t, av[2], atoi(av[3]), atoi(av[4]),
atoi(av[5]), (ac - 6) / 3, av + 6, FLAG_RADIO);
}
int
j_textbox (const char *t, int ac, const char * const * av)
int j_textbox(const char *t, int ac, const char *const *av)
{
return dialog_textbox (t, av[2], atoi (av[3]), atoi (av[4]));
return dialog_textbox(t, av[2], atoi(av[3]), atoi(av[4]));
}
int
j_yesno (const char *t, int ac, const char * const * av)
int j_yesno(const char *t, int ac, const char *const *av)
{
return dialog_yesno (t, av[2], atoi (av[3]), atoi (av[4]));
return dialog_yesno(t, av[2], atoi(av[3]), atoi(av[4]));
}
int
j_inputbox (const char *t, int ac, const char * const * av)
int j_inputbox(const char *t, int ac, const char *const *av)
{
int ret = dialog_inputbox (t, av[2], atoi (av[3]), atoi (av[4]),
ac == 6 ? av[5] : (char *) NULL);
int ret = dialog_inputbox(t, av[2], atoi(av[3]), atoi(av[4]),
ac == 6 ? av[5] : (char *)NULL);
if (ret == 0)
fprintf(stderr, dialog_input_result);
return ret;
}
int
j_msgbox (const char *t, int ac, const char * const * av)
int j_msgbox(const char *t, int ac, const char *const *av)
{
return dialog_msgbox (t, av[2], atoi (av[3]), atoi (av[4]), 1);
return dialog_msgbox(t, av[2], atoi(av[3]), atoi(av[4]), 1);
}
int
j_infobox (const char *t, int ac, const char * const * av)
int j_infobox(const char *t, int ac, const char *const *av)
{
return dialog_msgbox (t, av[2], atoi (av[3]), atoi (av[4]), 0);
return dialog_msgbox(t, av[2], atoi(av[3]), atoi(av[4]), 0);
}
This diff is collapsed.
......@@ -26,7 +26,7 @@
* if the parameter 'pause' is non-zero.
*/
int
dialog_msgbox (const char *title, const char *prompt, int height, int width,
dialog_msgbox(const char *title, const char *prompt, int height, int width,
int pause)
{
int i, x, y, key = 0;
......@@ -36,50 +36,49 @@ dialog_msgbox (const char *title, const char *prompt, int height, int width,
x = (COLS - width) / 2;
y = (LINES - height) / 2;
draw_shadow (stdscr, y, x, height, width);
draw_shadow(stdscr, y, x, height, width);
dialog = newwin (height, width, y, x);
keypad (dialog, TRUE);
dialog = newwin(height, width, y, x);
keypad(dialog, TRUE);
draw_box (dialog, 0, 0, height, width, dialog_attr, border_attr);
draw_box(dialog, 0, 0, height, width, dialog_attr, border_attr);
if (title != NULL && strlen(title) >= width-2 ) {
if (title != NULL && strlen(title) >= width - 2) {
/* truncate long title -- mec */
char * title2 = malloc(width-2+1);
memcpy( title2, title, width-2 );
title2[width-2] = '\0';
char *title2 = malloc(width - 2 + 1);
memcpy(title2, title, width - 2);
title2[width - 2] = '\0';
title = title2;
}
if (title != NULL) {
wattrset (dialog, title_attr);
mvwaddch (dialog, 0, (width - strlen(title))/2 - 1, ' ');
waddstr (dialog, (char *)title);
waddch (dialog, ' ');
wattrset(dialog, title_attr);
mvwaddch(dialog, 0, (width - strlen(title)) / 2 - 1, ' ');
waddstr(dialog, (char *)title);
waddch(dialog, ' ');
}
wattrset (dialog, dialog_attr);
print_autowrap (dialog, prompt, width - 2, 1, 2);
wattrset(dialog, dialog_attr);
print_autowrap(dialog, prompt, width - 2, 1, 2);
if (pause) {
wattrset (dialog, border_attr);
mvwaddch (dialog, height - 3, 0, ACS_LTEE);
wattrset(dialog, border_attr);
mvwaddch(dialog, height - 3, 0, ACS_LTEE);
for (i = 0; i < width - 2; i++)
waddch (dialog, ACS_HLINE);
wattrset (dialog, dialog_attr);
waddch (dialog, ACS_RTEE);
waddch(dialog, ACS_HLINE);
wattrset(dialog, dialog_attr);
waddch(dialog, ACS_RTEE);
print_button (dialog, " Ok ",
height - 2, width / 2 - 4, TRUE);
print_button(dialog, " Ok ", height - 2, width / 2 - 4, TRUE);
wrefresh (dialog);
wrefresh(dialog);
while (key != ESC && key != '\n' && key != ' ' &&
key != 'O' && key != 'o' && key != 'X' && key != 'x')
key = wgetch (dialog);
key = wgetch(dialog);
} else {
key = '\n';
wrefresh (dialog);
wrefresh(dialog);
}
delwin (dialog);
delwin(dialog);
return key == ESC ? -1 : 0;
}
This diff is collapsed.
......@@ -21,7 +21,6 @@
#include "dialog.h"
/* use colors by default? */
bool use_colors = 1;
......@@ -32,8 +31,7 @@ const char *dialog_result;
/*
* Attribute values, default is for mono display
*/
chtype attributes[] =
{
chtype attributes[] = {
A_NORMAL, /* screen_attr */
A_NORMAL, /* shadow_attr */
A_NORMAL, /* dialog_attr */
......@@ -65,14 +63,12 @@ chtype attributes[] =
A_BOLD /* darrow_attr */
};
#include "colors.h"
/*
* Table of color values
*/
int color_table[][3] =
{
int color_table[][3] = {
{SCREEN_FG, SCREEN_BG, SCREEN_HL},
{SHADOW_FG, SHADOW_BG, SHADOW_HL},
{DIALOG_FG, DIALOG_BG, DIALOG_HL},
......@@ -81,8 +77,10 @@ int color_table[][3] =
{BUTTON_ACTIVE_FG, BUTTON_ACTIVE_BG, BUTTON_ACTIVE_HL},
{BUTTON_INACTIVE_FG, BUTTON_INACTIVE_BG, BUTTON_INACTIVE_HL},
{BUTTON_KEY_ACTIVE_FG, BUTTON_KEY_ACTIVE_BG, BUTTON_KEY_ACTIVE_HL},
{BUTTON_KEY_INACTIVE_FG, BUTTON_KEY_INACTIVE_BG, BUTTON_KEY_INACTIVE_HL},
{BUTTON_LABEL_ACTIVE_FG, BUTTON_LABEL_ACTIVE_BG, BUTTON_LABEL_ACTIVE_HL},
{BUTTON_KEY_INACTIVE_FG, BUTTON_KEY_INACTIVE_BG,
BUTTON_KEY_INACTIVE_HL},
{BUTTON_LABEL_ACTIVE_FG, BUTTON_LABEL_ACTIVE_BG,
BUTTON_LABEL_ACTIVE_HL},
{BUTTON_LABEL_INACTIVE_FG, BUTTON_LABEL_INACTIVE_BG,
BUTTON_LABEL_INACTIVE_HL},
{INPUTBOX_FG, INPUTBOX_BG, INPUTBOX_HL},
......@@ -108,113 +106,106 @@ int color_table[][3] =
/*
* Set window to attribute 'attr'
*/
void
attr_clear (WINDOW * win, int height, int width, chtype attr)
void attr_clear(WINDOW * win, int height, int width, chtype attr)
{
int i, j;
wattrset (win, attr);
wattrset(win, attr);
for (i = 0; i < height; i++) {
wmove (win, i, 0);
wmove(win, i, 0);
for (j = 0; j < width; j++)
waddch (win, ' ');
waddch(win, ' ');
}
touchwin (win);
touchwin(win);
}
void dialog_clear (void)
void dialog_clear(void)
{
attr_clear (stdscr, LINES, COLS, screen_attr);
attr_clear(stdscr, LINES, COLS, screen_attr);
/* Display background title if it exists ... - SLH */
if (backtitle != NULL) {
int i;
wattrset (stdscr, screen_attr);
mvwaddstr (stdscr, 0, 1, (char *)backtitle);
wmove (stdscr, 1, 1);
wattrset(stdscr, screen_attr);
mvwaddstr(stdscr, 0, 1, (char *)backtitle);
wmove(stdscr, 1, 1);
for (i = 1; i < COLS - 1; i++)
waddch (stdscr, ACS_HLINE);
waddch(stdscr, ACS_HLINE);
}
wnoutrefresh (stdscr);
wnoutrefresh(stdscr);
}
/*
* Do some initialization for dialog
*/
void
init_dialog (void)
void init_dialog(void)
{
initscr (); /* Init curses */
keypad (stdscr, TRUE);
cbreak ();
noecho ();
initscr(); /* Init curses */
keypad(stdscr, TRUE);
cbreak();
noecho();
if (use_colors) /* Set up colors */
color_setup ();
color_setup();
dialog_clear ();
dialog_clear();
}
/*
* Setup for color display
*/
void
color_setup (void)
void color_setup(void)
{
int i;
if (has_colors ()) { /* Terminal supports color? */
start_color ();
if (has_colors()) { /* Terminal supports color? */
start_color();
/* Initialize color pairs */
for (i = 0; i < ATTRIBUTE_COUNT; i++)
init_pair (i + 1, color_table[i][0], color_table[i][1]);
init_pair(i + 1, color_table[i][0], color_table[i][1]);
/* Setup color attributes */
for (i = 0; i < ATTRIBUTE_COUNT; i++)
attributes[i] = C_ATTR (color_table[i][2], i + 1);
attributes[i] = C_ATTR(color_table[i][2], i + 1);
}
}
/*
* End using dialog functions.
*/
void
end_dialog (void)
void end_dialog(void)
{
endwin ();
endwin();
}
/*
* Print a string of text in a window, automatically wrap around to the
* next line if the string is too long to fit on one line. Newline
* characters '\n' are replaced by spaces. We start on a new line
* if there is no room for at least 4 nonblanks following a double-space.
*/
void
print_autowrap (WINDOW * win, const char *prompt, int width, int y, int x)
void print_autowrap(WINDOW * win, const char *prompt, int width, int y, int x)
{
int newl, cur_x, cur_y;
int i, prompt_len, room, wlen;
char tempstr[MAX_LEN + 1], *word, *sp, *sp2;
strcpy (tempstr, prompt);
strcpy(tempstr, prompt);
prompt_len = strlen(tempstr);
/*
* Remove newlines
*/
for(i=0; i<prompt_len; i++) {
if(tempstr[i] == '\n') tempstr[i] = ' ';
for (i = 0; i < prompt_len; i++) {
if (tempstr[i] == '\n')
tempstr[i] = ' ';
}
if (prompt_len <= width - x * 2) { /* If prompt is short */
wmove (win, y, (width - prompt_len) / 2);
waddstr (win, tempstr);
wmove(win, y, (width - prompt_len) / 2);
waddstr(win, tempstr);
} else {
cur_x = x;
cur_y = y;
......@@ -231,18 +222,20 @@ print_autowrap (WINDOW * win, const char *prompt, int width, int y, int x)
room = width - cur_x;
wlen = strlen(word);
if (wlen > room ||
(newl && wlen < 4 && sp && wlen+1+strlen(sp) > room
&& (!(sp2 = index(sp, ' ')) || wlen+1+(sp2-sp) > room))) {
(newl && wlen < 4 && sp
&& wlen + 1 + strlen(sp) > room
&& (!(sp2 = index(sp, ' '))
|| wlen + 1 + (sp2 - sp) > room))) {
cur_y++;
cur_x = x;
}
wmove (win, cur_y, cur_x);
waddstr (win, word);
getyx (win, cur_y, cur_x);
wmove(win, cur_y, cur_x);
waddstr(win, word);
getyx(win, cur_y, cur_x);
cur_x++;
if (sp && *sp == ' ') {
cur_x++; /* double space */
while (*++sp == ' ');
while (*++sp == ' ') ;
newl = 1;
} else
newl = 0;
......@@ -254,62 +247,61 @@ print_autowrap (WINDOW * win, const char *prompt, int width, int y, int x)
/*
* Print a button
*/
void
print_button (WINDOW * win, const char *label, int y, int x, int selected)
void print_button(WINDOW * win, const char *label, int y, int x, int selected)
{
int i, temp;
wmove (win, y, x);
wattrset (win, selected ? button_active_attr : button_inactive_attr);
waddstr (win, "<");
temp = strspn (label, " ");
wmove(win, y, x);
wattrset(win, selected ? button_active_attr : button_inactive_attr);
waddstr(win, "<");
temp = strspn(label, " ");
label += temp;
wattrset (win, selected ? button_label_active_attr
wattrset(win, selected ? button_label_active_attr
: button_label_inactive_attr);
for (i = 0; i < temp; i++)
waddch (win, ' ');
wattrset (win, selected ? button_key_active_attr
waddch(win, ' ');
wattrset(win, selected ? button_key_active_attr
: button_key_inactive_attr);
waddch (win, label[0]);
wattrset (win, selected ? button_label_active_attr
waddch(win, label[0]);
wattrset(win, selected ? button_label_active_attr
: button_label_inactive_attr);
waddstr (win, (char *)label + 1);
wattrset (win, selected ? button_active_attr : button_inactive_attr);
waddstr (win, ">");
wmove (win, y, x + temp + 1);
waddstr(win, (char *)label + 1);
wattrset(win, selected ? button_active_attr : button_inactive_attr);
waddstr(win, ">");
wmove(win, y, x + temp + 1);
}
/*
* Draw a rectangular box with line drawing characters
*/
void
draw_box (WINDOW * win, int y, int x, int height, int width,
draw_box(WINDOW * win, int y, int x, int height, int width,
chtype box, chtype border)
{
int i, j;
wattrset (win, 0);
wattrset(win, 0);
for (i = 0; i < height; i++) {
wmove (win, y + i, x);
wmove(win, y + i, x);
for (j = 0; j < width; j++)
if (!i && !j)
waddch (win, border | ACS_ULCORNER);
waddch(win, border | ACS_ULCORNER);
else if (i == height - 1 && !j)
waddch (win, border | ACS_LLCORNER);
waddch(win, border | ACS_LLCORNER);
else if (!i && j == width - 1)
waddch (win, box | ACS_URCORNER);
waddch(win, box | ACS_URCORNER);
else if (i == height - 1 && j == width - 1)
waddch (win, box | ACS_LRCORNER);
waddch(win, box | ACS_LRCORNER);
else if (!i)
waddch (win, border | ACS_HLINE);
waddch(win, border | ACS_HLINE);
else if (i == height - 1)
waddch (win, box | ACS_HLINE);
waddch(win, box | ACS_HLINE);
else if (!j)
waddch (win, border | ACS_VLINE);
waddch(win, border | ACS_VLINE);
else if (j == width - 1)
waddch (win, box | ACS_VLINE);
waddch(win, box | ACS_VLINE);
else
waddch (win, box | ' ');
waddch(win, box | ' ');
}
}
......@@ -317,41 +309,40 @@ draw_box (WINDOW * win, int y, int x, int height, int width,
* Draw shadows along the right and bottom edge to give a more 3D look
* to the boxes
*/
void
draw_shadow (WINDOW * win, int y, int x, int height, int width)
void draw_shadow(WINDOW * win, int y, int x, int height, int width)
{
int i;
if (has_colors ()) { /* Whether terminal supports color? */
wattrset (win, shadow_attr);
wmove (win, y + height, x + 2);
if (has_colors()) { /* Whether terminal supports color? */
wattrset(win, shadow_attr);
wmove(win, y + height, x + 2);
for (i = 0; i < width; i++)
waddch (win, winch (win) & A_CHARTEXT);
waddch(win, winch(win) & A_CHARTEXT);
for (i = y + 1; i < y + height + 1; i++) {
wmove (win, i, x + width);
waddch (win, winch (win) & A_CHARTEXT);
waddch (win, winch (win) & A_CHARTEXT);
wmove(win, i, x + width);
waddch(win, winch(win) & A_CHARTEXT);
waddch(win, winch(win) & A_CHARTEXT);
}
wnoutrefresh (win);
wnoutrefresh(win);
}
}
/*
* Return the position of the first alphabetic character in a string.
*/
int
first_alpha(const char *string, const char *exempt)
int first_alpha(const char *string, const char *exempt)
{
int i, in_paren=0, c;
int i, in_paren = 0, c;
for (i = 0; i < strlen(string); i++) {
c = tolower(string[i]);
if (strchr("<[(", c)) ++in_paren;
if (strchr(">])", c) && in_paren > 0) --in_paren;
if (strchr("<[(", c))
++in_paren;
if (strchr(">])", c) && in_paren > 0)
--in_paren;
if ((! in_paren) && isalpha(c) &&
strchr(exempt, c) == 0)
if ((!in_paren) && isalpha(c) && strchr(exempt, c) == 0)
return i;
}
......
......@@ -24,24 +24,22 @@
/*
* Display termination buttons
*/
static void
print_buttons(WINDOW *dialog, int height, int width, int selected)
static void print_buttons(WINDOW * dialog, int height, int width, int selected)
{
int x = width / 2 - 10;
int y = height - 2;
print_button (dialog, " Yes ", y, x, selected == 0);
print_button (dialog, " No ", y, x + 13, selected == 1);
print_button(dialog, " Yes ", y, x, selected == 0);
print_button(dialog, " No ", y, x + 13, selected == 1);
wmove(dialog, y, x+1 + 13*selected );
wrefresh (dialog);
wmove(dialog, y, x + 1 + 13 * selected);
wrefresh(dialog);
}
/*
* Display a dialog box with two buttons - Yes and No
*/
int
dialog_yesno (const char *title, const char *prompt, int height, int width)
int dialog_yesno(const char *title, const char *prompt, int height, int width)
{
int i, x, y, key = 0, button = 0;
WINDOW *dialog;
......@@ -50,49 +48,49 @@ dialog_yesno (const char *title, const char *prompt, int height, int width)
x = (COLS - width) / 2;
y = (LINES - height) / 2;
draw_shadow (stdscr, y, x, height, width);
draw_shadow(stdscr, y, x, height, width);
dialog = newwin (height, width, y, x);
keypad (dialog, TRUE);
dialog = newwin(height, width, y, x);
keypad(dialog, TRUE);
draw_box (dialog, 0, 0, height, width, dialog_attr, border_attr);
wattrset (dialog, border_attr);
mvwaddch (dialog, height-3, 0, ACS_LTEE);
draw_box(dialog, 0, 0, height, width, dialog_attr, border_attr);
wattrset(dialog, border_attr);
mvwaddch(dialog, height - 3, 0, ACS_LTEE);
for (i = 0; i < width - 2; i++)
waddch (dialog, ACS_HLINE);
wattrset (dialog, dialog_attr);
waddch (dialog, ACS_RTEE);
waddch(dialog, ACS_HLINE);
wattrset(dialog, dialog_attr);
waddch(dialog, ACS_RTEE);
if (title != NULL && strlen(title) >= width-2 ) {
if (title != NULL && strlen(title) >= width - 2) {
/* truncate long title -- mec */
char * title2 = malloc(width-2+1);
memcpy( title2, title, width-2 );
title2[width-2] = '\0';
char *title2 = malloc(width - 2 + 1);
memcpy(title2, title, width - 2);
title2[width - 2] = '\0';
title = title2;
}
if (title != NULL) {
wattrset (dialog, title_attr);
mvwaddch (dialog, 0, (width - strlen(title))/2 - 1, ' ');
waddstr (dialog, (char *)title);
waddch (dialog, ' ');
wattrset(dialog, title_attr);
mvwaddch(dialog, 0, (width - strlen(title)) / 2 - 1, ' ');
waddstr(dialog, (char *)title);
waddch(dialog, ' ');
}
wattrset (dialog, dialog_attr);
print_autowrap (dialog, prompt, width - 2, 1, 3);
wattrset(dialog, dialog_attr);
print_autowrap(dialog, prompt, width - 2, 1, 3);
print_buttons(dialog, height, width, 0);
while (key != ESC) {
key = wgetch (dialog);
key = wgetch(dialog);
switch (key) {
case 'Y':
case 'y':
delwin (dialog);
delwin(dialog);
return 0;
case 'N':
case 'n':
delwin (dialog);
delwin(dialog);
return 1;
case TAB:
......@@ -102,17 +100,17 @@ dialog_yesno (const char *title, const char *prompt, int height, int width)
? 1 : (button > 1 ? 0 : button);
print_buttons(dialog, height, width, button);
wrefresh (dialog);
wrefresh(dialog);
break;
case ' ':
case '\n':
delwin (dialog);
delwin(dialog);
return button;
case ESC:
break;
}
}
delwin (dialog);
delwin(dialog);
return -1; /* ESC pressed */
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment