Lines Matching refs:menu

40 _menui_calc_neighbours(MENU *menu, int item_no);
41 static void _menui_redraw_menu(MENU *menu, int old_top_row, int old_cur_item);
51 _menui_stitch_items(MENU *menu) in _menui_stitch_items() argument
55 row_major = ((menu->opts & O_ROWMAJOR) == O_ROWMAJOR); in _menui_stitch_items()
57 if (menu->posted == 1) in _menui_stitch_items()
59 if (menu->items == NULL) in _menui_stitch_items()
62 menu->item_rows = menu->item_count / menu->cols; in _menui_stitch_items()
63 menu->item_cols = menu->cols; in _menui_stitch_items()
64 if (menu->item_count > (menu->item_rows * menu->item_cols)) in _menui_stitch_items()
65 menu->item_rows += 1; in _menui_stitch_items()
67 _menui_max_item_size(menu); in _menui_stitch_items()
69 for (i = 0; i < menu->item_count; i++) { in _menui_stitch_items()
72 menu->items[i]->row = i / menu->item_cols; in _menui_stitch_items()
73 menu->items[i]->col = i % menu->item_cols; in _menui_stitch_items()
75 menu->items[i]->row = i % menu->item_rows; in _menui_stitch_items()
76 menu->items[i]->col = i / menu->item_rows; in _menui_stitch_items()
79 _menui_calc_neighbours(menu, i); in _menui_stitch_items()
89 _menui_calc_neighbours(MENU *menu, int item_no) in _menui_calc_neighbours() argument
94 row_major = ((menu->opts & O_ROWMAJOR) == O_ROWMAJOR); in _menui_calc_neighbours()
95 cycle = ((menu->opts & O_NONCYCLIC) != O_NONCYCLIC); in _menui_calc_neighbours()
96 item = menu->items[item_no]; in _menui_calc_neighbours()
98 if (menu->item_rows < 2) { in _menui_calc_neighbours()
109 if (menu->item_cols < 2) { in _menui_calc_neighbours()
113 menu->items[menu->item_count - 1]; in _menui_calc_neighbours()
117 item->up = menu->items[item_no - 1]; in _menui_calc_neighbours()
123 (menu->item_rows - 1) * menu->item_cols in _menui_calc_neighbours()
125 if (neighbour >= menu->item_count) in _menui_calc_neighbours()
126 neighbour -= menu->item_cols; in _menui_calc_neighbours()
129 neighbour = item_no - menu->item_cols; in _menui_calc_neighbours()
132 neighbour = menu->item_rows * item->col in _menui_calc_neighbours()
133 + menu->item_rows - 1; in _menui_calc_neighbours()
134 if (neighbour >= menu->item_count) in _menui_calc_neighbours()
135 neighbour = menu->item_count - 1; in _menui_calc_neighbours()
142 item->up = menu->items[neighbour]; in _menui_calc_neighbours()
148 if (menu->item_cols < 2) { in _menui_calc_neighbours()
149 if (item_no == (menu->item_count - 1)) { in _menui_calc_neighbours()
151 item->down = menu->items[0]; in _menui_calc_neighbours()
155 item->down = menu->items[item_no + 1]; in _menui_calc_neighbours()
159 if (item->row == menu->item_rows - 1) { in _menui_calc_neighbours()
163 neighbour = item_no + menu->item_cols; in _menui_calc_neighbours()
164 if (neighbour >= menu->item_count) { in _menui_calc_neighbours()
170 if (item->row == menu->item_rows - 1) { in _menui_calc_neighbours()
171 neighbour = item->col * menu->item_rows; in _menui_calc_neighbours()
175 if (neighbour >= menu->item_count) { in _menui_calc_neighbours()
177 * menu->item_rows; in _menui_calc_neighbours()
183 item->down = menu->items[neighbour]; in _menui_calc_neighbours()
189 if (menu->item_cols < 2) { in _menui_calc_neighbours()
199 if (menu->item_rows < 2) { in _menui_calc_neighbours()
203 menu->items[menu->item_count - 1]; in _menui_calc_neighbours()
207 item->left = menu->items[item_no - 1]; in _menui_calc_neighbours()
212 neighbour = item_no + menu->cols - 1; in _menui_calc_neighbours()
213 if (neighbour >= menu->item_count) in _menui_calc_neighbours()
214 neighbour = menu->item_count - 1; in _menui_calc_neighbours()
220 neighbour = menu->item_rows in _menui_calc_neighbours()
221 * (menu->item_cols - 1) + item->row; in _menui_calc_neighbours()
222 if (neighbour >= menu->item_count) in _menui_calc_neighbours()
223 neighbour -= menu->item_rows; in _menui_calc_neighbours()
226 neighbour = item_no - menu->item_rows; in _menui_calc_neighbours()
229 item->left = menu->items[neighbour]; in _menui_calc_neighbours()
235 if (menu->item_rows < 2) { in _menui_calc_neighbours()
236 if (item_no == menu->item_count - 1) { in _menui_calc_neighbours()
238 item->right = menu->items[0]; in _menui_calc_neighbours()
242 item->right = menu->items[item_no + 1]; in _menui_calc_neighbours()
246 if (item->col == menu->item_cols - 1) { in _menui_calc_neighbours()
247 neighbour = item_no - menu->item_cols in _menui_calc_neighbours()
250 } else if (item_no == menu->item_count - 1) { in _menui_calc_neighbours()
251 neighbour = item->row * menu->item_cols; in _menui_calc_neighbours()
256 if (item->col == menu->item_cols - 1) { in _menui_calc_neighbours()
260 neighbour = item_no + menu->item_rows; in _menui_calc_neighbours()
261 if (neighbour >= menu->item_count) { in _menui_calc_neighbours()
268 item->right = menu->items[neighbour]; in _menui_calc_neighbours()
280 _menui_goto_item(MENU *menu, ITEM *item, int new_top_row) in _menui_goto_item() argument
282 int old_top_row = menu->top_row, old_cur_item = menu->cur_item; in _menui_goto_item()
288 menu->in_init = 1; in _menui_goto_item()
289 if (menu->top_row != new_top_row) { in _menui_goto_item()
290 if ((menu->posted == 1) && (menu->menu_term != NULL)) in _menui_goto_item()
291 menu->menu_term(menu); in _menui_goto_item()
292 menu->top_row = new_top_row; in _menui_goto_item()
294 if ((menu->posted == 1) && (menu->menu_init != NULL)) in _menui_goto_item()
295 menu->menu_init(menu); in _menui_goto_item()
299 if (menu->cur_item != item->index) { in _menui_goto_item()
301 if ((menu->posted == 1) && (menu->item_term != NULL)) in _menui_goto_item()
302 menu->item_term(menu); in _menui_goto_item()
304 menu->cur_item = item->index; in _menui_goto_item()
305 menu->cur_row = item->row; in _menui_goto_item()
306 menu->cur_col = item->col; in _menui_goto_item()
308 if (menu->posted == 1) in _menui_goto_item()
309 _menui_redraw_menu(menu, old_top_row, old_cur_item); in _menui_goto_item()
311 if ((menu->posted == 1) && (menu->item_init != NULL)) in _menui_goto_item()
312 menu->item_init(menu); in _menui_goto_item()
316 menu->in_init = 0; in _menui_goto_item()
326 _menui_match_items(MENU *menu, int direction, int *item_matched) in _menui_match_items() argument
330 caseless = ((menu->opts & O_IGNORECASE) == O_IGNORECASE); in _menui_match_items()
332 i = menu->cur_item; in _menui_match_items()
334 if (++i >= menu->item_count) i = 0; in _menui_match_items()
336 if (--i < 0) i = menu->item_count - 1; in _menui_match_items()
341 if (menu->items[i]->name.length >= menu->plen) { in _menui_match_items()
344 if (strncasecmp(menu->items[i]->name.string, in _menui_match_items()
345 menu->pattern, in _menui_match_items()
346 (size_t) menu->plen) == 0) { in _menui_match_items()
348 menu->match_len = menu->plen; in _menui_match_items()
352 if (strncmp(menu->items[i]->name.string, in _menui_match_items()
353 menu->pattern, in _menui_match_items()
354 (size_t) menu->plen) == 0) { in _menui_match_items()
356 menu->match_len = menu->plen; in _menui_match_items()
364 if (++i >= menu->item_count) i = 0; in _menui_match_items()
366 if (--i <= 0) i = menu->item_count - 1; in _menui_match_items()
368 } while (i != menu->cur_item); in _menui_match_items()
370 menu->match_len = 0; /* match did not succeed - kill the match len. */ in _menui_match_items()
382 _menui_match_pattern(MENU *menu, int c, int direction, int *item_matched) in _menui_match_pattern() argument
384 if (menu == NULL) in _menui_match_pattern()
386 if (menu->items == NULL) in _menui_match_pattern()
388 if (*menu->items == NULL) in _menui_match_pattern()
393 if ((menu->pattern = (char *) in _menui_match_pattern()
394 realloc(menu->pattern, in _menui_match_pattern()
395 menu->plen + sizeof(char) + in _menui_match_pattern()
396 ((menu->plen > 0)? 0 : 1))) in _menui_match_pattern()
399 menu->pattern[menu->plen] = c; in _menui_match_pattern()
400 menu->pattern[++menu->plen] = '\0'; in _menui_match_pattern()
404 if (menu->plen >= menu->max_item_width) { in _menui_match_pattern()
405 menu->pattern[--menu->plen] = '\0'; in _menui_match_pattern()
409 if (_menui_match_items(menu, direction, in _menui_match_pattern()
411 menu->pattern[--menu->plen] = '\0'; in _menui_match_pattern()
416 if (_menui_match_items(menu, direction, in _menui_match_pattern()
429 _menui_draw_item(MENU *menu, int item) in _menui_draw_item() argument
433 mark_len = max(menu->mark.length, menu->unmark.length); in _menui_draw_item()
435 wmove(menu->scrwin, in _menui_draw_item()
436 menu->items[item]->row - menu->top_row, in _menui_draw_item()
437 menu->items[item]->col * (menu->col_width + 1)); in _menui_draw_item()
439 if (menu->cur_item == item) in _menui_draw_item()
440 wattrset(menu->scrwin, menu->fore); in _menui_draw_item()
441 if ((menu->items[item]->opts & O_SELECTABLE) != O_SELECTABLE) in _menui_draw_item()
442 wattron(menu->scrwin, menu->grey); in _menui_draw_item()
449 if ((menu->items[item]->selected == 1) || in _menui_draw_item()
450 (((menu->opts & O_ONEVALUE) == O_ONEVALUE) && in _menui_draw_item()
451 (menu->cur_item == item))) { in _menui_draw_item()
452 if (menu->mark.string != NULL) { in _menui_draw_item()
453 for (j = 0; j < menu->mark.length; j++) { in _menui_draw_item()
454 waddch(menu->scrwin, in _menui_draw_item()
455 menu->mark.string[j]); in _menui_draw_item()
459 for (j = menu->mark.length; j < mark_len; j++) in _menui_draw_item()
460 waddch(menu->scrwin, ' '); in _menui_draw_item()
462 if (menu->unmark.string != NULL) { in _menui_draw_item()
463 for (j = 0; j < menu->unmark.length; j++) { in _menui_draw_item()
464 waddch(menu->scrwin, in _menui_draw_item()
465 menu->unmark.string[j]); in _menui_draw_item()
469 for (j = menu->unmark.length; j < mark_len; j++) in _menui_draw_item()
470 waddch(menu->scrwin, ' '); in _menui_draw_item()
474 for (j=0; j < menu->items[item]->name.length; j++) in _menui_draw_item()
475 waddch(menu->scrwin, in _menui_draw_item()
476 menu->items[item]->name.string[j]); in _menui_draw_item()
478 pad_len = menu->col_width - menu->items[item]->name.length in _menui_draw_item()
480 if ((menu->opts & O_SHOWDESC) == O_SHOWDESC) { in _menui_draw_item()
481 pad_len -= menu->items[item]->description.length - 1; in _menui_draw_item()
483 waddch(menu->scrwin, menu->pad); in _menui_draw_item()
484 for (j = 0; j < menu->items[item]->description.length; j++) { in _menui_draw_item()
485 waddch(menu->scrwin, in _menui_draw_item()
486 menu->items[item]->description.string[j]); in _menui_draw_item()
490 waddch(menu->scrwin, ' '); in _menui_draw_item()
492 menu->items[item]->visible = 1; in _menui_draw_item()
495 wattrset(menu->scrwin, menu->back); in _menui_draw_item()
502 if ((menu->items[item]->col > 0) && in _menui_draw_item()
503 (menu->items[item]->col < (menu->item_cols - 1))) { in _menui_draw_item()
504 wmove(menu->scrwin, in _menui_draw_item()
505 menu->items[item]->row - menu->top_row, in _menui_draw_item()
506 menu->items[item]->col * (menu->col_width + 1) - 1); in _menui_draw_item()
507 waddch(menu->scrwin, ' '); in _menui_draw_item()
511 pos_menu_cursor(menu); in _menui_draw_item()
518 _menui_draw_menu(MENU *menu) in _menui_draw_menu() argument
523 rowmajor = ((menu->opts & O_ROWMAJOR) == O_ROWMAJOR); in _menui_draw_menu()
527 incr = menu->item_cols; in _menui_draw_menu()
529 stride = menu->item_rows; in _menui_draw_menu()
534 for (i = 0; i < menu->item_count; i += incr) { in _menui_draw_menu()
535 if (menu->items[i]->row == menu->top_row) in _menui_draw_menu()
538 for (j = 0; j < menu->item_cols; j++) { in _menui_draw_menu()
540 if (offset >= menu->item_count) in _menui_draw_menu()
542 menu->items[offset]->visible = 0; in _menui_draw_menu()
546 wmove(menu->scrwin, 0, 0); in _menui_draw_menu()
548 menu->col_width = getmaxx(menu->scrwin) / menu->cols; in _menui_draw_menu()
550 for (cur_row = 0; cur_row < menu->rows; cur_row++) { in _menui_draw_menu()
551 for (j = 0; j < menu->cols; j++) { in _menui_draw_menu()
553 if (offset >= menu->item_count) { in _menui_draw_menu()
555 wattrset(menu->scrwin, menu->back); in _menui_draw_menu()
557 row = menu->items[menu->item_count - 1]->row; in _menui_draw_menu()
560 wmove(menu->scrwin, cur_row, in _menui_draw_menu()
561 j * (menu->col_width + 1)); in _menui_draw_menu()
562 for (k = 0; k < menu->col_width; k++) in _menui_draw_menu()
563 waddch(menu->scrwin, ' '); in _menui_draw_menu()
565 _menui_draw_item(menu, offset); in _menui_draw_menu()
573 if (row_count < menu->item_rows) { in _menui_draw_menu()
574 for (cur_row = row_count; cur_row < menu->item_rows; cur_row++) { in _menui_draw_menu()
575 for (j = 0; j < menu->item_cols; j++) { in _menui_draw_menu()
577 if (offset >= menu->item_count) in _menui_draw_menu()
579 menu->items[offset]->visible = 0; in _menui_draw_menu()
594 _menui_max_item_size(MENU *menu) in _menui_max_item_size() argument
598 with_desc = ((menu->opts & O_SHOWDESC) == O_SHOWDESC); in _menui_max_item_size()
600 for (i = 0; i < menu->item_count; i++) { in _menui_max_item_size()
601 width = menu->items[i]->name.length in _menui_max_item_size()
602 + max(menu->mark.length, menu->unmark.length); in _menui_max_item_size()
604 width += menu->items[i]->description.length + 1; in _menui_max_item_size()
606 menu->max_item_width = max(menu->max_item_width, width); in _menui_max_item_size()
616 _menui_redraw_menu(MENU *menu, int old_top_row, int old_cur_item) in _menui_redraw_menu() argument
619 if (menu->top_row != old_top_row) { in _menui_redraw_menu()
626 wclear(menu->scrwin); in _menui_redraw_menu()
627 _menui_draw_menu(menu); in _menui_redraw_menu()
629 if (menu->cur_item != old_cur_item) { in _menui_redraw_menu()
631 _menui_draw_item(menu, old_cur_item); in _menui_redraw_menu()
634 _menui_draw_item(menu, menu->cur_item); in _menui_redraw_menu()