aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSam Ravnborg <sam@mars.ravnborg.org>2006-07-24 15:40:46 -0400
committerSam Ravnborg <sam@neptun.ravnborg.org>2006-09-30 05:19:19 -0400
commit98e5a1579e7d34fe3803240750a1c48efcd9cb15 (patch)
tree433f6b354eb0bb6fa01f325237f9f4651bf5ac9f
parentbf603625660b1742004bf86432ce3c210d14d4fd (diff)
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: Sam Ravnborg <sam@ravnborg.org>
-rw-r--r--scripts/kconfig/lxdialog/checklist.c28
-rw-r--r--scripts/kconfig/lxdialog/colors.h154
-rw-r--r--scripts/kconfig/lxdialog/dialog.h82
-rw-r--r--scripts/kconfig/lxdialog/inputbox.c18
-rw-r--r--scripts/kconfig/lxdialog/lxdialog.c6
-rw-r--r--scripts/kconfig/lxdialog/menubox.c28
-rw-r--r--scripts/kconfig/lxdialog/msgbox.c9
-rw-r--r--scripts/kconfig/lxdialog/textbox.c19
-rw-r--r--scripts/kconfig/lxdialog/util.c259
-rw-r--r--scripts/kconfig/lxdialog/yesno.c9
10 files changed, 250 insertions, 362 deletions
diff --git a/scripts/kconfig/lxdialog/checklist.c b/scripts/kconfig/lxdialog/checklist.c
index 79886413b6d5..b90e888a2bc0 100644
--- a/scripts/kconfig/lxdialog/checklist.c
+++ b/scripts/kconfig/lxdialog/checklist.c
@@ -34,18 +34,19 @@ static void print_item(WINDOW * win, const char *item, int status, int choice,
34 int i; 34 int i;
35 35
36 /* Clear 'residue' of last item */ 36 /* Clear 'residue' of last item */
37 wattrset(win, menubox_attr); 37 wattrset(win, dlg.menubox.atr);
38 wmove(win, choice, 0); 38 wmove(win, choice, 0);
39 for (i = 0; i < list_width; i++) 39 for (i = 0; i < list_width; i++)
40 waddch(win, ' '); 40 waddch(win, ' ');
41 41
42 wmove(win, choice, check_x); 42 wmove(win, choice, check_x);
43 wattrset(win, selected ? check_selected_attr : check_attr); 43 wattrset(win, selected ? dlg.check_selected.atr
44 : dlg.check.atr);
44 wprintw(win, "(%c)", status ? 'X' : ' '); 45 wprintw(win, "(%c)", status ? 'X' : ' ');
45 46
46 wattrset(win, selected ? tag_selected_attr : tag_attr); 47 wattrset(win, selected ? dlg.tag_selected.atr : dlg.tag.atr);
47 mvwaddch(win, choice, item_x, item[0]); 48 mvwaddch(win, choice, item_x, item[0]);
48 wattrset(win, selected ? item_selected_attr : item_attr); 49 wattrset(win, selected ? dlg.item_selected.atr : dlg.item.atr);
49 waddstr(win, (char *)item + 1); 50 waddstr(win, (char *)item + 1);
50 if (selected) { 51 if (selected) {
51 wmove(win, choice, check_x + 1); 52 wmove(win, choice, check_x + 1);
@@ -62,11 +63,11 @@ static void print_arrows(WINDOW * win, int choice, int item_no, int scroll,
62 wmove(win, y, x); 63 wmove(win, y, x);
63 64
64 if (scroll > 0) { 65 if (scroll > 0) {
65 wattrset(win, uarrow_attr); 66 wattrset(win, dlg.uarrow.atr);
66 waddch(win, ACS_UARROW); 67 waddch(win, ACS_UARROW);
67 waddstr(win, "(-)"); 68 waddstr(win, "(-)");
68 } else { 69 } else {
69 wattrset(win, menubox_attr); 70 wattrset(win, dlg.menubox.atr);
70 waddch(win, ACS_HLINE); 71 waddch(win, ACS_HLINE);
71 waddch(win, ACS_HLINE); 72 waddch(win, ACS_HLINE);
72 waddch(win, ACS_HLINE); 73 waddch(win, ACS_HLINE);
@@ -77,11 +78,11 @@ static void print_arrows(WINDOW * win, int choice, int item_no, int scroll,
77 wmove(win, y, x); 78 wmove(win, y, x);
78 79
79 if ((height < item_no) && (scroll + choice < item_no - 1)) { 80 if ((height < item_no) && (scroll + choice < item_no - 1)) {
80 wattrset(win, darrow_attr); 81 wattrset(win, dlg.darrow.atr);
81 waddch(win, ACS_DARROW); 82 waddch(win, ACS_DARROW);
82 waddstr(win, "(+)"); 83 waddstr(win, "(+)");
83 } else { 84 } else {
84 wattrset(win, menubox_border_attr); 85 wattrset(win, dlg.menubox_border.atr);
85 waddch(win, ACS_HLINE); 86 waddch(win, ACS_HLINE);
86 waddch(win, ACS_HLINE); 87 waddch(win, ACS_HLINE);
87 waddch(win, ACS_HLINE); 88 waddch(win, ACS_HLINE);
@@ -145,17 +146,18 @@ int dialog_checklist(const char *title, const char *prompt, int height,
145 dialog = newwin(height, width, y, x); 146 dialog = newwin(height, width, y, x);
146 keypad(dialog, TRUE); 147 keypad(dialog, TRUE);
147 148
148 draw_box(dialog, 0, 0, height, width, dialog_attr, border_attr); 149 draw_box(dialog, 0, 0, height, width,
149 wattrset(dialog, border_attr); 150 dlg.dialog.atr, dlg.border.atr);
151 wattrset(dialog, dlg.border.atr);
150 mvwaddch(dialog, height - 3, 0, ACS_LTEE); 152 mvwaddch(dialog, height - 3, 0, ACS_LTEE);
151 for (i = 0; i < width - 2; i++) 153 for (i = 0; i < width - 2; i++)
152 waddch(dialog, ACS_HLINE); 154 waddch(dialog, ACS_HLINE);
153 wattrset(dialog, dialog_attr); 155 wattrset(dialog, dlg.dialog.atr);
154 waddch(dialog, ACS_RTEE); 156 waddch(dialog, ACS_RTEE);
155 157
156 print_title(dialog, title, width); 158 print_title(dialog, title, width);
157 159
158 wattrset(dialog, dialog_attr); 160 wattrset(dialog, dlg.dialog.atr);
159 print_autowrap(dialog, prompt, width - 2, 1, 3); 161 print_autowrap(dialog, prompt, width - 2, 1, 3);
160 162
161 list_width = width - 6; 163 list_width = width - 6;
@@ -170,7 +172,7 @@ int dialog_checklist(const char *title, const char *prompt, int height,
170 172
171 /* draw a box around the list items */ 173 /* draw a box around the list items */
172 draw_box(dialog, box_y, box_x, list_height + 2, list_width + 2, 174 draw_box(dialog, box_y, box_x, list_height + 2, list_width + 2,
173 menubox_border_attr, menubox_attr); 175 dlg.menubox_border.atr, dlg.menubox.atr);
174 176
175 /* Find length of longest item in order to center checklist */ 177 /* Find length of longest item in order to center checklist */
176 check_x = 0; 178 check_x = 0;
diff --git a/scripts/kconfig/lxdialog/colors.h b/scripts/kconfig/lxdialog/colors.h
deleted file mode 100644
index db071df12bbb..000000000000
--- a/scripts/kconfig/lxdialog/colors.h
+++ /dev/null
@@ -1,154 +0,0 @@
1/*
2 * colors.h -- color attribute definitions
3 *
4 * AUTHOR: Savio Lam (lam836@cs.cuhk.hk)
5 *
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public License
8 * as published by the Free Software Foundation; either version 2
9 * of the License, or (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19 */
20
21/*
22 * Default color definitions
23 *
24 * *_FG = foreground
25 * *_BG = background
26 * *_HL = highlight?
27 */
28#define SCREEN_FG COLOR_CYAN
29#define SCREEN_BG COLOR_BLUE
30#define SCREEN_HL TRUE
31
32#define SHADOW_FG COLOR_BLACK
33#define SHADOW_BG COLOR_BLACK
34#define SHADOW_HL TRUE
35
36#define DIALOG_FG COLOR_BLACK
37#define DIALOG_BG COLOR_WHITE
38#define DIALOG_HL FALSE
39
40#define TITLE_FG COLOR_YELLOW
41#define TITLE_BG COLOR_WHITE
42#define TITLE_HL TRUE
43
44#define BORDER_FG COLOR_WHITE
45#define BORDER_BG COLOR_WHITE
46#define BORDER_HL TRUE
47
48#define BUTTON_ACTIVE_FG COLOR_WHITE
49#define BUTTON_ACTIVE_BG COLOR_BLUE
50#define BUTTON_ACTIVE_HL TRUE
51
52#define BUTTON_INACTIVE_FG COLOR_BLACK
53#define BUTTON_INACTIVE_BG COLOR_WHITE
54#define BUTTON_INACTIVE_HL FALSE
55
56#define BUTTON_KEY_ACTIVE_FG COLOR_WHITE
57#define BUTTON_KEY_ACTIVE_BG COLOR_BLUE
58#define BUTTON_KEY_ACTIVE_HL TRUE
59
60#define BUTTON_KEY_INACTIVE_FG COLOR_RED
61#define BUTTON_KEY_INACTIVE_BG COLOR_WHITE
62#define BUTTON_KEY_INACTIVE_HL FALSE
63
64#define BUTTON_LABEL_ACTIVE_FG COLOR_YELLOW
65#define BUTTON_LABEL_ACTIVE_BG COLOR_BLUE
66#define BUTTON_LABEL_ACTIVE_HL TRUE
67
68#define BUTTON_LABEL_INACTIVE_FG COLOR_BLACK
69#define BUTTON_LABEL_INACTIVE_BG COLOR_WHITE
70#define BUTTON_LABEL_INACTIVE_HL TRUE
71
72#define INPUTBOX_FG COLOR_BLACK
73#define INPUTBOX_BG COLOR_WHITE
74#define INPUTBOX_HL FALSE
75
76#define INPUTBOX_BORDER_FG COLOR_BLACK
77#define INPUTBOX_BORDER_BG COLOR_WHITE
78#define INPUTBOX_BORDER_HL FALSE
79
80#define SEARCHBOX_FG COLOR_BLACK
81#define SEARCHBOX_BG COLOR_WHITE
82#define SEARCHBOX_HL FALSE
83
84#define SEARCHBOX_TITLE_FG COLOR_YELLOW
85#define SEARCHBOX_TITLE_BG COLOR_WHITE
86#define SEARCHBOX_TITLE_HL TRUE
87
88#define SEARCHBOX_BORDER_FG COLOR_WHITE
89#define SEARCHBOX_BORDER_BG COLOR_WHITE
90#define SEARCHBOX_BORDER_HL TRUE
91
92#define POSITION_INDICATOR_FG COLOR_YELLOW
93#define POSITION_INDICATOR_BG COLOR_WHITE
94#define POSITION_INDICATOR_HL TRUE
95
96#define MENUBOX_FG COLOR_BLACK
97#define MENUBOX_BG COLOR_WHITE
98#define MENUBOX_HL FALSE
99
100#define MENUBOX_BORDER_FG COLOR_WHITE
101#define MENUBOX_BORDER_BG COLOR_WHITE
102#define MENUBOX_BORDER_HL TRUE
103
104#define ITEM_FG COLOR_BLACK
105#define ITEM_BG COLOR_WHITE
106#define ITEM_HL FALSE
107
108#define ITEM_SELECTED_FG COLOR_WHITE
109#define ITEM_SELECTED_BG COLOR_BLUE
110#define ITEM_SELECTED_HL TRUE
111
112#define TAG_FG COLOR_YELLOW
113#define TAG_BG COLOR_WHITE
114#define TAG_HL TRUE
115
116#define TAG_SELECTED_FG COLOR_YELLOW
117#define TAG_SELECTED_BG COLOR_BLUE
118#define TAG_SELECTED_HL TRUE
119
120#define TAG_KEY_FG COLOR_YELLOW
121#define TAG_KEY_BG COLOR_WHITE
122#define TAG_KEY_HL TRUE
123
124#define TAG_KEY_SELECTED_FG COLOR_YELLOW
125#define TAG_KEY_SELECTED_BG COLOR_BLUE
126#define TAG_KEY_SELECTED_HL TRUE
127
128#define CHECK_FG COLOR_BLACK
129#define CHECK_BG COLOR_WHITE
130#define CHECK_HL FALSE
131
132#define CHECK_SELECTED_FG COLOR_WHITE
133#define CHECK_SELECTED_BG COLOR_BLUE
134#define CHECK_SELECTED_HL TRUE
135
136#define UARROW_FG COLOR_GREEN
137#define UARROW_BG COLOR_WHITE
138#define UARROW_HL TRUE
139
140#define DARROW_FG COLOR_GREEN
141#define DARROW_BG COLOR_WHITE
142#define DARROW_HL TRUE
143
144/* End of default color definitions */
145
146#define C_ATTR(x,y) ((x ? A_BOLD : 0) | COLOR_PAIR((y)))
147#define COLOR_NAME_LEN 10
148#define COLOR_COUNT 8
149
150/*
151 * Global variables
152 */
153
154extern int color_table[][3];
diff --git a/scripts/kconfig/lxdialog/dialog.h b/scripts/kconfig/lxdialog/dialog.h
index af3cf716e215..2f4c19d710b2 100644
--- a/scripts/kconfig/lxdialog/dialog.h
+++ b/scripts/kconfig/lxdialog/dialog.h
@@ -87,62 +87,60 @@
87#endif 87#endif
88 88
89/* 89/*
90 * Attribute names 90 * Color definitions
91 */ 91 */
92#define screen_attr attributes[0] 92struct dialog_color {
93#define shadow_attr attributes[1] 93 chtype atr; /* Color attribute */
94#define dialog_attr attributes[2] 94 int fg; /* foreground */
95#define title_attr attributes[3] 95 int bg; /* background */
96#define border_attr attributes[4] 96 int hl; /* highlight this item */
97#define button_active_attr attributes[5] 97};
98#define button_inactive_attr attributes[6]
99#define button_key_active_attr attributes[7]
100#define button_key_inactive_attr attributes[8]
101#define button_label_active_attr attributes[9]
102#define button_label_inactive_attr attributes[10]
103#define inputbox_attr attributes[11]
104#define inputbox_border_attr attributes[12]
105#define searchbox_attr attributes[13]
106#define searchbox_title_attr attributes[14]
107#define searchbox_border_attr attributes[15]
108#define position_indicator_attr attributes[16]
109#define menubox_attr attributes[17]
110#define menubox_border_attr attributes[18]
111#define item_attr attributes[19]
112#define item_selected_attr attributes[20]
113#define tag_attr attributes[21]
114#define tag_selected_attr attributes[22]
115#define tag_key_attr attributes[23]
116#define tag_key_selected_attr attributes[24]
117#define check_attr attributes[25]
118#define check_selected_attr attributes[26]
119#define uarrow_attr attributes[27]
120#define darrow_attr attributes[28]
121 98
122/* number of attributes */ 99struct dialog_info {
123#define ATTRIBUTE_COUNT 29 100 const char *backtitle;
101 struct dialog_color screen;
102 struct dialog_color shadow;
103 struct dialog_color dialog;
104 struct dialog_color title;
105 struct dialog_color border;
106 struct dialog_color button_active;
107 struct dialog_color button_inactive;
108 struct dialog_color button_key_active;
109 struct dialog_color button_key_inactive;
110 struct dialog_color button_label_active;
111 struct dialog_color button_label_inactive;
112 struct dialog_color inputbox;
113 struct dialog_color inputbox_border;
114 struct dialog_color searchbox;
115 struct dialog_color searchbox_title;
116 struct dialog_color searchbox_border;
117 struct dialog_color position_indicator;
118 struct dialog_color menubox;
119 struct dialog_color menubox_border;
120 struct dialog_color item;
121 struct dialog_color item_selected;
122 struct dialog_color tag;
123 struct dialog_color tag_selected;
124 struct dialog_color tag_key;
125 struct dialog_color tag_key_selected;
126 struct dialog_color check;
127 struct dialog_color check_selected;
128 struct dialog_color uarrow;
129 struct dialog_color darrow;
130};
124 131
125/* 132/*
126 * Global variables 133 * Global variables
127 */ 134 */
128extern bool use_colors; 135extern struct dialog_info dlg;
129extern bool use_shadow;
130
131extern chtype attributes[];
132
133extern const char *backtitle;
134 136
135/* 137/*
136 * Function prototypes 138 * Function prototypes
137 */ 139 */
138extern void create_rc(const char *filename);
139extern int parse_rc(void);
140
141void init_dialog(void); 140void init_dialog(void);
142void end_dialog(void); 141void end_dialog(void);
143void attr_clear(WINDOW * win, int height, int width, chtype attr); 142void attr_clear(WINDOW * win, int height, int width, chtype attr);
144void dialog_clear(void); 143void dialog_clear(void);
145void color_setup(void);
146void print_autowrap(WINDOW * win, const char *prompt, int width, int y, int x); 144void print_autowrap(WINDOW * win, const char *prompt, int width, int y, int x);
147void print_button(WINDOW * win, const char *label, int y, int x, int selected); 145void print_button(WINDOW * win, const char *label, int y, int x, int selected);
148void print_title(WINDOW *dialog, const char *title, int width); 146void print_title(WINDOW *dialog, const char *title, int width);
diff --git a/scripts/kconfig/lxdialog/inputbox.c b/scripts/kconfig/lxdialog/inputbox.c
index 779503726b0a..f75b51f8e636 100644
--- a/scripts/kconfig/lxdialog/inputbox.c
+++ b/scripts/kconfig/lxdialog/inputbox.c
@@ -58,17 +58,18 @@ int dialog_inputbox(const char *title, const char *prompt, int height, int width
58 dialog = newwin(height, width, y, x); 58 dialog = newwin(height, width, y, x);
59 keypad(dialog, TRUE); 59 keypad(dialog, TRUE);
60 60
61 draw_box(dialog, 0, 0, height, width, dialog_attr, border_attr); 61 draw_box(dialog, 0, 0, height, width,
62 wattrset(dialog, border_attr); 62 dlg.dialog.atr, dlg.border.atr);
63 wattrset(dialog, dlg.border.atr);
63 mvwaddch(dialog, height - 3, 0, ACS_LTEE); 64 mvwaddch(dialog, height - 3, 0, ACS_LTEE);
64 for (i = 0; i < width - 2; i++) 65 for (i = 0; i < width - 2; i++)
65 waddch(dialog, ACS_HLINE); 66 waddch(dialog, ACS_HLINE);
66 wattrset(dialog, dialog_attr); 67 wattrset(dialog, dlg.dialog.atr);
67 waddch(dialog, ACS_RTEE); 68 waddch(dialog, ACS_RTEE);
68 69
69 print_title(dialog, title, width); 70 print_title(dialog, title, width);
70 71
71 wattrset(dialog, dialog_attr); 72 wattrset(dialog, dlg.dialog.atr);
72 print_autowrap(dialog, prompt, width - 2, 1, 3); 73 print_autowrap(dialog, prompt, width - 2, 1, 3);
73 74
74 /* Draw the input field box */ 75 /* Draw the input field box */
@@ -76,13 +77,14 @@ int dialog_inputbox(const char *title, const char *prompt, int height, int width
76 getyx(dialog, y, x); 77 getyx(dialog, y, x);
77 box_y = y + 2; 78 box_y = y + 2;
78 box_x = (width - box_width) / 2; 79 box_x = (width - box_width) / 2;
79 draw_box(dialog, y + 1, box_x - 1, 3, box_width + 2, border_attr, dialog_attr); 80 draw_box(dialog, y + 1, box_x - 1, 3, box_width + 2,
81 dlg.border.atr, dlg.dialog.atr);
80 82
81 print_buttons(dialog, height, width, 0); 83 print_buttons(dialog, height, width, 0);
82 84
83 /* Set up the initial value */ 85 /* Set up the initial value */
84 wmove(dialog, box_y, box_x); 86 wmove(dialog, box_y, box_x);
85 wattrset(dialog, inputbox_attr); 87 wattrset(dialog, dlg.inputbox.atr);
86 88
87 if (!init) 89 if (!init)
88 instr[0] = '\0'; 90 instr[0] = '\0';
@@ -120,7 +122,7 @@ int dialog_inputbox(const char *title, const char *prompt, int height, int width
120 case KEY_BACKSPACE: 122 case KEY_BACKSPACE:
121 case 127: 123 case 127:
122 if (input_x || scroll) { 124 if (input_x || scroll) {
123 wattrset(dialog, inputbox_attr); 125 wattrset(dialog, dlg.inputbox.atr);
124 if (!input_x) { 126 if (!input_x) {
125 scroll = scroll < box_width - 1 ? 0 : scroll - (box_width - 1); 127 scroll = scroll < box_width - 1 ? 0 : scroll - (box_width - 1);
126 wmove(dialog, box_y, box_x); 128 wmove(dialog, box_y, box_x);
@@ -140,7 +142,7 @@ int dialog_inputbox(const char *title, const char *prompt, int height, int width
140 default: 142 default:
141 if (key < 0x100 && isprint(key)) { 143 if (key < 0x100 && isprint(key)) {
142 if (scroll + input_x < MAX_LEN) { 144 if (scroll + input_x < MAX_LEN) {
143 wattrset(dialog, inputbox_attr); 145 wattrset(dialog, dlg.inputbox.atr);
144 instr[scroll + input_x] = key; 146 instr[scroll + input_x] = key;
145 instr[scroll + input_x + 1] = '\0'; 147 instr[scroll + input_x + 1] = '\0';
146 if (input_x == box_width - 1) { 148 if (input_x == box_width - 1) {
diff --git a/scripts/kconfig/lxdialog/lxdialog.c b/scripts/kconfig/lxdialog/lxdialog.c
index 79f6c5fb5cef..c264e024309e 100644
--- a/scripts/kconfig/lxdialog/lxdialog.c
+++ b/scripts/kconfig/lxdialog/lxdialog.c
@@ -78,11 +78,11 @@ int main(int argc, const char *const *argv)
78 offset += 2; 78 offset += 2;
79 } 79 }
80 } else if (!strcmp(argv[offset + 1], "--backtitle")) { 80 } else if (!strcmp(argv[offset + 1], "--backtitle")) {
81 if (backtitle != NULL) { 81 if (dlg.backtitle != NULL) {
82 Usage(argv[0]); 82 Usage(argv[0]);
83 exit(-1); 83 exit(-1);
84 } else { 84 } else {
85 backtitle = argv[offset + 2]; 85 dlg.backtitle = argv[offset + 2];
86 offset += 2; 86 offset += 2;
87 } 87 }
88 } else if (!strcmp(argv[offset + 1], "--clear")) { 88 } else if (!strcmp(argv[offset + 1], "--clear")) {
@@ -123,7 +123,7 @@ int main(int argc, const char *const *argv)
123 retval = (*(modePtr->jumper)) (title, argc - offset, argv + offset); 123 retval = (*(modePtr->jumper)) (title, argc - offset, argv + offset);
124 124
125 if (opt_clear) { /* clear screen before exit */ 125 if (opt_clear) { /* clear screen before exit */
126 attr_clear(stdscr, LINES, COLS, screen_attr); 126 attr_clear(stdscr, LINES, COLS, dlg.screen.atr);
127 refresh(); 127 refresh();
128 } 128 }
129 end_dialog(); 129 end_dialog();
diff --git a/scripts/kconfig/lxdialog/menubox.c b/scripts/kconfig/lxdialog/menubox.c
index bf8052f4fd4a..ff991db827bd 100644
--- a/scripts/kconfig/lxdialog/menubox.c
+++ b/scripts/kconfig/lxdialog/menubox.c
@@ -74,7 +74,7 @@ static void do_print_item(WINDOW * win, const char *item, int choice,
74 j = first_alpha(menu_item, "YyNnMmHh"); 74 j = first_alpha(menu_item, "YyNnMmHh");
75 75
76 /* Clear 'residue' of last item */ 76 /* Clear 'residue' of last item */
77 wattrset(win, menubox_attr); 77 wattrset(win, dlg.menubox.atr);
78 wmove(win, choice, 0); 78 wmove(win, choice, 0);
79#if OLD_NCURSES 79#if OLD_NCURSES
80 { 80 {
@@ -85,10 +85,11 @@ static void do_print_item(WINDOW * win, const char *item, int choice,
85#else 85#else
86 wclrtoeol(win); 86 wclrtoeol(win);
87#endif 87#endif
88 wattrset(win, selected ? item_selected_attr : item_attr); 88 wattrset(win, selected ? dlg.item_selected.atr : dlg.item.atr);
89 mvwaddstr(win, choice, item_x, menu_item); 89 mvwaddstr(win, choice, item_x, menu_item);
90 if (hotkey) { 90 if (hotkey) {
91 wattrset(win, selected ? tag_key_selected_attr : tag_key_attr); 91 wattrset(win, selected ? dlg.tag_key_selected.atr
92 : dlg.tag_key.atr);
92 mvwaddch(win, choice, item_x + j, menu_item[j]); 93 mvwaddch(win, choice, item_x + j, menu_item[j]);
93 } 94 }
94 if (selected) { 95 if (selected) {
@@ -117,11 +118,11 @@ static void print_arrows(WINDOW * win, int item_no, int scroll, int y, int x,
117 wmove(win, y, x); 118 wmove(win, y, x);
118 119
119 if (scroll > 0) { 120 if (scroll > 0) {
120 wattrset(win, uarrow_attr); 121 wattrset(win, dlg.uarrow.atr);
121 waddch(win, ACS_UARROW); 122 waddch(win, ACS_UARROW);
122 waddstr(win, "(-)"); 123 waddstr(win, "(-)");
123 } else { 124 } else {
124 wattrset(win, menubox_attr); 125 wattrset(win, dlg.menubox.atr);
125 waddch(win, ACS_HLINE); 126 waddch(win, ACS_HLINE);
126 waddch(win, ACS_HLINE); 127 waddch(win, ACS_HLINE);
127 waddch(win, ACS_HLINE); 128 waddch(win, ACS_HLINE);
@@ -133,11 +134,11 @@ static void print_arrows(WINDOW * win, int item_no, int scroll, int y, int x,
133 wrefresh(win); 134 wrefresh(win);
134 135
135 if ((height < item_no) && (scroll + height < item_no)) { 136 if ((height < item_no) && (scroll + height < item_no)) {
136 wattrset(win, darrow_attr); 137 wattrset(win, dlg.darrow.atr);
137 waddch(win, ACS_DARROW); 138 waddch(win, ACS_DARROW);
138 waddstr(win, "(+)"); 139 waddstr(win, "(+)");
139 } else { 140 } else {
140 wattrset(win, menubox_border_attr); 141 wattrset(win, dlg.menubox_border.atr);
141 waddch(win, ACS_HLINE); 142 waddch(win, ACS_HLINE);
142 waddch(win, ACS_HLINE); 143 waddch(win, ACS_HLINE);
143 waddch(win, ACS_HLINE); 144 waddch(win, ACS_HLINE);
@@ -199,18 +200,19 @@ int dialog_menu(const char *title, const char *prompt, int height, int width,
199 dialog = newwin(height, width, y, x); 200 dialog = newwin(height, width, y, x);
200 keypad(dialog, TRUE); 201 keypad(dialog, TRUE);
201 202
202 draw_box(dialog, 0, 0, height, width, dialog_attr, border_attr); 203 draw_box(dialog, 0, 0, height, width,
203 wattrset(dialog, border_attr); 204 dlg.dialog.atr, dlg.border.atr);
205 wattrset(dialog, dlg.border.atr);
204 mvwaddch(dialog, height - 3, 0, ACS_LTEE); 206 mvwaddch(dialog, height - 3, 0, ACS_LTEE);
205 for (i = 0; i < width - 2; i++) 207 for (i = 0; i < width - 2; i++)
206 waddch(dialog, ACS_HLINE); 208 waddch(dialog, ACS_HLINE);
207 wattrset(dialog, dialog_attr); 209 wattrset(dialog, dlg.dialog.atr);
208 wbkgdset(dialog, dialog_attr & A_COLOR); 210 wbkgdset(dialog, dlg.dialog.atr & A_COLOR);
209 waddch(dialog, ACS_RTEE); 211 waddch(dialog, ACS_RTEE);
210 212
211 print_title(dialog, title, width); 213 print_title(dialog, title, width);
212 214
213 wattrset(dialog, dialog_attr); 215 wattrset(dialog, dlg.dialog.atr);
214 print_autowrap(dialog, prompt, width - 2, 1, 3); 216 print_autowrap(dialog, prompt, width - 2, 1, 3);
215 217
216 menu_width = width - 6; 218 menu_width = width - 6;
@@ -224,7 +226,7 @@ int dialog_menu(const char *title, const char *prompt, int height, int width,
224 226
225 /* draw a box around the menu items */ 227 /* draw a box around the menu items */
226 draw_box(dialog, box_y, box_x, menu_height + 2, menu_width + 2, 228 draw_box(dialog, box_y, box_x, menu_height + 2, menu_width + 2,
227 menubox_border_attr, menubox_attr); 229 dlg.menubox_border.atr, dlg.menubox.atr);
228 230
229 item_x = (menu_width - 70) / 2; 231 item_x = (menu_width - 70) / 2;
230 232
diff --git a/scripts/kconfig/lxdialog/msgbox.c b/scripts/kconfig/lxdialog/msgbox.c
index 7323f5471f69..236759ff3f4e 100644
--- a/scripts/kconfig/lxdialog/msgbox.c
+++ b/scripts/kconfig/lxdialog/msgbox.c
@@ -40,19 +40,20 @@ int dialog_msgbox(const char *title, const char *prompt, int height, int width,
40 dialog = newwin(height, width, y, x); 40 dialog = newwin(height, width, y, x);
41 keypad(dialog, TRUE); 41 keypad(dialog, TRUE);
42 42
43 draw_box(dialog, 0, 0, height, width, dialog_attr, border_attr); 43 draw_box(dialog, 0, 0, height, width,
44 dlg.dialog.atr, dlg.border.atr);
44 45
45 print_title(dialog, title, width); 46 print_title(dialog, title, width);
46 47
47 wattrset(dialog, dialog_attr); 48 wattrset(dialog, dlg.dialog.atr);
48 print_autowrap(dialog, prompt, width - 2, 1, 2); 49 print_autowrap(dialog, prompt, width - 2, 1, 2);
49 50
50 if (pause) { 51 if (pause) {
51 wattrset(dialog, border_attr); 52 wattrset(dialog, dlg.border.atr);
52 mvwaddch(dialog, height - 3, 0, ACS_LTEE); 53 mvwaddch(dialog, height - 3, 0, ACS_LTEE);
53 for (i = 0; i < width - 2; i++) 54 for (i = 0; i < width - 2; i++)
54 waddch(dialog, ACS_HLINE); 55 waddch(dialog, ACS_HLINE);
55 wattrset(dialog, dialog_attr); 56 wattrset(dialog, dlg.dialog.atr);
56 waddch(dialog, ACS_RTEE); 57 waddch(dialog, ACS_RTEE);
57 58
58 print_button(dialog, " Ok ", height - 2, width / 2 - 4, TRUE); 59 print_button(dialog, " Ok ", height - 2, width / 2 - 4, TRUE);
diff --git a/scripts/kconfig/lxdialog/textbox.c b/scripts/kconfig/lxdialog/textbox.c
index 77848bb8e07f..336793b03954 100644
--- a/scripts/kconfig/lxdialog/textbox.c
+++ b/scripts/kconfig/lxdialog/textbox.c
@@ -87,20 +87,21 @@ int dialog_textbox(const char *title, const char *file, int height, int width)
87 87
88 /* Create window for text region, used for scrolling text */ 88 /* Create window for text region, used for scrolling text */
89 text = subwin(dialog, height - 4, width - 2, y + 1, x + 1); 89 text = subwin(dialog, height - 4, width - 2, y + 1, x + 1);
90 wattrset(text, dialog_attr); 90 wattrset(text, dlg.dialog.atr);
91 wbkgdset(text, dialog_attr & A_COLOR); 91 wbkgdset(text, dlg.dialog.atr & A_COLOR);
92 92
93 keypad(text, TRUE); 93 keypad(text, TRUE);
94 94
95 /* register the new window, along with its borders */ 95 /* register the new window, along with its borders */
96 draw_box(dialog, 0, 0, height, width, dialog_attr, border_attr); 96 draw_box(dialog, 0, 0, height, width,
97 dlg.dialog.atr, dlg.border.atr);
97 98
98 wattrset(dialog, border_attr); 99 wattrset(dialog, dlg.border.atr);
99 mvwaddch(dialog, height - 3, 0, ACS_LTEE); 100 mvwaddch(dialog, height - 3, 0, ACS_LTEE);
100 for (i = 0; i < width - 2; i++) 101 for (i = 0; i < width - 2; i++)
101 waddch(dialog, ACS_HLINE); 102 waddch(dialog, ACS_HLINE);
102 wattrset(dialog, dialog_attr); 103 wattrset(dialog, dlg.dialog.atr);
103 wbkgdset(dialog, dialog_attr & A_COLOR); 104 wbkgdset(dialog, dlg.dialog.atr & A_COLOR);
104 waddch(dialog, ACS_RTEE); 105 waddch(dialog, ACS_RTEE);
105 106
106 print_title(dialog, title, width); 107 print_title(dialog, title, width);
@@ -110,7 +111,7 @@ int dialog_textbox(const char *title, const char *file, int height, int width)
110 getyx(dialog, cur_y, cur_x); /* Save cursor position */ 111 getyx(dialog, cur_y, cur_x); /* Save cursor position */
111 112
112 /* Print first page of text */ 113 /* Print first page of text */
113 attr_clear(text, height - 4, width - 2, dialog_attr); 114 attr_clear(text, height - 4, width - 2, dlg.dialog.atr);
114 print_page(text, height - 4, width - 2); 115 print_page(text, height - 4, width - 2);
115 print_position(dialog, height, width); 116 print_position(dialog, height, width);
116 wmove(dialog, cur_y, cur_x); /* Restore cursor position */ 117 wmove(dialog, cur_y, cur_x); /* Restore cursor position */
@@ -524,8 +525,8 @@ static void print_position(WINDOW * win, int height, int width)
524 fprintf(stderr, "\nError moving file pointer in print_position().\n"); 525 fprintf(stderr, "\nError moving file pointer in print_position().\n");
525 exit(-1); 526 exit(-1);
526 } 527 }
527 wattrset(win, position_indicator_attr); 528 wattrset(win, dlg.position_indicator.atr);
528 wbkgdset(win, position_indicator_attr & A_COLOR); 529 wbkgdset(win, dlg.position_indicator.atr & A_COLOR);
529 percent = !file_size ? 530 percent = !file_size ?
530 100 : ((fpos - bytes_read + page - buf) * 100) / file_size; 531 100 : ((fpos - bytes_read + page - buf) * 100) / file_size;
531 wmove(win, height - 3, width - 9); 532 wmove(win, height - 3, width - 9);
diff --git a/scripts/kconfig/lxdialog/util.c b/scripts/kconfig/lxdialog/util.c
index f82cebb9ff06..08f98b1c4bb3 100644
--- a/scripts/kconfig/lxdialog/util.c
+++ b/scripts/kconfig/lxdialog/util.c
@@ -21,85 +21,141 @@
21 21
22#include "dialog.h" 22#include "dialog.h"
23 23
24/* use colors by default? */ 24struct dialog_info dlg;
25bool use_colors = 1;
26 25
27const char *backtitle = NULL; 26static void set_mono_theme(void)
27{
28 dlg.screen.atr = A_NORMAL;
29 dlg.shadow.atr = A_NORMAL;
30 dlg.dialog.atr = A_NORMAL;
31 dlg.title.atr = A_BOLD;
32 dlg.border.atr = A_NORMAL;
33 dlg.button_active.atr = A_REVERSE;
34 dlg.button_inactive.atr = A_DIM;
35 dlg.button_key_active.atr = A_REVERSE;
36 dlg.button_key_inactive.atr = A_BOLD;
37 dlg.button_label_active.atr = A_REVERSE;
38 dlg.button_label_inactive.atr = A_NORMAL;
39 dlg.inputbox.atr = A_NORMAL;
40 dlg.inputbox_border.atr = A_NORMAL;
41 dlg.searchbox.atr = A_NORMAL;
42 dlg.searchbox_title.atr = A_BOLD;
43 dlg.searchbox_border.atr = A_NORMAL;
44 dlg.position_indicator.atr = A_BOLD;
45 dlg.menubox.atr = A_NORMAL;
46 dlg.menubox_border.atr = A_NORMAL;
47 dlg.item.atr = A_NORMAL;
48 dlg.item_selected.atr = A_REVERSE;
49 dlg.tag.atr = A_BOLD;
50 dlg.tag_selected.atr = A_REVERSE;
51 dlg.tag_key.atr = A_BOLD;
52 dlg.tag_key_selected.atr = A_REVERSE;
53 dlg.check.atr = A_BOLD;
54 dlg.check_selected.atr = A_REVERSE;
55 dlg.uarrow.atr = A_BOLD;
56 dlg.darrow.atr = A_BOLD;
57}
28 58
29/* 59#define DLG_COLOR(dialog, f, b, h) \
30 * Attribute values, default is for mono display 60do { \
31 */ 61 dlg.dialog.fg = (f); \
32chtype attributes[] = { 62 dlg.dialog.bg = (b); \
33 A_NORMAL, /* screen_attr */ 63 dlg.dialog.hl = (h); \
34 A_NORMAL, /* shadow_attr */ 64} while (0)
35 A_NORMAL, /* dialog_attr */ 65
36 A_BOLD, /* title_attr */ 66static void set_classic_theme(void)
37 A_NORMAL, /* border_attr */ 67{
38 A_REVERSE, /* button_active_attr */ 68 DLG_COLOR(screen, COLOR_CYAN, COLOR_BLUE, true);
39 A_DIM, /* button_inactive_attr */ 69 DLG_COLOR(shadow, COLOR_BLACK, COLOR_BLACK, true);
40 A_REVERSE, /* button_key_active_attr */ 70 DLG_COLOR(dialog, COLOR_BLACK, COLOR_WHITE, false);
41 A_BOLD, /* button_key_inactive_attr */ 71 DLG_COLOR(title, COLOR_YELLOW, COLOR_WHITE, true);
42 A_REVERSE, /* button_label_active_attr */ 72 DLG_COLOR(border, COLOR_WHITE, COLOR_WHITE, true);
43 A_NORMAL, /* button_label_inactive_attr */ 73 DLG_COLOR(button_active, COLOR_WHITE, COLOR_BLUE, true);
44 A_NORMAL, /* inputbox_attr */ 74 DLG_COLOR(button_inactive, COLOR_BLACK, COLOR_WHITE, false);
45 A_NORMAL, /* inputbox_border_attr */ 75 DLG_COLOR(button_key_active, COLOR_WHITE, COLOR_BLUE, true);
46 A_NORMAL, /* searchbox_attr */ 76 DLG_COLOR(button_key_inactive, COLOR_RED, COLOR_WHITE, false);
47 A_BOLD, /* searchbox_title_attr */ 77 DLG_COLOR(button_label_active, COLOR_YELLOW, COLOR_BLUE, true);
48 A_NORMAL, /* searchbox_border_attr */ 78 DLG_COLOR(button_label_inactive, COLOR_BLACK, COLOR_WHITE, true);
49 A_BOLD, /* position_indicator_attr */ 79 DLG_COLOR(inputbox, COLOR_BLACK, COLOR_WHITE, false);
50 A_NORMAL, /* menubox_attr */ 80 DLG_COLOR(inputbox_border, COLOR_BLACK, COLOR_WHITE, false);
51 A_NORMAL, /* menubox_border_attr */ 81 DLG_COLOR(searchbox, COLOR_BLACK, COLOR_WHITE, false);
52 A_NORMAL, /* item_attr */ 82 DLG_COLOR(searchbox_title, COLOR_YELLOW, COLOR_WHITE, true);
53 A_REVERSE, /* item_selected_attr */ 83 DLG_COLOR(searchbox_border, COLOR_WHITE, COLOR_WHITE, true);
54 A_BOLD, /* tag_attr */ 84 DLG_COLOR(position_indicator, COLOR_YELLOW, COLOR_WHITE, true);
55 A_REVERSE, /* tag_selected_attr */ 85 DLG_COLOR(menubox, COLOR_BLACK, COLOR_WHITE, false);
56 A_BOLD, /* tag_key_attr */ 86 DLG_COLOR(menubox_border, COLOR_WHITE, COLOR_WHITE, true);
57 A_REVERSE, /* tag_key_selected_attr */ 87 DLG_COLOR(item, COLOR_BLACK, COLOR_WHITE, false);
58 A_BOLD, /* check_attr */ 88 DLG_COLOR(item_selected, COLOR_WHITE, COLOR_BLUE, true);
59 A_REVERSE, /* check_selected_attr */ 89 DLG_COLOR(tag, COLOR_YELLOW, COLOR_WHITE, true);
60 A_BOLD, /* uarrow_attr */ 90 DLG_COLOR(tag_selected, COLOR_YELLOW, COLOR_BLUE, true);
61 A_BOLD /* darrow_attr */ 91 DLG_COLOR(tag_key, COLOR_YELLOW, COLOR_WHITE, true);
62}; 92 DLG_COLOR(tag_key_selected, COLOR_YELLOW, COLOR_BLUE, true);
63 93 DLG_COLOR(check, COLOR_BLACK, COLOR_WHITE, false);
64#include "colors.h" 94 DLG_COLOR(check_selected, COLOR_WHITE, COLOR_BLUE, true);
95 DLG_COLOR(uarrow, COLOR_GREEN, COLOR_WHITE, true);
96 DLG_COLOR(darrow, COLOR_GREEN, COLOR_WHITE, true);
97}
98
99static void init_one_color(struct dialog_color *color)
100{
101 static int pair = 0;
102
103 pair++;
104 init_pair(pair, color->fg, color->bg);
105 if (color->hl)
106 color->atr = A_BOLD | COLOR_PAIR(pair);
107 else
108 color->atr = COLOR_PAIR(pair);
109}
110
111static void init_dialog_colors(void)
112{
113 init_one_color(&dlg.screen);
114 init_one_color(&dlg.shadow);
115 init_one_color(&dlg.dialog);
116 init_one_color(&dlg.title);
117 init_one_color(&dlg.border);
118 init_one_color(&dlg.button_active);
119 init_one_color(&dlg.button_inactive);
120 init_one_color(&dlg.button_key_active);
121 init_one_color(&dlg.button_key_inactive);
122 init_one_color(&dlg.button_label_active);
123 init_one_color(&dlg.button_label_inactive);
124 init_one_color(&dlg.inputbox);
125 init_one_color(&dlg.inputbox_border);
126 init_one_color(&dlg.searchbox);
127 init_one_color(&dlg.searchbox_title);
128 init_one_color(&dlg.searchbox_border);
129 init_one_color(&dlg.position_indicator);
130 init_one_color(&dlg.menubox);
131 init_one_color(&dlg.menubox_border);
132 init_one_color(&dlg.item);
133 init_one_color(&dlg.item_selected);
134 init_one_color(&dlg.tag);
135 init_one_color(&dlg.tag_selected);
136 init_one_color(&dlg.tag_key);
137 init_one_color(&dlg.tag_key_selected);
138 init_one_color(&dlg.check);
139 init_one_color(&dlg.check_selected);
140 init_one_color(&dlg.uarrow);
141 init_one_color(&dlg.darrow);
142}
65 143
66/* 144/*
67 * Table of color values 145 * Setup for color display
68 */ 146 */
69int color_table[][3] = { 147static void color_setup(void)
70 {SCREEN_FG, SCREEN_BG, SCREEN_HL}, 148{
71 {SHADOW_FG, SHADOW_BG, SHADOW_HL}, 149 if (has_colors()) { /* Terminal supports color? */
72 {DIALOG_FG, DIALOG_BG, DIALOG_HL}, 150 start_color();
73 {TITLE_FG, TITLE_BG, TITLE_HL}, 151 set_classic_theme();
74 {BORDER_FG, BORDER_BG, BORDER_HL}, 152 init_dialog_colors();
75 {BUTTON_ACTIVE_FG, BUTTON_ACTIVE_BG, BUTTON_ACTIVE_HL}, 153 }
76 {BUTTON_INACTIVE_FG, BUTTON_INACTIVE_BG, BUTTON_INACTIVE_HL}, 154 else
77 {BUTTON_KEY_ACTIVE_FG, BUTTON_KEY_ACTIVE_BG, BUTTON_KEY_ACTIVE_HL}, 155 {
78 {BUTTON_KEY_INACTIVE_FG, BUTTON_KEY_INACTIVE_BG, 156 set_mono_theme();
79 BUTTON_KEY_INACTIVE_HL}, 157 }
80 {BUTTON_LABEL_ACTIVE_FG, BUTTON_LABEL_ACTIVE_BG, 158}
81 BUTTON_LABEL_ACTIVE_HL},
82 {BUTTON_LABEL_INACTIVE_FG, BUTTON_LABEL_INACTIVE_BG,
83 BUTTON_LABEL_INACTIVE_HL},
84 {INPUTBOX_FG, INPUTBOX_BG, INPUTBOX_HL},
85 {INPUTBOX_BORDER_FG, INPUTBOX_BORDER_BG, INPUTBOX_BORDER_HL},
86 {SEARCHBOX_FG, SEARCHBOX_BG, SEARCHBOX_HL},
87 {SEARCHBOX_TITLE_FG, SEARCHBOX_TITLE_BG, SEARCHBOX_TITLE_HL},
88 {SEARCHBOX_BORDER_FG, SEARCHBOX_BORDER_BG, SEARCHBOX_BORDER_HL},
89 {POSITION_INDICATOR_FG, POSITION_INDICATOR_BG, POSITION_INDICATOR_HL},
90 {MENUBOX_FG, MENUBOX_BG, MENUBOX_HL},
91 {MENUBOX_BORDER_FG, MENUBOX_BORDER_BG, MENUBOX_BORDER_HL},
92 {ITEM_FG, ITEM_BG, ITEM_HL},
93 {ITEM_SELECTED_FG, ITEM_SELECTED_BG, ITEM_SELECTED_HL},
94 {TAG_FG, TAG_BG, TAG_HL},
95 {TAG_SELECTED_FG, TAG_SELECTED_BG, TAG_SELECTED_HL},
96 {TAG_KEY_FG, TAG_KEY_BG, TAG_KEY_HL},
97 {TAG_KEY_SELECTED_FG, TAG_KEY_SELECTED_BG, TAG_KEY_SELECTED_HL},
98 {CHECK_FG, CHECK_BG, CHECK_HL},
99 {CHECK_SELECTED_FG, CHECK_SELECTED_BG, CHECK_SELECTED_HL},
100 {UARROW_FG, UARROW_BG, UARROW_HL},
101 {DARROW_FG, DARROW_BG, DARROW_HL},
102}; /* color_table */
103 159
104/* 160/*
105 * Set window to attribute 'attr' 161 * Set window to attribute 'attr'
@@ -119,13 +175,13 @@ void attr_clear(WINDOW * win, int height, int width, chtype attr)
119 175
120void dialog_clear(void) 176void dialog_clear(void)
121{ 177{
122 attr_clear(stdscr, LINES, COLS, screen_attr); 178 attr_clear(stdscr, LINES, COLS, dlg.screen.atr);
123 /* Display background title if it exists ... - SLH */ 179 /* Display background title if it exists ... - SLH */
124 if (backtitle != NULL) { 180 if (dlg.backtitle != NULL) {
125 int i; 181 int i;
126 182
127 wattrset(stdscr, screen_attr); 183 wattrset(stdscr, dlg.screen.atr);
128 mvwaddstr(stdscr, 0, 1, (char *)backtitle); 184 mvwaddstr(stdscr, 0, 1, (char *)dlg.backtitle);
129 wmove(stdscr, 1, 1); 185 wmove(stdscr, 1, 1);
130 for (i = 1; i < COLS - 1; i++) 186 for (i = 1; i < COLS - 1; i++)
131 waddch(stdscr, ACS_HLINE); 187 waddch(stdscr, ACS_HLINE);
@@ -142,34 +198,11 @@ void init_dialog(void)
142 keypad(stdscr, TRUE); 198 keypad(stdscr, TRUE);
143 cbreak(); 199 cbreak();
144 noecho(); 200 noecho();
145 201 color_setup();
146 if (use_colors) /* Set up colors */
147 color_setup();
148
149 dialog_clear(); 202 dialog_clear();
150} 203}
151 204
152/* 205/*
153 * Setup for color display
154 */
155void color_setup(void)
156{
157 int i;
158
159 if (has_colors()) { /* Terminal supports color? */
160 start_color();
161
162 /* Initialize color pairs */
163 for (i = 0; i < ATTRIBUTE_COUNT; i++)
164 init_pair(i + 1, color_table[i][0], color_table[i][1]);
165
166 /* Setup color attributes */
167 for (i = 0; i < ATTRIBUTE_COUNT; i++)
168 attributes[i] = C_ATTR(color_table[i][2], i + 1);
169 }
170}
171
172/*
173 * End using dialog functions. 206 * End using dialog functions.
174 */ 207 */
175void end_dialog(void) 208void end_dialog(void)
@@ -184,7 +217,7 @@ void print_title(WINDOW *dialog, const char *title, int width)
184{ 217{
185 if (title) { 218 if (title) {
186 int tlen = MIN(width - 2, strlen(title)); 219 int tlen = MIN(width - 2, strlen(title));
187 wattrset(dialog, title_attr); 220 wattrset(dialog, dlg.title.atr);
188 mvwaddch(dialog, 0, (width - tlen) / 2 - 1, ' '); 221 mvwaddch(dialog, 0, (width - tlen) / 2 - 1, ' ');
189 mvwaddnstr(dialog, 0, (width - tlen)/2, title, tlen); 222 mvwaddnstr(dialog, 0, (width - tlen)/2, title, tlen);
190 waddch(dialog, ' '); 223 waddch(dialog, ' ');
@@ -264,21 +297,23 @@ void print_button(WINDOW * win, const char *label, int y, int x, int selected)
264 int i, temp; 297 int i, temp;
265 298
266 wmove(win, y, x); 299 wmove(win, y, x);
267 wattrset(win, selected ? button_active_attr : button_inactive_attr); 300 wattrset(win, selected ? dlg.button_active.atr
301 : dlg.button_inactive.atr);
268 waddstr(win, "<"); 302 waddstr(win, "<");
269 temp = strspn(label, " "); 303 temp = strspn(label, " ");
270 label += temp; 304 label += temp;
271 wattrset(win, selected ? button_label_active_attr 305 wattrset(win, selected ? dlg.button_label_active.atr
272 : button_label_inactive_attr); 306 : dlg.button_label_inactive.atr);
273 for (i = 0; i < temp; i++) 307 for (i = 0; i < temp; i++)
274 waddch(win, ' '); 308 waddch(win, ' ');
275 wattrset(win, selected ? button_key_active_attr 309 wattrset(win, selected ? dlg.button_key_active.atr
276 : button_key_inactive_attr); 310 : dlg.button_key_inactive.atr);
277 waddch(win, label[0]); 311 waddch(win, label[0]);
278 wattrset(win, selected ? button_label_active_attr 312 wattrset(win, selected ? dlg.button_label_active.atr
279 : button_label_inactive_attr); 313 : dlg.button_label_inactive.atr);
280 waddstr(win, (char *)label + 1); 314 waddstr(win, (char *)label + 1);
281 wattrset(win, selected ? button_active_attr : button_inactive_attr); 315 wattrset(win, selected ? dlg.button_active.atr
316 : dlg.button_inactive.atr);
282 waddstr(win, ">"); 317 waddstr(win, ">");
283 wmove(win, y, x + temp + 1); 318 wmove(win, y, x + temp + 1);
284} 319}
@@ -326,7 +361,7 @@ void draw_shadow(WINDOW * win, int y, int x, int height, int width)
326 int i; 361 int i;
327 362
328 if (has_colors()) { /* Whether terminal supports color? */ 363 if (has_colors()) { /* Whether terminal supports color? */
329 wattrset(win, shadow_attr); 364 wattrset(win, dlg.shadow.atr);
330 wmove(win, y + height, x + 2); 365 wmove(win, y + height, x + 2);
331 for (i = 0; i < width; i++) 366 for (i = 0; i < width; i++)
332 waddch(win, winch(win) & A_CHARTEXT); 367 waddch(win, winch(win) & A_CHARTEXT);
diff --git a/scripts/kconfig/lxdialog/yesno.c b/scripts/kconfig/lxdialog/yesno.c
index cb2568aae3ed..e938037c8020 100644
--- a/scripts/kconfig/lxdialog/yesno.c
+++ b/scripts/kconfig/lxdialog/yesno.c
@@ -53,17 +53,18 @@ int dialog_yesno(const char *title, const char *prompt, int height, int width)
53 dialog = newwin(height, width, y, x); 53 dialog = newwin(height, width, y, x);
54 keypad(dialog, TRUE); 54 keypad(dialog, TRUE);
55 55
56 draw_box(dialog, 0, 0, height, width, dialog_attr, border_attr); 56 draw_box(dialog, 0, 0, height, width,
57 wattrset(dialog, border_attr); 57 dlg.dialog.atr, dlg.border.atr);
58 wattrset(dialog, dlg.border.atr);
58 mvwaddch(dialog, height - 3, 0, ACS_LTEE); 59 mvwaddch(dialog, height - 3, 0, ACS_LTEE);
59 for (i = 0; i < width - 2; i++) 60 for (i = 0; i < width - 2; i++)
60 waddch(dialog, ACS_HLINE); 61 waddch(dialog, ACS_HLINE);
61 wattrset(dialog, dialog_attr); 62 wattrset(dialog, dlg.dialog.atr);
62 waddch(dialog, ACS_RTEE); 63 waddch(dialog, ACS_RTEE);
63 64
64 print_title(dialog, title, width); 65 print_title(dialog, title, width);
65 66
66 wattrset(dialog, dialog_attr); 67 wattrset(dialog, dlg.dialog.atr);
67 print_autowrap(dialog, prompt, width - 2, 1, 3); 68 print_autowrap(dialog, prompt, width - 2, 1, 3);
68 69
69 print_buttons(dialog, height, width, 0); 70 print_buttons(dialog, height, width, 0);