diff options
-rw-r--r-- | scripts/kconfig/lxdialog/checklist.c | 47 | ||||
-rw-r--r-- | scripts/kconfig/lxdialog/dialog.h | 9 | ||||
-rw-r--r-- | scripts/kconfig/lxdialog/lxdialog.c | 12 |
3 files changed, 17 insertions, 51 deletions
diff --git a/scripts/kconfig/lxdialog/checklist.c b/scripts/kconfig/lxdialog/checklist.c index 3fb681fb9632..db07ae73e051 100644 --- a/scripts/kconfig/lxdialog/checklist.c +++ b/scripts/kconfig/lxdialog/checklist.c | |||
@@ -23,7 +23,7 @@ | |||
23 | 23 | ||
24 | #include "dialog.h" | 24 | #include "dialog.h" |
25 | 25 | ||
26 | static int list_width, check_x, item_x, checkflag; | 26 | static int list_width, check_x, item_x; |
27 | 27 | ||
28 | /* | 28 | /* |
29 | * Print list item | 29 | * Print list item |
@@ -41,10 +41,7 @@ static void print_item(WINDOW * win, const char *item, int status, int choice, | |||
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 ? check_selected_attr : check_attr); |
44 | if (checkflag == FLAG_CHECK) | 44 | wprintw(win, "(%c)", status ? 'X' : ' '); |
45 | wprintw(win, "[%c]", status ? 'X' : ' '); | ||
46 | else | ||
47 | wprintw(win, "(%c)", status ? 'X' : ' '); | ||
48 | 45 | ||
49 | wattrset(win, selected ? tag_selected_attr : tag_attr); | 46 | wattrset(win, selected ? tag_selected_attr : tag_attr); |
50 | mvwaddch(win, choice, item_x, item[0]); | 47 | mvwaddch(win, choice, item_x, item[0]); |
@@ -109,18 +106,16 @@ static void print_buttons(WINDOW * dialog, int height, int width, int selected) | |||
109 | 106 | ||
110 | /* | 107 | /* |
111 | * Display a dialog box with a list of options that can be turned on or off | 108 | * Display a dialog box with a list of options that can be turned on or off |
112 | * The `flag' parameter is used to select between radiolist and checklist. | 109 | * in the style of radiolist (only one option turned on at a time). |
113 | */ | 110 | */ |
114 | int dialog_checklist(const char *title, const char *prompt, int height, | 111 | int dialog_checklist(const char *title, const char *prompt, int height, |
115 | int width, int list_height, int item_no, | 112 | int width, int list_height, int item_no, |
116 | const char *const *items, int flag) | 113 | const char *const *items) |
117 | { | 114 | { |
118 | int i, x, y, box_x, box_y; | 115 | int i, x, y, box_x, box_y; |
119 | int key = 0, button = 0, choice = 0, scroll = 0, max_choice, *status; | 116 | int key = 0, button = 0, choice = 0, scroll = 0, max_choice, *status; |
120 | WINDOW *dialog, *list; | 117 | WINDOW *dialog, *list; |
121 | 118 | ||
122 | checkflag = flag; | ||
123 | |||
124 | /* Allocate space for storing item on/off status */ | 119 | /* Allocate space for storing item on/off status */ |
125 | if ((status = malloc(sizeof(int) * item_no)) == NULL) { | 120 | if ((status = malloc(sizeof(int) * item_no)) == NULL) { |
126 | endwin(); | 121 | endwin(); |
@@ -303,34 +298,20 @@ int dialog_checklist(const char *title, const char *prompt, int height, | |||
303 | case ' ': | 298 | case ' ': |
304 | case '\n': | 299 | case '\n': |
305 | if (!button) { | 300 | if (!button) { |
306 | if (flag == FLAG_CHECK) { | 301 | if (!status[scroll + choice]) { |
307 | status[scroll + choice] = !status[scroll + choice]; | 302 | for (i = 0; i < item_no; i++) |
308 | wmove(list, choice, check_x); | 303 | status[i] = 0; |
309 | wattrset(list, check_selected_attr); | 304 | status[scroll + choice] = 1; |
310 | wprintw(list, "[%c]", status[scroll + choice] ? 'X' : ' '); | 305 | for (i = 0; i < max_choice; i++) |
311 | } else { | 306 | print_item(list, items[(scroll + i) * 3 + 1], |
312 | if (!status[scroll + choice]) { | 307 | status[scroll + i], i, i == choice); |
313 | for (i = 0; i < item_no; i++) | ||
314 | status[i] = 0; | ||
315 | status[scroll + choice] = 1; | ||
316 | for (i = 0; i < max_choice; i++) | ||
317 | print_item(list, items[(scroll + i) * 3 + 1], | ||
318 | status[scroll + i], i, i == choice); | ||
319 | } | ||
320 | } | 308 | } |
321 | wnoutrefresh(list); | 309 | wnoutrefresh(list); |
322 | wrefresh(dialog); | 310 | wrefresh(dialog); |
323 | 311 | ||
324 | for (i = 0; i < item_no; i++) { | 312 | for (i = 0; i < item_no; i++) |
325 | if (status[i]) { | 313 | if (status[i]) |
326 | if (flag == FLAG_CHECK) { | 314 | fprintf(stderr, "%s", items[i * 3]); |
327 | fprintf(stderr, "\"%s\" ", items[i * 3]); | ||
328 | } else { | ||
329 | fprintf(stderr, "%s", items[i * 3]); | ||
330 | } | ||
331 | |||
332 | } | ||
333 | } | ||
334 | } else | 315 | } else |
335 | fprintf(stderr, "%s", items[(scroll + choice) * 3]); | 316 | fprintf(stderr, "%s", items[(scroll + choice) * 3]); |
336 | delwin(dialog); | 317 | delwin(dialog); |
diff --git a/scripts/kconfig/lxdialog/dialog.h b/scripts/kconfig/lxdialog/dialog.h index f882204cb3c2..af3cf716e215 100644 --- a/scripts/kconfig/lxdialog/dialog.h +++ b/scripts/kconfig/lxdialog/dialog.h | |||
@@ -160,7 +160,7 @@ int dialog_menu(const char *title, const char *prompt, int height, int width, | |||
160 | const char *const *items); | 160 | const char *const *items); |
161 | int dialog_checklist(const char *title, const char *prompt, int height, | 161 | int dialog_checklist(const char *title, const char *prompt, int height, |
162 | int width, int list_height, int item_no, | 162 | int width, int list_height, int item_no, |
163 | const char *const *items, int flag); | 163 | const char *const *items); |
164 | extern char dialog_input_result[]; | 164 | extern char dialog_input_result[]; |
165 | int dialog_inputbox(const char *title, const char *prompt, int height, | 165 | int dialog_inputbox(const char *title, const char *prompt, int height, |
166 | int width, const char *init); | 166 | int width, const char *init); |
@@ -175,10 +175,3 @@ int dialog_inputbox(const char *title, const char *prompt, int height, | |||
175 | * -- uppercase chars are used to invoke the button (M_EVENT + 'O') | 175 | * -- uppercase chars are used to invoke the button (M_EVENT + 'O') |
176 | */ | 176 | */ |
177 | #define M_EVENT (KEY_MAX+1) | 177 | #define M_EVENT (KEY_MAX+1) |
178 | |||
179 | /* | ||
180 | * The `flag' parameter in checklist is used to select between | ||
181 | * radiolist and checklist | ||
182 | */ | ||
183 | #define FLAG_CHECK 1 | ||
184 | #define FLAG_RADIO 0 | ||
diff --git a/scripts/kconfig/lxdialog/lxdialog.c b/scripts/kconfig/lxdialog/lxdialog.c index 2c34ea1e0a41..79f6c5fb5cef 100644 --- a/scripts/kconfig/lxdialog/lxdialog.c +++ b/scripts/kconfig/lxdialog/lxdialog.c | |||
@@ -31,12 +31,11 @@ struct Mode { | |||
31 | jumperFn *jumper; | 31 | jumperFn *jumper; |
32 | }; | 32 | }; |
33 | 33 | ||
34 | jumperFn j_menu, j_checklist, j_radiolist, j_yesno, j_textbox, j_inputbox; | 34 | jumperFn j_menu, j_radiolist, j_yesno, j_textbox, j_inputbox; |
35 | jumperFn j_msgbox, j_infobox; | 35 | jumperFn j_msgbox, j_infobox; |
36 | 36 | ||
37 | static struct Mode modes[] = { | 37 | static struct Mode modes[] = { |
38 | {"--menu", 9, 0, 3, j_menu}, | 38 | {"--menu", 9, 0, 3, j_menu}, |
39 | {"--checklist", 9, 0, 3, j_checklist}, | ||
40 | {"--radiolist", 9, 0, 3, j_radiolist}, | 39 | {"--radiolist", 9, 0, 3, j_radiolist}, |
41 | {"--yesno", 5, 5, 1, j_yesno}, | 40 | {"--yesno", 5, 5, 1, j_yesno}, |
42 | {"--textbox", 5, 5, 1, j_textbox}, | 41 | {"--textbox", 5, 5, 1, j_textbox}, |
@@ -151,7 +150,6 @@ static void Usage(const char *name) | |||
151 | \nBox options:\ | 150 | \nBox options:\ |
152 | \n\ | 151 | \n\ |
153 | \n --menu <text> <height> <width> <menu height> <tag1> <item1>...\ | 152 | \n --menu <text> <height> <width> <menu height> <tag1> <item1>...\ |
154 | \n --checklist <text> <height> <width> <list height> <tag1> <item1> <status1>...\ | ||
155 | \n --radiolist <text> <height> <width> <list height> <tag1> <item1> <status1>...\ | 153 | \n --radiolist <text> <height> <width> <list height> <tag1> <item1> <status1>...\ |
156 | \n --textbox <file> <height> <width>\ | 154 | \n --textbox <file> <height> <width>\ |
157 | \n --inputbox <text> <height> <width> [<init>]\ | 155 | \n --inputbox <text> <height> <width> [<init>]\ |
@@ -170,16 +168,10 @@ int j_menu(const char *t, int ac, const char *const *av) | |||
170 | atoi(av[5]), av[6], (ac - 6) / 2, av + 7); | 168 | atoi(av[5]), av[6], (ac - 6) / 2, av + 7); |
171 | } | 169 | } |
172 | 170 | ||
173 | int j_checklist(const char *t, int ac, const char *const *av) | ||
174 | { | ||
175 | return dialog_checklist(t, av[2], atoi(av[3]), atoi(av[4]), | ||
176 | atoi(av[5]), (ac - 6) / 3, av + 6, FLAG_CHECK); | ||
177 | } | ||
178 | |||
179 | int j_radiolist(const char *t, int ac, const char *const *av) | 171 | int j_radiolist(const char *t, int ac, const char *const *av) |
180 | { | 172 | { |
181 | return dialog_checklist(t, av[2], atoi(av[3]), atoi(av[4]), | 173 | return dialog_checklist(t, av[2], atoi(av[3]), atoi(av[4]), |
182 | atoi(av[5]), (ac - 6) / 3, av + 6, FLAG_RADIO); | 174 | atoi(av[5]), (ac - 6) / 3, av + 6); |
183 | } | 175 | } |
184 | 176 | ||
185 | int j_textbox(const char *t, int ac, const char *const *av) | 177 | int j_textbox(const char *t, int ac, const char *const *av) |