diff options
-rw-r--r-- | scripts/lxdialog/checklist.c | 99 | ||||
-rw-r--r-- | scripts/lxdialog/dialog.h | 3 | ||||
-rw-r--r-- | scripts/lxdialog/inputbox.c | 49 | ||||
-rw-r--r-- | scripts/lxdialog/menubox.c | 83 | ||||
-rw-r--r-- | scripts/lxdialog/msgbox.c | 5 | ||||
-rw-r--r-- | scripts/lxdialog/textbox.c | 93 | ||||
-rw-r--r-- | scripts/lxdialog/util.c | 2 | ||||
-rw-r--r-- | scripts/lxdialog/yesno.c | 3 |
8 files changed, 108 insertions, 229 deletions
diff --git a/scripts/lxdialog/checklist.c b/scripts/lxdialog/checklist.c index 1857c5378ce8..ae40a2b3b885 100644 --- a/scripts/lxdialog/checklist.c +++ b/scripts/lxdialog/checklist.c | |||
@@ -28,8 +28,8 @@ static int list_width, check_x, item_x, checkflag; | |||
28 | /* | 28 | /* |
29 | * Print list item | 29 | * Print list item |
30 | */ | 30 | */ |
31 | static void | 31 | static void print_item(WINDOW * win, const char *item, int status, int choice, |
32 | print_item(WINDOW * win, const char *item, int status, int choice, int selected) | 32 | int selected) |
33 | { | 33 | { |
34 | int i; | 34 | int i; |
35 | 35 | ||
@@ -59,8 +59,7 @@ print_item(WINDOW * win, const char *item, int status, int choice, int selected) | |||
59 | /* | 59 | /* |
60 | * Print the scroll indicators. | 60 | * Print the scroll indicators. |
61 | */ | 61 | */ |
62 | static void | 62 | static void print_arrows(WINDOW * win, int choice, int item_no, int scroll, |
63 | print_arrows(WINDOW * win, int choice, int item_no, int scroll, | ||
64 | int y, int x, int height) | 63 | int y, int x, int height) |
65 | { | 64 | { |
66 | wmove(win, y, x); | 65 | wmove(win, y, x); |
@@ -112,10 +111,9 @@ static void print_buttons(WINDOW * dialog, int height, int width, int selected) | |||
112 | * Display a dialog box with a list of options that can be turned on or off | 111 | * Display a dialog box with a list of options that can be turned on or off |
113 | * The `flag' parameter is used to select between radiolist and checklist. | 112 | * The `flag' parameter is used to select between radiolist and checklist. |
114 | */ | 113 | */ |
115 | int | 114 | int dialog_checklist(const char *title, const char *prompt, int height, |
116 | dialog_checklist(const char *title, const char *prompt, int height, int width, | 115 | int width, int list_height, int item_no, |
117 | int list_height, int item_no, const char *const *items, | 116 | const char *const *items, int flag) |
118 | int flag) | ||
119 | { | 117 | { |
120 | int i, x, y, box_x, box_y; | 118 | int i, x, y, box_x, box_y; |
121 | int key = 0, button = 0, choice = 0, scroll = 0, max_choice, *status; | 119 | int key = 0, button = 0, choice = 0, scroll = 0, max_choice, *status; |
@@ -183,15 +181,14 @@ dialog_checklist(const char *title, const char *prompt, int height, int width, | |||
183 | box_x = (width - list_width) / 2 - 1; | 181 | box_x = (width - list_width) / 2 - 1; |
184 | 182 | ||
185 | /* create new window for the list */ | 183 | /* create new window for the list */ |
186 | list = | 184 | list = subwin(dialog, list_height, list_width, y + box_y + 1, |
187 | subwin(dialog, list_height, list_width, y + box_y + 1, | 185 | x + box_x + 1); |
188 | x + box_x + 1); | ||
189 | 186 | ||
190 | keypad(list, TRUE); | 187 | keypad(list, TRUE); |
191 | 188 | ||
192 | /* draw a box around the list items */ | 189 | /* draw a box around the list items */ |
193 | draw_box(dialog, box_y, box_x, list_height + 2, list_width + 2, | 190 | draw_box(dialog, box_y, box_x, list_height + 2, list_width + 2, |
194 | menubox_border_attr, menubox_attr); | 191 | menubox_border_attr, menubox_attr); |
195 | 192 | ||
196 | /* Find length of longest item in order to center checklist */ | 193 | /* Find length of longest item in order to center checklist */ |
197 | check_x = 0; | 194 | check_x = 0; |
@@ -238,24 +235,18 @@ dialog_checklist(const char *title, const char *prompt, int height, int width, | |||
238 | /* Scroll list down */ | 235 | /* Scroll list down */ |
239 | if (list_height > 1) { | 236 | if (list_height > 1) { |
240 | /* De-highlight current first item */ | 237 | /* De-highlight current first item */ |
241 | print_item(list, | 238 | print_item(list, items[scroll * 3 + 1], |
242 | items[scroll * 3 + | 239 | status[scroll], 0, FALSE); |
243 | 1], | ||
244 | status[scroll], 0, | ||
245 | FALSE); | ||
246 | scrollok(list, TRUE); | 240 | scrollok(list, TRUE); |
247 | wscrl(list, -1); | 241 | wscrl(list, -1); |
248 | scrollok(list, FALSE); | 242 | scrollok(list, FALSE); |
249 | } | 243 | } |
250 | scroll--; | 244 | scroll--; |
251 | print_item(list, items[scroll * 3 + 1], | 245 | print_item(list, items[scroll * 3 + 1], status[scroll], 0, TRUE); |
252 | status[scroll], 0, TRUE); | ||
253 | wnoutrefresh(list); | 246 | wnoutrefresh(list); |
254 | 247 | ||
255 | print_arrows(dialog, choice, item_no, | 248 | print_arrows(dialog, choice, item_no, |
256 | scroll, box_y, | 249 | scroll, box_y, box_x + check_x + 5, list_height); |
257 | box_x + check_x + 5, | ||
258 | list_height); | ||
259 | 250 | ||
260 | wrefresh(dialog); | 251 | wrefresh(dialog); |
261 | 252 | ||
@@ -269,32 +260,20 @@ dialog_checklist(const char *title, const char *prompt, int height, int width, | |||
269 | /* Scroll list up */ | 260 | /* Scroll list up */ |
270 | if (list_height > 1) { | 261 | if (list_height > 1) { |
271 | /* De-highlight current last item before scrolling up */ | 262 | /* De-highlight current last item before scrolling up */ |
272 | print_item(list, | 263 | print_item(list, items[(scroll + max_choice - 1) * 3 + 1], |
273 | items[(scroll + | 264 | status[scroll + max_choice - 1], |
274 | max_choice - | 265 | max_choice - 1, FALSE); |
275 | 1) * 3 + 1], | ||
276 | status[scroll + | ||
277 | max_choice - | ||
278 | 1], | ||
279 | max_choice - 1, | ||
280 | FALSE); | ||
281 | scrollok(list, TRUE); | 266 | scrollok(list, TRUE); |
282 | wscrl(list, 1); | 267 | wscrl(list, 1); |
283 | scrollok(list, FALSE); | 268 | scrollok(list, FALSE); |
284 | } | 269 | } |
285 | scroll++; | 270 | scroll++; |
286 | print_item(list, | 271 | print_item(list, items[(scroll + max_choice - 1) * 3 + 1], |
287 | items[(scroll + max_choice - | 272 | status[scroll + max_choice - 1], max_choice - 1, TRUE); |
288 | 1) * 3 + 1], | ||
289 | status[scroll + max_choice - | ||
290 | 1], max_choice - 1, | ||
291 | TRUE); | ||
292 | wnoutrefresh(list); | 273 | wnoutrefresh(list); |
293 | 274 | ||
294 | print_arrows(dialog, choice, item_no, | 275 | print_arrows(dialog, choice, item_no, |
295 | scroll, box_y, | 276 | scroll, box_y, box_x + check_x + 5, list_height); |
296 | box_x + check_x + 5, | ||
297 | list_height); | ||
298 | 277 | ||
299 | wrefresh(dialog); | 278 | wrefresh(dialog); |
300 | 279 | ||
@@ -304,16 +283,12 @@ dialog_checklist(const char *title, const char *prompt, int height, int width, | |||
304 | } | 283 | } |
305 | if (i != choice) { | 284 | if (i != choice) { |
306 | /* De-highlight current item */ | 285 | /* De-highlight current item */ |
307 | print_item(list, | 286 | print_item(list, items[(scroll + choice) * 3 + 1], |
308 | items[(scroll + choice) * 3 + 1], | 287 | status[scroll + choice], choice, FALSE); |
309 | status[scroll + choice], choice, | ||
310 | FALSE); | ||
311 | /* Highlight new item */ | 288 | /* Highlight new item */ |
312 | choice = i; | 289 | choice = i; |
313 | print_item(list, | 290 | print_item(list, items[(scroll + choice) * 3 + 1], |
314 | items[(scroll + choice) * 3 + 1], | 291 | status[scroll + choice], choice, TRUE); |
315 | status[scroll + choice], choice, | ||
316 | TRUE); | ||
317 | wnoutrefresh(list); | 292 | wnoutrefresh(list); |
318 | wrefresh(dialog); | 293 | wrefresh(dialog); |
319 | } | 294 | } |
@@ -342,28 +317,18 @@ dialog_checklist(const char *title, const char *prompt, int height, int width, | |||
342 | case '\n': | 317 | case '\n': |
343 | if (!button) { | 318 | if (!button) { |
344 | if (flag == FLAG_CHECK) { | 319 | if (flag == FLAG_CHECK) { |
345 | status[scroll + choice] = | 320 | status[scroll + choice] = !status[scroll + choice]; |
346 | !status[scroll + choice]; | ||
347 | wmove(list, choice, check_x); | 321 | wmove(list, choice, check_x); |
348 | wattrset(list, check_selected_attr); | 322 | wattrset(list, check_selected_attr); |
349 | wprintw(list, "[%c]", | 323 | wprintw(list, "[%c]", status[scroll + choice] ? 'X' : ' '); |
350 | status[scroll + | ||
351 | choice] ? 'X' : ' '); | ||
352 | } else { | 324 | } else { |
353 | if (!status[scroll + choice]) { | 325 | if (!status[scroll + choice]) { |
354 | for (i = 0; i < item_no; i++) | 326 | for (i = 0; i < item_no; i++) |
355 | status[i] = 0; | 327 | status[i] = 0; |
356 | status[scroll + choice] = 1; | 328 | status[scroll + choice] = 1; |
357 | for (i = 0; i < max_choice; i++) | 329 | for (i = 0; i < max_choice; i++) |
358 | print_item(list, | 330 | print_item(list, items[(scroll + i) * 3 + 1], |
359 | items[(scroll | 331 | status[scroll + i], i, i == choice); |
360 | + | ||
361 | i) * | ||
362 | 3 + 1], | ||
363 | status[scroll | ||
364 | + i], | ||
365 | i, | ||
366 | i == choice); | ||
367 | } | 332 | } |
368 | } | 333 | } |
369 | wnoutrefresh(list); | 334 | wnoutrefresh(list); |
@@ -372,19 +337,15 @@ dialog_checklist(const char *title, const char *prompt, int height, int width, | |||
372 | for (i = 0; i < item_no; i++) { | 337 | for (i = 0; i < item_no; i++) { |
373 | if (status[i]) { | 338 | if (status[i]) { |
374 | if (flag == FLAG_CHECK) { | 339 | if (flag == FLAG_CHECK) { |
375 | fprintf(stderr, | 340 | fprintf(stderr, "\"%s\" ", items[i * 3]); |
376 | "\"%s\" ", | ||
377 | items[i * 3]); | ||
378 | } else { | 341 | } else { |
379 | fprintf(stderr, "%s", | 342 | fprintf(stderr, "%s", items[i * 3]); |
380 | items[i * 3]); | ||
381 | } | 343 | } |
382 | 344 | ||
383 | } | 345 | } |
384 | } | 346 | } |
385 | } else | 347 | } else |
386 | fprintf(stderr, "%s", | 348 | fprintf(stderr, "%s", items[(scroll + choice) * 3]); |
387 | items[(scroll + choice) * 3]); | ||
388 | delwin(dialog); | 349 | delwin(dialog); |
389 | free(status); | 350 | free(status); |
390 | return button; | 351 | return button; |
diff --git a/scripts/lxdialog/dialog.h b/scripts/lxdialog/dialog.h index c86801f981fe..3cf3d3526ef0 100644 --- a/scripts/lxdialog/dialog.h +++ b/scripts/lxdialog/dialog.h | |||
@@ -1,4 +1,3 @@ | |||
1 | |||
2 | /* | 1 | /* |
3 | * dialog.h -- common declarations for all dialog modules | 2 | * dialog.h -- common declarations for all dialog modules |
4 | * | 3 | * |
@@ -87,7 +86,7 @@ | |||
87 | #define ACS_DARROW 'v' | 86 | #define ACS_DARROW 'v' |
88 | #endif | 87 | #endif |
89 | 88 | ||
90 | /* | 89 | /* |
91 | * Attribute names | 90 | * Attribute names |
92 | */ | 91 | */ |
93 | #define screen_attr attributes[0] | 92 | #define screen_attr attributes[0] |
diff --git a/scripts/lxdialog/inputbox.c b/scripts/lxdialog/inputbox.c index 9e9691567269..bc135c7093d9 100644 --- a/scripts/lxdialog/inputbox.c +++ b/scripts/lxdialog/inputbox.c | |||
@@ -41,9 +41,8 @@ static void print_buttons(WINDOW * dialog, int height, int width, int selected) | |||
41 | /* | 41 | /* |
42 | * Display a dialog box for inputing a string | 42 | * Display a dialog box for inputing a string |
43 | */ | 43 | */ |
44 | int | 44 | int dialog_inputbox(const char *title, const char *prompt, int height, int width, |
45 | dialog_inputbox(const char *title, const char *prompt, int height, int width, | 45 | const char *init) |
46 | const char *init) | ||
47 | { | 46 | { |
48 | int i, x, y, box_y, box_x, box_width; | 47 | int i, x, y, box_y, box_x, box_width; |
49 | int input_x = 0, scroll = 0, key = 0, button = -1; | 48 | int input_x = 0, scroll = 0, key = 0, button = -1; |
@@ -90,8 +89,7 @@ dialog_inputbox(const char *title, const char *prompt, int height, int width, | |||
90 | getyx(dialog, y, x); | 89 | getyx(dialog, y, x); |
91 | box_y = y + 2; | 90 | box_y = y + 2; |
92 | box_x = (width - box_width) / 2; | 91 | box_x = (width - box_width) / 2; |
93 | draw_box(dialog, y + 1, box_x - 1, 3, box_width + 2, | 92 | draw_box(dialog, y + 1, box_x - 1, 3, box_width + 2, border_attr, dialog_attr); |
94 | border_attr, dialog_attr); | ||
95 | 93 | ||
96 | print_buttons(dialog, height, width, 0); | 94 | print_buttons(dialog, height, width, 0); |
97 | 95 | ||
@@ -111,8 +109,9 @@ dialog_inputbox(const char *title, const char *prompt, int height, int width, | |||
111 | input_x = box_width - 1; | 109 | input_x = box_width - 1; |
112 | for (i = 0; i < box_width - 1; i++) | 110 | for (i = 0; i < box_width - 1; i++) |
113 | waddch(dialog, instr[scroll + i]); | 111 | waddch(dialog, instr[scroll + i]); |
114 | } else | 112 | } else { |
115 | waddstr(dialog, instr); | 113 | waddstr(dialog, instr); |
114 | } | ||
116 | 115 | ||
117 | wmove(dialog, box_y, box_x + input_x); | 116 | wmove(dialog, box_y, box_x + input_x); |
118 | 117 | ||
@@ -136,26 +135,17 @@ dialog_inputbox(const char *title, const char *prompt, int height, int width, | |||
136 | if (input_x || scroll) { | 135 | if (input_x || scroll) { |
137 | wattrset(dialog, inputbox_attr); | 136 | wattrset(dialog, inputbox_attr); |
138 | if (!input_x) { | 137 | if (!input_x) { |
139 | scroll = | 138 | scroll = scroll < box_width - 1 ? 0 : scroll - (box_width - 1); |
140 | scroll < | ||
141 | box_width - 1 ? 0 : scroll - | ||
142 | (box_width - 1); | ||
143 | wmove(dialog, box_y, box_x); | 139 | wmove(dialog, box_y, box_x); |
144 | for (i = 0; i < box_width; i++) | 140 | for (i = 0; i < box_width; i++) |
145 | waddch(dialog, | 141 | waddch(dialog, |
146 | instr[scroll + | 142 | instr[scroll + input_x + i] ? |
147 | input_x + | 143 | instr[scroll + input_x + i] : ' '); |
148 | i] ? | 144 | input_x = strlen(instr) - scroll; |
149 | instr[scroll + | ||
150 | input_x + | ||
151 | i] : ' '); | ||
152 | input_x = | ||
153 | strlen(instr) - scroll; | ||
154 | } else | 145 | } else |
155 | input_x--; | 146 | input_x--; |
156 | instr[scroll + input_x] = '\0'; | 147 | instr[scroll + input_x] = '\0'; |
157 | mvwaddch(dialog, box_y, input_x + box_x, | 148 | mvwaddch(dialog, box_y, input_x + box_x, ' '); |
158 | ' '); | ||
159 | wmove(dialog, box_y, input_x + box_x); | 149 | wmove(dialog, box_y, input_x + box_x); |
160 | wrefresh(dialog); | 150 | wrefresh(dialog); |
161 | } | 151 | } |
@@ -165,23 +155,14 @@ dialog_inputbox(const char *title, const char *prompt, int height, int width, | |||
165 | if (scroll + input_x < MAX_LEN) { | 155 | if (scroll + input_x < MAX_LEN) { |
166 | wattrset(dialog, inputbox_attr); | 156 | wattrset(dialog, inputbox_attr); |
167 | instr[scroll + input_x] = key; | 157 | instr[scroll + input_x] = key; |
168 | instr[scroll + input_x + 1] = | 158 | instr[scroll + input_x + 1] = '\0'; |
169 | '\0'; | ||
170 | if (input_x == box_width - 1) { | 159 | if (input_x == box_width - 1) { |
171 | scroll++; | 160 | scroll++; |
172 | wmove(dialog, box_y, | 161 | wmove(dialog, box_y, box_x); |
173 | box_x); | 162 | for (i = 0; i < box_width - 1; i++) |
174 | for (i = 0; | 163 | waddch(dialog, instr [scroll + i]); |
175 | i < box_width - 1; | ||
176 | i++) | ||
177 | waddch(dialog, | ||
178 | instr | ||
179 | [scroll + | ||
180 | i]); | ||
181 | } else { | 164 | } else { |
182 | wmove(dialog, box_y, | 165 | wmove(dialog, box_y, input_x++ + box_x); |
183 | input_x++ + | ||
184 | box_x); | ||
185 | waddch(dialog, key); | 166 | waddch(dialog, key); |
186 | } | 167 | } |
187 | wrefresh(dialog); | 168 | wrefresh(dialog); |
diff --git a/scripts/lxdialog/menubox.c b/scripts/lxdialog/menubox.c index 083f13de558c..260cc4dd5dab 100644 --- a/scripts/lxdialog/menubox.c +++ b/scripts/lxdialog/menubox.c | |||
@@ -63,8 +63,8 @@ static int menu_width, item_x; | |||
63 | /* | 63 | /* |
64 | * Print menu item | 64 | * Print menu item |
65 | */ | 65 | */ |
66 | static void | 66 | static void print_item(WINDOW * win, const char *item, int choice, |
67 | print_item(WINDOW * win, const char *item, int choice, int selected, int hotkey) | 67 | int selected, int hotkey) |
68 | { | 68 | { |
69 | int j; | 69 | int j; |
70 | char menu_item[menu_width + 1]; | 70 | char menu_item[menu_width + 1]; |
@@ -100,8 +100,8 @@ print_item(WINDOW * win, const char *item, int choice, int selected, int hotkey) | |||
100 | /* | 100 | /* |
101 | * Print the scroll indicators. | 101 | * Print the scroll indicators. |
102 | */ | 102 | */ |
103 | static void | 103 | static void print_arrows(WINDOW * win, int item_no, int scroll, int y, int x, |
104 | print_arrows(WINDOW * win, int item_no, int scroll, int y, int x, int height) | 104 | int height) |
105 | { | 105 | { |
106 | int cur_y, cur_x; | 106 | int cur_y, cur_x; |
107 | 107 | ||
@@ -158,10 +158,9 @@ static void print_buttons(WINDOW * win, int height, int width, int selected) | |||
158 | /* | 158 | /* |
159 | * Display a menu for choosing among a number of options | 159 | * Display a menu for choosing among a number of options |
160 | */ | 160 | */ |
161 | int | 161 | int dialog_menu(const char *title, const char *prompt, int height, int width, |
162 | dialog_menu(const char *title, const char *prompt, int height, int width, | 162 | int menu_height, const char *current, int item_no, |
163 | int menu_height, const char *current, int item_no, | 163 | const char *const *items) |
164 | const char *const *items) | ||
165 | { | 164 | { |
166 | int i, j, x, y, box_x, box_y; | 165 | int i, j, x, y, box_x, box_y; |
167 | int key = 0, button = 0, scroll = 0, choice = 0, first_item = | 166 | int key = 0, button = 0, scroll = 0, choice = 0, first_item = |
@@ -283,20 +282,14 @@ dialog_menu(const char *title, const char *prompt, int height, int width, | |||
283 | i = max_choice; | 282 | i = max_choice; |
284 | else { | 283 | else { |
285 | for (i = choice + 1; i < max_choice; i++) { | 284 | for (i = choice + 1; i < max_choice; i++) { |
286 | j = first_alpha(items[(scroll + i) * 2 + 1], | 285 | j = first_alpha(items[(scroll + i) * 2 + 1], "YyNnMmHh"); |
287 | "YyNnMmHh"); | 286 | if (key == tolower(items[(scroll + i) * 2 + 1][j])) |
288 | if (key == | ||
289 | tolower(items[(scroll + i) * 2 + 1][j])) | ||
290 | break; | 287 | break; |
291 | } | 288 | } |
292 | if (i == max_choice) | 289 | if (i == max_choice) |
293 | for (i = 0; i < max_choice; i++) { | 290 | for (i = 0; i < max_choice; i++) { |
294 | j = first_alpha(items | 291 | j = first_alpha(items [(scroll + i) * 2 + 1], "YyNnMmHh"); |
295 | [(scroll + i) * 2 + 1], | 292 | if (key == tolower(items[(scroll + i) * 2 + 1][j])) |
296 | "YyNnMmHh"); | ||
297 | if (key == | ||
298 | tolower(items[(scroll + i) * 2 + 1] | ||
299 | [j])) | ||
300 | break; | 293 | break; |
301 | } | 294 | } |
302 | } | 295 | } |
@@ -319,24 +312,19 @@ dialog_menu(const char *title, const char *prompt, int height, int width, | |||
319 | 312 | ||
320 | scroll--; | 313 | scroll--; |
321 | 314 | ||
322 | print_item(menu, items[scroll * 2 + 1], | 315 | print_item(menu, items[scroll * 2 + 1], 0, FALSE, |
323 | 0, FALSE, | 316 | (items[scroll * 2][0] != ':')); |
324 | (items[scroll * 2][0] != | ||
325 | ':')); | ||
326 | } else | 317 | } else |
327 | choice = MAX(choice - 1, 0); | 318 | choice = MAX(choice - 1, 0); |
328 | 319 | ||
329 | } else if (key == KEY_DOWN || key == '+') { | 320 | } else if (key == KEY_DOWN || key == '+') { |
330 | 321 | ||
331 | print_item(menu, | 322 | print_item(menu, |
332 | items[(scroll + choice) * 2 + 1], | 323 | items[(scroll + choice) * 2 + 1], choice, FALSE, |
333 | choice, FALSE, | 324 | (items[(scroll + choice) * 2][0] != ':')); |
334 | (items[(scroll + choice) * 2][0] != | ||
335 | ':')); | ||
336 | 325 | ||
337 | if ((choice > max_choice - 3) && | 326 | if ((choice > max_choice - 3) && |
338 | (scroll + max_choice < item_no) | 327 | (scroll + max_choice < item_no)) { |
339 | ) { | ||
340 | /* Scroll menu up */ | 328 | /* Scroll menu up */ |
341 | scrollok(menu, TRUE); | 329 | scrollok(menu, TRUE); |
342 | wscrl(menu, 1); | 330 | wscrl(menu, 1); |
@@ -344,16 +332,11 @@ dialog_menu(const char *title, const char *prompt, int height, int width, | |||
344 | 332 | ||
345 | scroll++; | 333 | scroll++; |
346 | 334 | ||
347 | print_item(menu, | 335 | print_item(menu, items[(scroll + max_choice - 1) * 2 + 1], |
348 | items[(scroll + max_choice - | ||
349 | 1) * 2 + 1], | ||
350 | max_choice - 1, FALSE, | 336 | max_choice - 1, FALSE, |
351 | (items | 337 | (items [(scroll + max_choice - 1) * 2][0] != ':')); |
352 | [(scroll + max_choice - | ||
353 | 1) * 2][0] != ':')); | ||
354 | } else | 338 | } else |
355 | choice = | 339 | choice = MIN(choice + 1, max_choice - 1); |
356 | MIN(choice + 1, max_choice - 1); | ||
357 | 340 | ||
358 | } else if (key == KEY_PPAGE) { | 341 | } else if (key == KEY_PPAGE) { |
359 | scrollok(menu, TRUE); | 342 | scrollok(menu, TRUE); |
@@ -361,11 +344,8 @@ dialog_menu(const char *title, const char *prompt, int height, int width, | |||
361 | if (scroll > 0) { | 344 | if (scroll > 0) { |
362 | wscrl(menu, -1); | 345 | wscrl(menu, -1); |
363 | scroll--; | 346 | scroll--; |
364 | print_item(menu, | 347 | print_item(menu, items[scroll * 2 + 1], 0, FALSE, |
365 | items[scroll * 2 + | 348 | (items[scroll * 2][0] != ':')); |
366 | 1], 0, FALSE, | ||
367 | (items[scroll * 2][0] | ||
368 | != ':')); | ||
369 | } else { | 349 | } else { |
370 | if (choice > 0) | 350 | if (choice > 0) |
371 | choice--; | 351 | choice--; |
@@ -380,17 +360,9 @@ dialog_menu(const char *title, const char *prompt, int height, int width, | |||
380 | wscrl(menu, 1); | 360 | wscrl(menu, 1); |
381 | scrollok(menu, FALSE); | 361 | scrollok(menu, FALSE); |
382 | scroll++; | 362 | scroll++; |
383 | print_item(menu, | 363 | print_item(menu, items[(scroll + max_choice - 1) * 2 + 1], |
384 | items[(scroll + | 364 | max_choice - 1, FALSE, |
385 | max_choice - | 365 | (items [(scroll + max_choice - 1) * 2][0] != ':')); |
386 | 1) * 2 + 1], | ||
387 | max_choice - 1, | ||
388 | FALSE, | ||
389 | (items | ||
390 | [(scroll + | ||
391 | max_choice - | ||
392 | 1) * 2][0] != | ||
393 | ':')); | ||
394 | } else { | 366 | } else { |
395 | if (choice + 1 < max_choice) | 367 | if (choice + 1 < max_choice) |
396 | choice++; | 368 | choice++; |
@@ -401,8 +373,7 @@ dialog_menu(const char *title, const char *prompt, int height, int width, | |||
401 | choice = i; | 373 | choice = i; |
402 | 374 | ||
403 | print_item(menu, items[(scroll + choice) * 2 + 1], | 375 | print_item(menu, items[(scroll + choice) * 2 + 1], |
404 | choice, TRUE, | 376 | choice, TRUE, (items[(scroll + choice) * 2][0] != ':')); |
405 | (items[(scroll + choice) * 2][0] != ':')); | ||
406 | 377 | ||
407 | print_arrows(dialog, item_no, scroll, | 378 | print_arrows(dialog, item_no, scroll, |
408 | box_y, box_x + item_x + 1, menu_height); | 379 | box_y, box_x + item_x + 1, menu_height); |
@@ -460,9 +431,7 @@ dialog_menu(const char *title, const char *prompt, int height, int width, | |||
460 | fprintf(stderr, "%s \"%s\"\n", | 431 | fprintf(stderr, "%s \"%s\"\n", |
461 | items[(scroll + choice) * 2], | 432 | items[(scroll + choice) * 2], |
462 | items[(scroll + choice) * 2 + 1] + | 433 | items[(scroll + choice) * 2 + 1] + |
463 | first_alpha(items | 434 | first_alpha(items [(scroll + choice) * 2 + 1], "")); |
464 | [(scroll + choice) * 2 + 1], | ||
465 | "")); | ||
466 | else | 435 | else |
467 | fprintf(stderr, "%s\n", | 436 | fprintf(stderr, "%s\n", |
468 | items[(scroll + choice) * 2]); | 437 | items[(scroll + choice) * 2]); |
diff --git a/scripts/lxdialog/msgbox.c b/scripts/lxdialog/msgbox.c index 76f358ca1fda..b39405717da1 100644 --- a/scripts/lxdialog/msgbox.c +++ b/scripts/lxdialog/msgbox.c | |||
@@ -25,9 +25,8 @@ | |||
25 | * Display a message box. Program will pause and display an "OK" button | 25 | * Display a message box. Program will pause and display an "OK" button |
26 | * if the parameter 'pause' is non-zero. | 26 | * if the parameter 'pause' is non-zero. |
27 | */ | 27 | */ |
28 | int | 28 | int dialog_msgbox(const char *title, const char *prompt, int height, int width, |
29 | dialog_msgbox(const char *title, const char *prompt, int height, int width, | 29 | int pause) |
30 | int pause) | ||
31 | { | 30 | { |
32 | int i, x, y, key = 0; | 31 | int i, x, y, key = 0; |
33 | WINDOW *dialog; | 32 | WINDOW *dialog; |
diff --git a/scripts/lxdialog/textbox.c b/scripts/lxdialog/textbox.c index d6e7f2afe31a..fa8d92ea02b6 100644 --- a/scripts/lxdialog/textbox.c +++ b/scripts/lxdialog/textbox.c | |||
@@ -46,30 +46,26 @@ int dialog_textbox(const char *title, const char *file, int height, int width) | |||
46 | /* Open input file for reading */ | 46 | /* Open input file for reading */ |
47 | if ((fd = open(file, O_RDONLY)) == -1) { | 47 | if ((fd = open(file, O_RDONLY)) == -1) { |
48 | endwin(); | 48 | endwin(); |
49 | fprintf(stderr, | 49 | fprintf(stderr, "\nCan't open input file in dialog_textbox().\n"); |
50 | "\nCan't open input file in dialog_textbox().\n"); | ||
51 | exit(-1); | 50 | exit(-1); |
52 | } | 51 | } |
53 | /* Get file size. Actually, 'file_size' is the real file size - 1, | 52 | /* Get file size. Actually, 'file_size' is the real file size - 1, |
54 | since it's only the last byte offset from the beginning */ | 53 | since it's only the last byte offset from the beginning */ |
55 | if ((file_size = lseek(fd, 0, SEEK_END)) == -1) { | 54 | if ((file_size = lseek(fd, 0, SEEK_END)) == -1) { |
56 | endwin(); | 55 | endwin(); |
57 | fprintf(stderr, | 56 | fprintf(stderr, "\nError getting file size in dialog_textbox().\n"); |
58 | "\nError getting file size in dialog_textbox().\n"); | ||
59 | exit(-1); | 57 | exit(-1); |
60 | } | 58 | } |
61 | /* Restore file pointer to beginning of file after getting file size */ | 59 | /* Restore file pointer to beginning of file after getting file size */ |
62 | if (lseek(fd, 0, SEEK_SET) == -1) { | 60 | if (lseek(fd, 0, SEEK_SET) == -1) { |
63 | endwin(); | 61 | endwin(); |
64 | fprintf(stderr, | 62 | fprintf(stderr, "\nError moving file pointer in dialog_textbox().\n"); |
65 | "\nError moving file pointer in dialog_textbox().\n"); | ||
66 | exit(-1); | 63 | exit(-1); |
67 | } | 64 | } |
68 | /* Allocate space for read buffer */ | 65 | /* Allocate space for read buffer */ |
69 | if ((buf = malloc(BUF_SIZE + 1)) == NULL) { | 66 | if ((buf = malloc(BUF_SIZE + 1)) == NULL) { |
70 | endwin(); | 67 | endwin(); |
71 | fprintf(stderr, | 68 | fprintf(stderr, "\nCan't allocate memory in dialog_textbox().\n"); |
72 | "\nCan't allocate memory in dialog_textbox().\n"); | ||
73 | exit(-1); | 69 | exit(-1); |
74 | } | 70 | } |
75 | if ((bytes_read = read(fd, buf, BUF_SIZE)) == -1) { | 71 | if ((bytes_read = read(fd, buf, BUF_SIZE)) == -1) { |
@@ -150,23 +146,20 @@ int dialog_textbox(const char *title, const char *file, int height, int width) | |||
150 | /* First page not in buffer? */ | 146 | /* First page not in buffer? */ |
151 | if ((fpos = lseek(fd, 0, SEEK_CUR)) == -1) { | 147 | if ((fpos = lseek(fd, 0, SEEK_CUR)) == -1) { |
152 | endwin(); | 148 | endwin(); |
153 | fprintf(stderr, | 149 | fprintf(stderr, "\nError moving file pointer in dialog_textbox().\n"); |
154 | "\nError moving file pointer in dialog_textbox().\n"); | ||
155 | exit(-1); | 150 | exit(-1); |
156 | } | 151 | } |
157 | if (fpos > bytes_read) { /* Yes, we have to read it in */ | 152 | if (fpos > bytes_read) { /* Yes, we have to read it in */ |
158 | if (lseek(fd, 0, SEEK_SET) == -1) { | 153 | if (lseek(fd, 0, SEEK_SET) == -1) { |
159 | endwin(); | 154 | endwin(); |
160 | fprintf(stderr, | 155 | fprintf(stderr, "\nError moving file pointer in " |
161 | "\nError moving file pointer in " | 156 | "dialog_textbox().\n"); |
162 | "dialog_textbox().\n"); | ||
163 | exit(-1); | 157 | exit(-1); |
164 | } | 158 | } |
165 | if ((bytes_read = | 159 | if ((bytes_read = |
166 | read(fd, buf, BUF_SIZE)) == -1) { | 160 | read(fd, buf, BUF_SIZE)) == -1) { |
167 | endwin(); | 161 | endwin(); |
168 | fprintf(stderr, | 162 | fprintf(stderr, "\nError reading file in dialog_textbox().\n"); |
169 | "\nError reading file in dialog_textbox().\n"); | ||
170 | exit(-1); | 163 | exit(-1); |
171 | } | 164 | } |
172 | buf[bytes_read] = '\0'; | 165 | buf[bytes_read] = '\0'; |
@@ -185,22 +178,19 @@ int dialog_textbox(const char *title, const char *file, int height, int width) | |||
185 | /* Last page not in buffer? */ | 178 | /* Last page not in buffer? */ |
186 | if ((fpos = lseek(fd, 0, SEEK_CUR)) == -1) { | 179 | if ((fpos = lseek(fd, 0, SEEK_CUR)) == -1) { |
187 | endwin(); | 180 | endwin(); |
188 | fprintf(stderr, | 181 | fprintf(stderr, "\nError moving file pointer in dialog_textbox().\n"); |
189 | "\nError moving file pointer in dialog_textbox().\n"); | ||
190 | exit(-1); | 182 | exit(-1); |
191 | } | 183 | } |
192 | if (fpos < file_size) { /* Yes, we have to read it in */ | 184 | if (fpos < file_size) { /* Yes, we have to read it in */ |
193 | if (lseek(fd, -BUF_SIZE, SEEK_END) == -1) { | 185 | if (lseek(fd, -BUF_SIZE, SEEK_END) == -1) { |
194 | endwin(); | 186 | endwin(); |
195 | fprintf(stderr, | 187 | fprintf(stderr, "\nError moving file pointer in dialog_textbox().\n"); |
196 | "\nError moving file pointer in dialog_textbox().\n"); | ||
197 | exit(-1); | 188 | exit(-1); |
198 | } | 189 | } |
199 | if ((bytes_read = | 190 | if ((bytes_read = |
200 | read(fd, buf, BUF_SIZE)) == -1) { | 191 | read(fd, buf, BUF_SIZE)) == -1) { |
201 | endwin(); | 192 | endwin(); |
202 | fprintf(stderr, | 193 | fprintf(stderr, "\nError reading file in dialog_textbox().\n"); |
203 | "\nError reading file in dialog_textbox().\n"); | ||
204 | exit(-1); | 194 | exit(-1); |
205 | } | 195 | } |
206 | buf[bytes_read] = '\0'; | 196 | buf[bytes_read] = '\0'; |
@@ -342,9 +332,8 @@ static void back_lines(int n) | |||
342 | if (page == buf) { | 332 | if (page == buf) { |
343 | if ((fpos = lseek(fd, 0, SEEK_CUR)) == -1) { | 333 | if ((fpos = lseek(fd, 0, SEEK_CUR)) == -1) { |
344 | endwin(); | 334 | endwin(); |
345 | fprintf(stderr, | 335 | fprintf(stderr, "\nError moving file pointer in " |
346 | "\nError moving file pointer in " | 336 | "back_lines().\n"); |
347 | "back_lines().\n"); | ||
348 | exit(-1); | 337 | exit(-1); |
349 | } | 338 | } |
350 | if (fpos > bytes_read) { /* Not beginning of file yet */ | 339 | if (fpos > bytes_read) { /* Not beginning of file yet */ |
@@ -358,21 +347,16 @@ static void back_lines(int n) | |||
358 | /* No, move less then */ | 347 | /* No, move less then */ |
359 | if (lseek(fd, 0, SEEK_SET) == -1) { | 348 | if (lseek(fd, 0, SEEK_SET) == -1) { |
360 | endwin(); | 349 | endwin(); |
361 | fprintf(stderr, | 350 | fprintf(stderr, "\nError moving file pointer in " |
362 | "\nError moving file pointer in " | 351 | "back_lines().\n"); |
363 | "back_lines().\n"); | ||
364 | exit(-1); | 352 | exit(-1); |
365 | } | 353 | } |
366 | page = buf + fpos - bytes_read; | 354 | page = buf + fpos - bytes_read; |
367 | } else { /* Move backward BUF_SIZE/2 bytes */ | 355 | } else { /* Move backward BUF_SIZE/2 bytes */ |
368 | if (lseek | 356 | if (lseek (fd, -(BUF_SIZE / 2 + bytes_read), SEEK_CUR) == -1) { |
369 | (fd, -(BUF_SIZE / 2 + bytes_read), | ||
370 | SEEK_CUR) | ||
371 | == -1) { | ||
372 | endwin(); | 357 | endwin(); |
373 | fprintf(stderr, | 358 | fprintf(stderr, "\nError moving file pointer " |
374 | "\nError moving file pointer " | 359 | "in back_lines().\n"); |
375 | "in back_lines().\n"); | ||
376 | exit(-1); | 360 | exit(-1); |
377 | } | 361 | } |
378 | page = buf + BUF_SIZE / 2; | 362 | page = buf + BUF_SIZE / 2; |
@@ -380,8 +364,7 @@ static void back_lines(int n) | |||
380 | if ((bytes_read = | 364 | if ((bytes_read = |
381 | read(fd, buf, BUF_SIZE)) == -1) { | 365 | read(fd, buf, BUF_SIZE)) == -1) { |
382 | endwin(); | 366 | endwin(); |
383 | fprintf(stderr, | 367 | fprintf(stderr, "\nError reading file in back_lines().\n"); |
384 | "\nError reading file in back_lines().\n"); | ||
385 | exit(-1); | 368 | exit(-1); |
386 | } | 369 | } |
387 | buf[bytes_read] = '\0'; | 370 | buf[bytes_read] = '\0'; |
@@ -403,33 +386,25 @@ static void back_lines(int n) | |||
403 | if (page == buf) { | 386 | if (page == buf) { |
404 | if ((fpos = lseek(fd, 0, SEEK_CUR)) == -1) { | 387 | if ((fpos = lseek(fd, 0, SEEK_CUR)) == -1) { |
405 | endwin(); | 388 | endwin(); |
406 | fprintf(stderr, | 389 | fprintf(stderr, "\nError moving file pointer in back_lines().\n"); |
407 | "\nError moving file pointer in back_lines().\n"); | ||
408 | exit(-1); | 390 | exit(-1); |
409 | } | 391 | } |
410 | if (fpos > bytes_read) { | 392 | if (fpos > bytes_read) { |
411 | /* Really possible to move backward BUF_SIZE/2 bytes? */ | 393 | /* Really possible to move backward BUF_SIZE/2 bytes? */ |
412 | if (fpos < BUF_SIZE / 2 + bytes_read) { | 394 | if (fpos < BUF_SIZE / 2 + bytes_read) { |
413 | /* No, move less then */ | 395 | /* No, move less then */ |
414 | if (lseek(fd, 0, SEEK_SET) == | 396 | if (lseek(fd, 0, SEEK_SET) == -1) { |
415 | -1) { | ||
416 | endwin(); | 397 | endwin(); |
417 | fprintf(stderr, | 398 | fprintf(stderr, "\nError moving file pointer " |
418 | "\nError moving file pointer " | 399 | "in back_lines().\n"); |
419 | "in back_lines().\n"); | ||
420 | exit(-1); | 400 | exit(-1); |
421 | } | 401 | } |
422 | page = buf + fpos - bytes_read; | 402 | page = buf + fpos - bytes_read; |
423 | } else { /* Move backward BUF_SIZE/2 bytes */ | 403 | } else { /* Move backward BUF_SIZE/2 bytes */ |
424 | if (lseek | 404 | if (lseek (fd, -(BUF_SIZE / 2 + bytes_read), SEEK_CUR) == -1) { |
425 | (fd, | ||
426 | -(BUF_SIZE / 2 + | ||
427 | bytes_read), | ||
428 | SEEK_CUR) == -1) { | ||
429 | endwin(); | 405 | endwin(); |
430 | fprintf(stderr, | 406 | fprintf(stderr, "\nError moving file pointer" |
431 | "\nError moving file pointer" | 407 | " in back_lines().\n"); |
432 | " in back_lines().\n"); | ||
433 | exit(-1); | 408 | exit(-1); |
434 | } | 409 | } |
435 | page = buf + BUF_SIZE / 2; | 410 | page = buf + BUF_SIZE / 2; |
@@ -437,9 +412,8 @@ static void back_lines(int n) | |||
437 | if ((bytes_read = | 412 | if ((bytes_read = |
438 | read(fd, buf, BUF_SIZE)) == -1) { | 413 | read(fd, buf, BUF_SIZE)) == -1) { |
439 | endwin(); | 414 | endwin(); |
440 | fprintf(stderr, | 415 | fprintf(stderr, "\nError reading file in " |
441 | "\nError reading file in " | 416 | "back_lines().\n"); |
442 | "back_lines().\n"); | ||
443 | exit(-1); | 417 | exit(-1); |
444 | } | 418 | } |
445 | buf[bytes_read] = '\0'; | 419 | buf[bytes_read] = '\0'; |
@@ -513,9 +487,8 @@ static char *get_line(void) | |||
513 | /* Either end of file or end of buffer reached */ | 487 | /* Either end of file or end of buffer reached */ |
514 | if ((fpos = lseek(fd, 0, SEEK_CUR)) == -1) { | 488 | if ((fpos = lseek(fd, 0, SEEK_CUR)) == -1) { |
515 | endwin(); | 489 | endwin(); |
516 | fprintf(stderr, | 490 | fprintf(stderr, "\nError moving file pointer in " |
517 | "\nError moving file pointer in " | 491 | "get_line().\n"); |
518 | "get_line().\n"); | ||
519 | exit(-1); | 492 | exit(-1); |
520 | } | 493 | } |
521 | if (fpos < file_size) { /* Not end of file yet */ | 494 | if (fpos < file_size) { /* Not end of file yet */ |
@@ -524,8 +497,7 @@ static char *get_line(void) | |||
524 | if ((bytes_read = | 497 | if ((bytes_read = |
525 | read(fd, buf, BUF_SIZE)) == -1) { | 498 | read(fd, buf, BUF_SIZE)) == -1) { |
526 | endwin(); | 499 | endwin(); |
527 | fprintf(stderr, | 500 | fprintf(stderr, "\nError reading file in get_line().\n"); |
528 | "\nError reading file in get_line().\n"); | ||
529 | exit(-1); | 501 | exit(-1); |
530 | } | 502 | } |
531 | buf[bytes_read] = '\0'; | 503 | buf[bytes_read] = '\0'; |
@@ -561,8 +533,7 @@ static void print_position(WINDOW * win, int height, int width) | |||
561 | 533 | ||
562 | if ((fpos = lseek(fd, 0, SEEK_CUR)) == -1) { | 534 | if ((fpos = lseek(fd, 0, SEEK_CUR)) == -1) { |
563 | endwin(); | 535 | endwin(); |
564 | fprintf(stderr, | 536 | fprintf(stderr, "\nError moving file pointer in print_position().\n"); |
565 | "\nError moving file pointer in print_position().\n"); | ||
566 | exit(-1); | 537 | exit(-1); |
567 | } | 538 | } |
568 | wattrset(win, position_indicator_attr); | 539 | wattrset(win, position_indicator_attr); |
diff --git a/scripts/lxdialog/util.c b/scripts/lxdialog/util.c index 232b32c4fc38..1f84809773f0 100644 --- a/scripts/lxdialog/util.c +++ b/scripts/lxdialog/util.c | |||
@@ -28,7 +28,7 @@ const char *backtitle = NULL; | |||
28 | 28 | ||
29 | const char *dialog_result; | 29 | const char *dialog_result; |
30 | 30 | ||
31 | /* | 31 | /* |
32 | * Attribute values, default is for mono display | 32 | * Attribute values, default is for mono display |
33 | */ | 33 | */ |
34 | chtype attributes[] = { | 34 | chtype attributes[] = { |
diff --git a/scripts/lxdialog/yesno.c b/scripts/lxdialog/yesno.c index dffd5af36713..84f3e8e005e4 100644 --- a/scripts/lxdialog/yesno.c +++ b/scripts/lxdialog/yesno.c | |||
@@ -96,8 +96,7 @@ int dialog_yesno(const char *title, const char *prompt, int height, int width) | |||
96 | case TAB: | 96 | case TAB: |
97 | case KEY_LEFT: | 97 | case KEY_LEFT: |
98 | case KEY_RIGHT: | 98 | case KEY_RIGHT: |
99 | button = ((key == KEY_LEFT ? --button : ++button) < 0) | 99 | button = ((key == KEY_LEFT ? --button : ++button) < 0) ? 1 : (button > 1 ? 0 : button); |
100 | ? 1 : (button > 1 ? 0 : button); | ||
101 | 100 | ||
102 | print_buttons(dialog, height, width, button); | 101 | print_buttons(dialog, height, width, button); |
103 | wrefresh(dialog); | 102 | wrefresh(dialog); |