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) |
