Commit 98e5a157 authored by Sam Ravnborg's avatar Sam Ravnborg Committed by Sam Ravnborg

kconfig/lxdialog: refactor color support

Clean up and refactor color support. All color support are now
in util.c including color definitions.
In the process introduced a global variable named 'dlg' which is
used all over to set color - thats the reason why all files are changed.
Signed-off-by: default avatarSam Ravnborg <sam@ravnborg.org>
parent bf603625
...@@ -34,18 +34,19 @@ static void print_item(WINDOW * win, const char *item, int status, int choice, ...@@ -34,18 +34,19 @@ static void print_item(WINDOW * win, const char *item, int status, int choice,
int i; int i;
/* Clear 'residue' of last item */ /* Clear 'residue' of last item */
wattrset(win, menubox_attr); wattrset(win, dlg.menubox.atr);
wmove(win, choice, 0); wmove(win, choice, 0);
for (i = 0; i < list_width; i++) for (i = 0; i < list_width; i++)
waddch(win, ' '); waddch(win, ' ');
wmove(win, choice, check_x); wmove(win, choice, check_x);
wattrset(win, selected ? check_selected_attr : check_attr); wattrset(win, selected ? dlg.check_selected.atr
: dlg.check.atr);
wprintw(win, "(%c)", status ? 'X' : ' '); wprintw(win, "(%c)", status ? 'X' : ' ');
wattrset(win, selected ? tag_selected_attr : tag_attr); wattrset(win, selected ? dlg.tag_selected.atr : dlg.tag.atr);
mvwaddch(win, choice, item_x, item[0]); mvwaddch(win, choice, item_x, item[0]);
wattrset(win, selected ? item_selected_attr : item_attr); wattrset(win, selected ? dlg.item_selected.atr : dlg.item.atr);
waddstr(win, (char *)item + 1); waddstr(win, (char *)item + 1);
if (selected) { if (selected) {
wmove(win, choice, check_x + 1); wmove(win, choice, check_x + 1);
...@@ -62,11 +63,11 @@ static void print_arrows(WINDOW * win, int choice, int item_no, int scroll, ...@@ -62,11 +63,11 @@ static void print_arrows(WINDOW * win, int choice, int item_no, int scroll,
wmove(win, y, x); wmove(win, y, x);
if (scroll > 0) { if (scroll > 0) {
wattrset(win, uarrow_attr); wattrset(win, dlg.uarrow.atr);
waddch(win, ACS_UARROW); waddch(win, ACS_UARROW);
waddstr(win, "(-)"); waddstr(win, "(-)");
} else { } else {
wattrset(win, menubox_attr); wattrset(win, dlg.menubox.atr);
waddch(win, ACS_HLINE); waddch(win, ACS_HLINE);
waddch(win, ACS_HLINE); waddch(win, ACS_HLINE);
waddch(win, ACS_HLINE); waddch(win, ACS_HLINE);
...@@ -77,11 +78,11 @@ static void print_arrows(WINDOW * win, int choice, int item_no, int scroll, ...@@ -77,11 +78,11 @@ static void print_arrows(WINDOW * win, int choice, int item_no, int scroll,
wmove(win, y, x); wmove(win, y, x);
if ((height < item_no) && (scroll + choice < item_no - 1)) { if ((height < item_no) && (scroll + choice < item_no - 1)) {
wattrset(win, darrow_attr); wattrset(win, dlg.darrow.atr);
waddch(win, ACS_DARROW); waddch(win, ACS_DARROW);
waddstr(win, "(+)"); waddstr(win, "(+)");
} else { } else {
wattrset(win, menubox_border_attr); wattrset(win, dlg.menubox_border.atr);
waddch(win, ACS_HLINE); waddch(win, ACS_HLINE);
waddch(win, ACS_HLINE); waddch(win, ACS_HLINE);
waddch(win, ACS_HLINE); waddch(win, ACS_HLINE);
...@@ -145,17 +146,18 @@ int dialog_checklist(const char *title, const char *prompt, int height, ...@@ -145,17 +146,18 @@ int dialog_checklist(const char *title, const char *prompt, int height,
dialog = newwin(height, width, y, x); dialog = newwin(height, width, y, x);
keypad(dialog, TRUE); keypad(dialog, TRUE);
draw_box(dialog, 0, 0, height, width, dialog_attr, border_attr); draw_box(dialog, 0, 0, height, width,
wattrset(dialog, border_attr); dlg.dialog.atr, dlg.border.atr);
wattrset(dialog, dlg.border.atr);
mvwaddch(dialog, height - 3, 0, ACS_LTEE); mvwaddch(dialog, height - 3, 0, ACS_LTEE);
for (i = 0; i < width - 2; i++) for (i = 0; i < width - 2; i++)
waddch(dialog, ACS_HLINE); waddch(dialog, ACS_HLINE);
wattrset(dialog, dialog_attr); wattrset(dialog, dlg.dialog.atr);
waddch(dialog, ACS_RTEE); waddch(dialog, ACS_RTEE);
print_title(dialog, title, width); print_title(dialog, title, width);
wattrset(dialog, dialog_attr); wattrset(dialog, dlg.dialog.atr);
print_autowrap(dialog, prompt, width - 2, 1, 3); print_autowrap(dialog, prompt, width - 2, 1, 3);
list_width = width - 6; list_width = width - 6;
...@@ -170,7 +172,7 @@ int dialog_checklist(const char *title, const char *prompt, int height, ...@@ -170,7 +172,7 @@ int dialog_checklist(const char *title, const char *prompt, int height,
/* draw a box around the list items */ /* draw a box around the list items */
draw_box(dialog, box_y, box_x, list_height + 2, list_width + 2, draw_box(dialog, box_y, box_x, list_height + 2, list_width + 2,
menubox_border_attr, menubox_attr); dlg.menubox_border.atr, dlg.menubox.atr);
/* Find length of longest item in order to center checklist */ /* Find length of longest item in order to center checklist */
check_x = 0; check_x = 0;
......
/*
* colors.h -- color attribute definitions
*
* AUTHOR: Savio Lam (lam836@cs.cuhk.hk)
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
/*
* Default color definitions
*
* *_FG = foreground
* *_BG = background
* *_HL = highlight?
*/
#define SCREEN_FG COLOR_CYAN
#define SCREEN_BG COLOR_BLUE
#define SCREEN_HL TRUE
#define SHADOW_FG COLOR_BLACK
#define SHADOW_BG COLOR_BLACK
#define SHADOW_HL TRUE
#define DIALOG_FG COLOR_BLACK
#define DIALOG_BG COLOR_WHITE
#define DIALOG_HL FALSE
#define TITLE_FG COLOR_YELLOW
#define TITLE_BG COLOR_WHITE
#define TITLE_HL TRUE
#define BORDER_FG COLOR_WHITE
#define BORDER_BG COLOR_WHITE
#define BORDER_HL TRUE
#define BUTTON_ACTIVE_FG COLOR_WHITE
#define BUTTON_ACTIVE_BG COLOR_BLUE
#define BUTTON_ACTIVE_HL TRUE
#define BUTTON_INACTIVE_FG COLOR_BLACK
#define BUTTON_INACTIVE_BG COLOR_WHITE
#define BUTTON_INACTIVE_HL FALSE
#define BUTTON_KEY_ACTIVE_FG COLOR_WHITE
#define BUTTON_KEY_ACTIVE_BG COLOR_BLUE
#define BUTTON_KEY_ACTIVE_HL TRUE
#define BUTTON_KEY_INACTIVE_FG COLOR_RED
#define BUTTON_KEY_INACTIVE_BG COLOR_WHITE
#define BUTTON_KEY_INACTIVE_HL FALSE
#define BUTTON_LABEL_ACTIVE_FG COLOR_YELLOW
#define BUTTON_LABEL_ACTIVE_BG COLOR_BLUE
#define BUTTON_LABEL_ACTIVE_HL TRUE
#define BUTTON_LABEL_INACTIVE_FG COLOR_BLACK
#define BUTTON_LABEL_INACTIVE_BG COLOR_WHITE
#define BUTTON_LABEL_INACTIVE_HL TRUE
#define INPUTBOX_FG COLOR_BLACK
#define INPUTBOX_BG COLOR_WHITE
#define INPUTBOX_HL FALSE
#define INPUTBOX_BORDER_FG COLOR_BLACK
#define INPUTBOX_BORDER_BG COLOR_WHITE
#define INPUTBOX_BORDER_HL FALSE
#define SEARCHBOX_FG COLOR_BLACK
#define SEARCHBOX_BG COLOR_WHITE
#define SEARCHBOX_HL FALSE
#define SEARCHBOX_TITLE_FG COLOR_YELLOW
#define SEARCHBOX_TITLE_BG COLOR_WHITE
#define SEARCHBOX_TITLE_HL TRUE
#define SEARCHBOX_BORDER_FG COLOR_WHITE
#define SEARCHBOX_BORDER_BG COLOR_WHITE
#define SEARCHBOX_BORDER_HL TRUE
#define POSITION_INDICATOR_FG COLOR_YELLOW
#define POSITION_INDICATOR_BG COLOR_WHITE
#define POSITION_INDICATOR_HL TRUE
#define MENUBOX_FG COLOR_BLACK
#define MENUBOX_BG COLOR_WHITE
#define MENUBOX_HL FALSE
#define MENUBOX_BORDER_FG COLOR_WHITE
#define MENUBOX_BORDER_BG COLOR_WHITE
#define MENUBOX_BORDER_HL TRUE
#define ITEM_FG COLOR_BLACK
#define ITEM_BG COLOR_WHITE
#define ITEM_HL FALSE
#define ITEM_SELECTED_FG COLOR_WHITE
#define ITEM_SELECTED_BG COLOR_BLUE
#define ITEM_SELECTED_HL TRUE
#define TAG_FG COLOR_YELLOW
#define TAG_BG COLOR_WHITE
#define TAG_HL TRUE
#define TAG_SELECTED_FG COLOR_YELLOW
#define TAG_SELECTED_BG COLOR_BLUE
#define TAG_SELECTED_HL TRUE
#define TAG_KEY_FG COLOR_YELLOW
#define TAG_KEY_BG COLOR_WHITE
#define TAG_KEY_HL TRUE
#define TAG_KEY_SELECTED_FG COLOR_YELLOW
#define TAG_KEY_SELECTED_BG COLOR_BLUE
#define TAG_KEY_SELECTED_HL TRUE
#define CHECK_FG COLOR_BLACK
#define CHECK_BG COLOR_WHITE
#define CHECK_HL FALSE
#define CHECK_SELECTED_FG COLOR_WHITE
#define CHECK_SELECTED_BG COLOR_BLUE
#define CHECK_SELECTED_HL TRUE
#define UARROW_FG COLOR_GREEN
#define UARROW_BG COLOR_WHITE
#define UARROW_HL TRUE
#define DARROW_FG COLOR_GREEN
#define DARROW_BG COLOR_WHITE
#define DARROW_HL TRUE
/* End of default color definitions */
#define C_ATTR(x,y) ((x ? A_BOLD : 0) | COLOR_PAIR((y)))
#define COLOR_NAME_LEN 10
#define COLOR_COUNT 8
/*
* Global variables
*/
extern int color_table[][3];
...@@ -87,62 +87,60 @@ ...@@ -87,62 +87,60 @@
#endif #endif
/* /*
* Attribute names * Color definitions
*/ */
#define screen_attr attributes[0] struct dialog_color {
#define shadow_attr attributes[1] chtype atr; /* Color attribute */
#define dialog_attr attributes[2] int fg; /* foreground */
#define title_attr attributes[3] int bg; /* background */
#define border_attr attributes[4] int hl; /* highlight this item */
#define button_active_attr attributes[5] };
#define button_inactive_attr attributes[6]
#define button_key_active_attr attributes[7]
#define button_key_inactive_attr attributes[8]
#define button_label_active_attr attributes[9]
#define button_label_inactive_attr attributes[10]
#define inputbox_attr attributes[11]
#define inputbox_border_attr attributes[12]
#define searchbox_attr attributes[13]
#define searchbox_title_attr attributes[14]
#define searchbox_border_attr attributes[15]
#define position_indicator_attr attributes[16]
#define menubox_attr attributes[17]
#define menubox_border_attr attributes[18]
#define item_attr attributes[19]
#define item_selected_attr attributes[20]
#define tag_attr attributes[21]
#define tag_selected_attr attributes[22]
#define tag_key_attr attributes[23]
#define tag_key_selected_attr attributes[24]
#define check_attr attributes[25]
#define check_selected_attr attributes[26]
#define uarrow_attr attributes[27]
#define darrow_attr attributes[28]
/* number of attributes */ struct dialog_info {
#define ATTRIBUTE_COUNT 29 const char *backtitle;
struct dialog_color screen;
struct dialog_color shadow;
struct dialog_color dialog;
struct dialog_color title;
struct dialog_color border;
struct dialog_color button_active;
struct dialog_color button_inactive;
struct dialog_color button_key_active;
struct dialog_color button_key_inactive;
struct dialog_color button_label_active;
struct dialog_color button_label_inactive;
struct dialog_color inputbox;
struct dialog_color inputbox_border;
struct dialog_color searchbox;
struct dialog_color searchbox_title;
struct dialog_color searchbox_border;
struct dialog_color position_indicator;
struct dialog_color menubox;
struct dialog_color menubox_border;
struct dialog_color item;
struct dialog_color item_selected;
struct dialog_color tag;
struct dialog_color tag_selected;
struct dialog_color tag_key;
struct dialog_color tag_key_selected;
struct dialog_color check;
struct dialog_color check_selected;
struct dialog_color uarrow;
struct dialog_color darrow;
};
/* /*
* Global variables * Global variables
*/ */
extern bool use_colors; extern struct dialog_info dlg;
extern bool use_shadow;
extern chtype attributes[];
extern const char *backtitle;
/* /*
* Function prototypes * Function prototypes
*/ */
extern void create_rc(const char *filename);
extern int parse_rc(void);
void init_dialog(void); void init_dialog(void);
void end_dialog(void); void end_dialog(void);
void attr_clear(WINDOW * win, int height, int width, chtype attr); void attr_clear(WINDOW * win, int height, int width, chtype attr);
void dialog_clear(void); void dialog_clear(void);
void color_setup(void);
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);
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);
void print_title(WINDOW *dialog, const char *title, int width); void print_title(WINDOW *dialog, const char *title, int width);
......
...@@ -58,17 +58,18 @@ int dialog_inputbox(const char *title, const char *prompt, int height, int width ...@@ -58,17 +58,18 @@ int dialog_inputbox(const char *title, const char *prompt, int height, int width
dialog = newwin(height, width, y, x); dialog = newwin(height, width, y, x);
keypad(dialog, TRUE); keypad(dialog, TRUE);
draw_box(dialog, 0, 0, height, width, dialog_attr, border_attr); draw_box(dialog, 0, 0, height, width,
wattrset(dialog, border_attr); dlg.dialog.atr, dlg.border.atr);
wattrset(dialog, dlg.border.atr);
mvwaddch(dialog, height - 3, 0, ACS_LTEE); mvwaddch(dialog, height - 3, 0, ACS_LTEE);
for (i = 0; i < width - 2; i++) for (i = 0; i < width - 2; i++)
waddch(dialog, ACS_HLINE); waddch(dialog, ACS_HLINE);
wattrset(dialog, dialog_attr); wattrset(dialog, dlg.dialog.atr);
waddch(dialog, ACS_RTEE); waddch(dialog, ACS_RTEE);
print_title(dialog, title, width); print_title(dialog, title, width);
wattrset(dialog, dialog_attr); wattrset(dialog, dlg.dialog.atr);
print_autowrap(dialog, prompt, width - 2, 1, 3); print_autowrap(dialog, prompt, width - 2, 1, 3);
/* Draw the input field box */ /* Draw the input field box */
...@@ -76,13 +77,14 @@ int dialog_inputbox(const char *title, const char *prompt, int height, int width ...@@ -76,13 +77,14 @@ int dialog_inputbox(const char *title, const char *prompt, int height, int width
getyx(dialog, y, x); getyx(dialog, y, x);
box_y = y + 2; box_y = y + 2;
box_x = (width - box_width) / 2; box_x = (width - box_width) / 2;
draw_box(dialog, y + 1, box_x - 1, 3, box_width + 2, border_attr, dialog_attr); draw_box(dialog, y + 1, box_x - 1, 3, box_width + 2,
dlg.border.atr, dlg.dialog.atr);
print_buttons(dialog, height, width, 0); print_buttons(dialog, height, width, 0);
/* Set up the initial value */ /* Set up the initial value */
wmove(dialog, box_y, box_x); wmove(dialog, box_y, box_x);
wattrset(dialog, inputbox_attr); wattrset(dialog, dlg.inputbox.atr);
if (!init) if (!init)
instr[0] = '\0'; instr[0] = '\0';
...@@ -120,7 +122,7 @@ int dialog_inputbox(const char *title, const char *prompt, int height, int width ...@@ -120,7 +122,7 @@ int dialog_inputbox(const char *title, const char *prompt, int height, int width
case KEY_BACKSPACE: case KEY_BACKSPACE:
case 127: case 127:
if (input_x || scroll) { if (input_x || scroll) {
wattrset(dialog, inputbox_attr); wattrset(dialog, dlg.inputbox.atr);
if (!input_x) { if (!input_x) {
scroll = scroll < box_width - 1 ? 0 : scroll - (box_width - 1); scroll = scroll < box_width - 1 ? 0 : scroll - (box_width - 1);
wmove(dialog, box_y, box_x); wmove(dialog, box_y, box_x);
...@@ -140,7 +142,7 @@ int dialog_inputbox(const char *title, const char *prompt, int height, int width ...@@ -140,7 +142,7 @@ int dialog_inputbox(const char *title, const char *prompt, int height, int width
default: default:
if (key < 0x100 && isprint(key)) { if (key < 0x100 && isprint(key)) {
if (scroll + input_x < MAX_LEN) { if (scroll + input_x < MAX_LEN) {
wattrset(dialog, inputbox_attr); wattrset(dialog, dlg.inputbox.atr);
instr[scroll + input_x] = key; instr[scroll + input_x] = key;
instr[scroll + input_x + 1] = '\0'; instr[scroll + input_x + 1] = '\0';
if (input_x == box_width - 1) { if (input_x == box_width - 1) {
......
...@@ -78,11 +78,11 @@ int main(int argc, const char *const *argv) ...@@ -78,11 +78,11 @@ int main(int argc, const char *const *argv)
offset += 2; offset += 2;
} }
} else if (!strcmp(argv[offset + 1], "--backtitle")) { } else if (!strcmp(argv[offset + 1], "--backtitle")) {
if (backtitle != NULL) { if (dlg.backtitle != NULL) {
Usage(argv[0]); Usage(argv[0]);
exit(-1); exit(-1);
} else { } else {
backtitle = argv[offset + 2]; dlg.backtitle = argv[offset + 2];
offset += 2; offset += 2;
} }
} else if (!strcmp(argv[offset + 1], "--clear")) { } else if (!strcmp(argv[offset + 1], "--clear")) {
...@@ -123,7 +123,7 @@ int main(int argc, const char *const *argv) ...@@ -123,7 +123,7 @@ int main(int argc, const char *const *argv)
retval = (*(modePtr->jumper)) (title, argc - offset, argv + offset); retval = (*(modePtr->jumper)) (title, argc - offset, argv + offset);
if (opt_clear) { /* clear screen before exit */ if (opt_clear) { /* clear screen before exit */
attr_clear(stdscr, LINES, COLS, screen_attr); attr_clear(stdscr, LINES, COLS, dlg.screen.atr);
refresh(); refresh();
} }
end_dialog(); end_dialog();
......
...@@ -74,7 +74,7 @@ static void do_print_item(WINDOW * win, const char *item, int choice, ...@@ -74,7 +74,7 @@ static void do_print_item(WINDOW * win, const char *item, int choice,
j = first_alpha(menu_item, "YyNnMmHh"); j = first_alpha(menu_item, "YyNnMmHh");
/* Clear 'residue' of last item */ /* Clear 'residue' of last item */
wattrset(win, menubox_attr); wattrset(win, dlg.menubox.atr);
wmove(win, choice, 0); wmove(win, choice, 0);
#if OLD_NCURSES #if OLD_NCURSES
{ {
...@@ -85,10 +85,11 @@ static void do_print_item(WINDOW * win, const char *item, int choice, ...@@ -85,10 +85,11 @@ static void do_print_item(WINDOW * win, const char *item, int choice,
#else #else
wclrtoeol(win); wclrtoeol(win);
#endif #endif
wattrset(win, selected ? item_selected_attr : item_attr); wattrset(win, selected ? dlg.item_selected.atr : dlg.item.atr);
mvwaddstr(win, choice, item_x, menu_item); mvwaddstr(win, choice, item_x, menu_item);
if (hotkey) { if (hotkey) {
wattrset(win, selected ? tag_key_selected_attr : tag_key_attr); wattrset(win, selected ? dlg.tag_key_selected.atr
: dlg.tag_key.atr);
mvwaddch(win, choice, item_x + j, menu_item[j]); mvwaddch(win, choice, item_x + j, menu_item[j]);
} }
if (selected) { if (selected) {
...@@ -117,11 +118,11 @@ static void print_arrows(WINDOW * win, int item_no, int scroll, int y, int x, ...@@ -117,11 +118,11 @@ static void print_arrows(WINDOW * win, int item_no, int scroll, int y, int x,
wmove(win, y, x); wmove(win, y, x);
if (scroll > 0) { if (scroll > 0) {
wattrset(win, uarrow_attr); wattrset(win, dlg.uarrow.atr);
waddch(win, ACS_UARROW); waddch(win, ACS_UARROW);
waddstr(win, "(-)"); waddstr(win, "(-)");
} else { } else {
wattrset(win, menubox_attr); wattrset(win, dlg.menubox.atr);
waddch(win, ACS_HLINE); waddch(win, ACS_HLINE);
waddch(win, ACS_HLINE); waddch(win, ACS_HLINE);
waddch(win, ACS_HLINE); waddch(win, ACS_HLINE);
...@@ -133,11 +134,11 @@ static void print_arrows(WINDOW * win, int item_no, int scroll, int y, int x, ...@@ -133,11 +134,11 @@ static void print_arrows(WINDOW * win, int item_no, int scroll, int y, int x,
wrefresh(win); wrefresh(win);
if ((height < item_no) && (scroll + height < item_no)) { if ((height < item_no) && (scroll + height < item_no)) {
wattrset(win, darrow_attr); wattrset(win, dlg.darrow.atr);
waddch(win, ACS_DARROW); waddch(win, ACS_DARROW);
waddstr(win, "(+)"); waddstr(win, "(+)");
} else { } else {
wattrset(win, menubox_border_attr); wattrset(win, dlg.menubox_border.atr);
waddch(win, ACS_HLINE); waddch(win, ACS_HLINE);
waddch(win, ACS_HLINE); waddch(win, ACS_HLINE);
waddch(win, ACS_HLINE); waddch(win, ACS_HLINE);
...@@ -199,18 +200,19 @@ int dialog_menu(const char *title, const char *prompt, int height, int width, ...@@ -199,18 +200,19 @@ int dialog_menu(const char *title, const char *prompt, int height, int width,
dialog = newwin(height, width, y, x); dialog = newwin(height, width, y, x);
keypad(dialog, TRUE); keypad(dialog, TRUE);
draw_box(dialog, 0, 0, height, width, dialog_attr, border_attr); draw_box(dialog, 0, 0, height, width,
wattrset(dialog, border_attr); dlg.dialog.atr, dlg.border.atr);
wattrset(dialog, dlg.border.atr);
mvwaddch(dialog, height - 3, 0, ACS_LTEE); mvwaddch(dialog, height - 3, 0, ACS_LTEE);
for (i = 0; i < width - 2; i++) for (i = 0; i < width - 2; i++)
waddch(dialog, ACS_HLINE); waddch(dialog, ACS_HLINE);
wattrset(dialog, dialog_attr); wattrset(dialog, dlg.dialog.atr);
wbkgdset(dialog, dialog_attr & A_COLOR); wbkgdset(dialog, dlg.dialog.atr & A_COLOR);
waddch(dialog, ACS_RTEE); waddch(dialog, ACS_RTEE);
print_title(dialog, title, width); print_title(dialog, title, width);
wattrset(dialog, dialog_attr); wattrset(dialog, dlg.dialog.atr);
print_autowrap(dialog, prompt, width - 2, 1, 3); print_autowrap(dialog, prompt, width - 2, 1, 3);
menu_width = width - 6; menu_width = width - 6;
...@@ -224,7 +226,7 @@ int dialog_menu(const char *title, const char *prompt, int height, int width, ...@@ -224,7 +226,7 @@ int dialog_menu(const char *title, const char *prompt, int height, int width,
/* draw a box around the menu items */ /* draw a box around the menu items */
draw_box(dialog, box_y, box_x, menu_height + 2, menu_width + 2, draw_box(dialog, box_y, box_x, menu_height + 2, menu_width + 2,
menubox_border_attr, menubox_attr); dlg.menubox_border.atr, dlg.menubox.atr);
item_x = (menu_width - 70) / 2; item_x = (menu_width - 70) / 2;
......
...@@ -40,19 +40,20 @@ int dialog_msgbox(const char *title, const char *prompt, int height, int width, ...@@ -40,19 +40,20 @@ int dialog_msgbox(const char *title, const char *prompt, int height, int width,
dialog = newwin(height, width, y, x); dialog = newwin(height, width, y, x);
keypad(dialog, TRUE); keypad(dialog, TRUE);
draw_box(dialog, 0, 0, height, width, dialog_attr, border_attr); draw_box(dialog, 0, 0, height, width,
dlg.dialog.atr, dlg.border.atr);
print_title(dialog, title, width); print_title(dialog, title, width);
wattrset(dialog, dialog_attr); wattrset(dialog, dlg.dialog.atr);
print_autowrap(dialog, prompt, width - 2, 1, 2); print_autowrap(dialog, prompt, width - 2, 1, 2);
if (pause) { if (pause) {
wattrset(dialog, border_attr); wattrset(dialog, dlg.border.atr);
mvwaddch(dialog, height - 3, 0, ACS_LTEE); mvwaddch(dialog, height - 3, 0, ACS_LTEE);
for (i = 0; i < width - 2; i++) for (i = 0; i < width - 2; i++)
waddch(dialog, ACS_HLINE); waddch(dialog, ACS_HLINE);
wattrset(dialog, dialog_attr); wattrset(dialog, dlg.dialog.atr);
waddch(dialog, ACS_RTEE); waddch(dialog, ACS_RTEE);
print_button(dialog, " Ok ", height - 2, width / 2 - 4, TRUE); print_button(dialog, " Ok ", height - 2, width / 2 - 4, TRUE);
......
...@@ -87,20 +87,21 @@ int dialog_textbox(const char *title, const char *file, int height, int width) ...@@ -87,20 +87,21 @@ int dialog_textbox(const char *title, const char *file, int height, int width)
/* Create window for text region, used for scrolling text */ /* Create window for text region, used for scrolling text */
text = subwin(dialog, height - 4, width - 2, y + 1, x + 1); text = subwin(dialog, height - 4, width - 2, y + 1, x + 1);
wattrset(text, dialog_attr); wattrset(text, dlg.dialog.atr);
wbkgdset(text, dialog_attr & A_COLOR); wbkgdset(text, dlg.dialog.atr & A_COLOR);
keypad(text, TRUE); keypad(text, TRUE);
/* register the new window, along with its borders */ /* register the new window, along with its borders */
draw_box(dialog, 0, 0, height, width, dialog_attr, border_attr); draw_box(dialog, 0, 0, height, width,
dlg.dialog.atr, dlg.border.atr);
wattrset(dialog, border_attr); wattrset(dialog, dlg.border.atr);
mvwaddch(dialog, height - 3, 0, ACS_LTEE); mvwaddch(dialog, height - 3, 0, ACS_LTEE);
for (i = 0; i < width - 2; i++) for (i = 0; i < width - 2; i++)
waddch(dialog, ACS_HLINE); waddch(dialog, ACS_HLINE);
wattrset(dialog, dialog_attr); wattrset(dialog, dlg.dialog.atr);
wbkgdset(dialog, dialog_attr & A_COLOR); wbkgdset(dialog, dlg.dialog.atr & A_COLOR);
waddch(dialog, ACS_RTEE); waddch(dialog, ACS_RTEE);
print_title(dialog, title, width); print_title(dialog, title, width);
...@@ -110,7 +111,7 @@ int dialog_textbox(const char *title, const char *file, int height, int width) ...@@ -110,7 +111,7 @@ int dialog_textbox(const char *title, const char *file, int height, int width)
getyx(dialog, cur_y, cur_x); /* Save cursor position */ getyx(dialog, cur_y, cur_x); /* Save cursor position */
/* Print first page of text */ /* Print first page of text */
attr_clear(text, height - 4, width - 2, dialog_attr); attr_clear(text, height - 4, width - 2, dlg.dialog.atr);
print_page(text, height - 4, width - 2); print_page(text, height - 4, width - 2);
print_position(dialog, height, width); print_position(dialog, height, width);
wmove(dialog, cur_y, cur_x); /* Restore cursor position */ wmove(dialog, cur_y, cur_x); /* Restore cursor position */
...@@ -524,8 +525,8 @@ static void print_position(WINDOW * win, int height, int width) ...@@ -524,8 +525,8 @@ static void print_position(WINDOW * win, int height, int width)
fprintf(stderr, "\nError moving file pointer in print_position().\n"); fprintf(stderr, "\nError moving file pointer in print_position().\n");
exit(-1); exit(-1);
} }
wattrset(win, position_indicator_attr); wattrset(win, dlg.position_indicator.atr);
wbkgdset(win, position_indicator_attr & A_COLOR); wbkgdset(win, dlg.position_indicator.atr & A_COLOR);
percent = !file_size ? percent = !file_size ?
100 : ((fpos - bytes_read + page - buf) * 100) / file_size; 100 : ((fpos - bytes_read + page - buf) * 100) / file_size;
wmove(win, height - 3, width - 9); wmove(win, height - 3, width - 9);
......
This diff is collapsed.
...@@ -53,17 +53,18 @@ int dialog_yesno(const char *title, const char *prompt, int height, int width) ...@@ -53,17 +53,18 @@ int dialog_yesno(const char *title, const char *prompt, int height, int width)
dialog = newwin(height, width, y, x); dialog = newwin(height, width, y, x);
keypad(dialog, TRUE); keypad(dialog, TRUE);
draw_box(dialog, 0, 0, height, width, dialog_attr, border_attr); draw_box(dialog, 0, 0, height, width,
wattrset(dialog, border_attr); dlg.dialog.atr, dlg.border.atr);
wattrset(dialog, dlg.border.atr);
mvwaddch(dialog, height - 3, 0, ACS_LTEE); mvwaddch(dialog, height - 3, 0, ACS_LTEE);
for (i = 0; i < width - 2; i++) for (i = 0; i < width - 2; i++)
waddch(dialog, ACS_HLINE); waddch(dialog, ACS_HLINE);
wattrset(dialog, dialog_attr); wattrset(dialog, dlg.dialog.atr);
waddch(dialog, ACS_RTEE); waddch(dialog, ACS_RTEE);
print_title(dialog, title, width); print_title(dialog, title, width);
wattrset(dialog, dialog_attr); wattrset(dialog, dlg.dialog.atr);
print_autowrap(dialog, prompt, width - 2, 1, 3); print_autowrap(dialog, prompt, width - 2, 1, 3);
print_buttons(dialog, height, width, 0); print_buttons(dialog, height, width, 0);
......
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