diff options
author | Sam Ravnborg <sam@mars.ravnborg.org> | 2006-07-24 15:40:46 -0400 |
---|---|---|
committer | Sam Ravnborg <sam@neptun.ravnborg.org> | 2006-09-30 05:19:19 -0400 |
commit | 98e5a1579e7d34fe3803240750a1c48efcd9cb15 (patch) | |
tree | 433f6b354eb0bb6fa01f325237f9f4651bf5ac9f | |
parent | bf603625660b1742004bf86432ce3c210d14d4fd (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.c | 28 | ||||
-rw-r--r-- | scripts/kconfig/lxdialog/colors.h | 154 | ||||
-rw-r--r-- | scripts/kconfig/lxdialog/dialog.h | 82 | ||||
-rw-r--r-- | scripts/kconfig/lxdialog/inputbox.c | 18 | ||||
-rw-r--r-- | scripts/kconfig/lxdialog/lxdialog.c | 6 | ||||
-rw-r--r-- | scripts/kconfig/lxdialog/menubox.c | 28 | ||||
-rw-r--r-- | scripts/kconfig/lxdialog/msgbox.c | 9 | ||||
-rw-r--r-- | scripts/kconfig/lxdialog/textbox.c | 19 | ||||
-rw-r--r-- | scripts/kconfig/lxdialog/util.c | 259 | ||||
-rw-r--r-- | scripts/kconfig/lxdialog/yesno.c | 9 |
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 | |||
154 | extern 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] | 92 | struct 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 */ | 99 | struct 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 | */ |
128 | extern bool use_colors; | 135 | extern struct dialog_info dlg; |
129 | extern bool use_shadow; | ||
130 | |||
131 | extern chtype attributes[]; | ||
132 | |||
133 | extern const char *backtitle; | ||
134 | 136 | ||
135 | /* | 137 | /* |
136 | * Function prototypes | 138 | * Function prototypes |
137 | */ | 139 | */ |
138 | extern void create_rc(const char *filename); | ||
139 | extern int parse_rc(void); | ||
140 | |||
141 | void init_dialog(void); | 140 | void init_dialog(void); |
142 | void end_dialog(void); | 141 | void end_dialog(void); |
143 | void attr_clear(WINDOW * win, int height, int width, chtype attr); | 142 | void attr_clear(WINDOW * win, int height, int width, chtype attr); |
144 | void dialog_clear(void); | 143 | void dialog_clear(void); |
145 | void color_setup(void); | ||
146 | void print_autowrap(WINDOW * win, const char *prompt, int width, int y, int x); | 144 | void print_autowrap(WINDOW * win, const char *prompt, int width, int y, int x); |
147 | void print_button(WINDOW * win, const char *label, int y, int x, int selected); | 145 | void print_button(WINDOW * win, const char *label, int y, int x, int selected); |
148 | void print_title(WINDOW *dialog, const char *title, int width); | 146 | void 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? */ | 24 | struct dialog_info dlg; |
25 | bool use_colors = 1; | ||
26 | 25 | ||
27 | const char *backtitle = NULL; | 26 | static 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 | 60 | do { \ |
31 | */ | 61 | dlg.dialog.fg = (f); \ |
32 | chtype 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 */ | 66 | static 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 | |||
99 | static 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 | |||
111 | static 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 | */ |
69 | int color_table[][3] = { | 147 | static 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 | ||
120 | void dialog_clear(void) | 176 | void 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 | */ | ||
155 | void 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 | */ |
175 | void end_dialog(void) | 208 | void 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); |