Lines Matching full:all

54 #define okIndex(all,index) ((index) >= 0 && (index) < (all)->item_no)  argument
60 DIALOG_LISTITEM *items; /* all items in the widget */
76 index2row(ALL_DATA * all, int choice, int selected) in index2row() argument
78 MY_DATA *data = all->list + selected; in index2row()
81 if (okIndex(all, choice)) { in index2row()
84 for (row = 0; row < all->item_no; ++row) { in index2row()
86 choice, all->items + choice, in index2row()
88 if (myItem(data, row) == all->items + choice) { in index2row()
102 row2index(ALL_DATA * all, int row, int selected) in row2index() argument
104 MY_DATA *data = all->list + selected; in row2index()
107 for (n = 0; n < all->item_no; ++n) { in row2index()
110 n, all->items + n)); in row2index()
111 if (myItem(data, row) == all->items + n) { in row2index()
125 print_item(ALL_DATA * all, in print_item() argument
135 int climit = (all->item_x - all->check_x - 1); in print_item()
146 (void) wmove(win, row, all->check_x); in print_item()
155 (void) wmove(win, row, all->item_x); in print_item()
156 climit = (getmaxx(win) - all->item_x + 1); in print_item()
169 print_1_list(ALL_DATA * all, in print_1_list() argument
173 MY_DATA *data = all->list + selected; in print_1_list()
174 DIALOG_LISTITEM *target = (okIndex(all, choice) in print_1_list()
175 ? all->items + choice in print_1_list()
180 int top_row = index2row(all, data->top_index, selected); in print_1_list()
189 print_item(all, in print_1_list()
211 prev_item(ALL_DATA * all, int choice, int selected) in prev_item() argument
214 int row = index2row(all, choice, selected); in prev_item()
217 result = row2index(all, row, selected); in prev_item()
227 stop_prev(ALL_DATA * all, int choice, int selected) in stop_prev() argument
229 return (prev_item(all, choice, selected) == choice); in stop_prev()
253 next_item(ALL_DATA * all, int choice, int selected) in next_item() argument
255 MY_DATA *data = all->list + selected; in next_item()
257 int row = index2row(all, choice, selected); in next_item()
260 result = row2index(all, row + 1, selected); in next_item()
270 first_item(ALL_DATA * all, int selected) in first_item() argument
272 MY_DATA *data = all->list + selected; in first_item()
278 for (n = 0; n < all->item_no; ++n) { in first_item()
279 if (myItem(data, 0) == &all->items[n]) { in first_item()
293 last_item(ALL_DATA * all, int selected) in last_item() argument
295 MY_DATA *data = all->list + selected; in last_item()
303 result = row2index(all, result, selected); in last_item()
310 skip_rows(ALL_DATA * all, int row, int skip, int selected) in skip_rows() argument
312 MY_DATA *data = all->list + selected; in skip_rows()
318 for (n = row + 1; (n < all->item_no) && (n <= row + skip); ++n) { in skip_rows()
337 closest_item(ALL_DATA * all, int choice, int selected) in closest_item() argument
345 if ((all->items[n].state != 0) == selected) { in closest_item()
350 for (n = choice; n < all->item_no; ++n) { in closest_item()
351 if ((all->items[n].state != 0) == selected) { in closest_item()
372 print_both(ALL_DATA * all, in print_both() argument
377 WINDOW *dialog = wgetparent(all->list[0].win); in print_both()
382 MY_DATA *data = all->list + selected; in print_both()
384 int thumb_top = index2row(all, data->top_index, selected); in print_both()
385 int thumb_max = index2row(all, -1, selected); in print_both()
388 print_1_list(all, choice, selected); in print_both()
396 data->box_x + all->check_x, in print_both()
408 set_top_item(ALL_DATA * all, int choice, int selected) in set_top_item() argument
410 if (choice != all->list[selected].top_index) { in set_top_item()
414 all->list[selected].top_index = choice; in set_top_item()
423 fix_top_item(ALL_DATA * all, int cur_item, int selected) in fix_top_item() argument
425 int top_item = all->list[selected].top_index; in fix_top_item()
426 int cur_row = index2row(all, cur_item, selected); in fix_top_item()
427 int top_row = index2row(all, top_item, selected); in fix_top_item()
431 } else if ((cur_row - top_row) >= all->use_height) { in fix_top_item()
432 top_item = row2index(all, cur_row + 1 - all->use_height, selected); in fix_top_item()
434 if (cur_row < all->use_height) { in fix_top_item()
435 top_item = row2index(all, 0, selected); in fix_top_item()
439 set_top_item(all, top_item, selected); in fix_top_item()
443 append_right_side(ALL_DATA * all, int choice) in append_right_side() argument
445 MY_DATA *data = &all->list[1]; in append_right_side()
447 for (j = 0; j < all->item_no; ++j) { in append_right_side()
449 myItem(data, j) = &all->items[choice]; in append_right_side()
456 amend_right_side(ALL_DATA * all, int choice) in amend_right_side() argument
458 MY_DATA *data = &all->list[1]; in amend_right_side()
460 for (j = 0; j < all->item_no; ++j) { in amend_right_side()
461 if (myItem(data, j) == &all->items[choice]) { in amend_right_side()
462 for (k = j; k < all->item_no; ++k) { in amend_right_side()
472 fill_one_side(ALL_DATA * all, int selected) in fill_one_side() argument
475 MY_DATA *data = all->list + selected; in fill_one_side()
477 for (i = j = 0; j < all->item_no; ++j) { in fill_one_side()
479 if ((all->items[j].state != 0) == selected) { in fill_one_side()
480 myItem(data, i) = all->items + j; in fill_one_side()
481 TRACE(("! %s item[%d] %p = all[%d] %p\n", in fill_one_side()
484 j, all->items + j)); in fill_one_side()
492 fill_both_sides(ALL_DATA * all) in fill_both_sides() argument
497 fill_one_side(all, k); in fill_both_sides()
553 ALL_DATA all; in dlg_buildlist() local
554 MY_DATA *data = all.list; in dlg_buildlist()
577 memset(&all, 0, sizeof(all)); in dlg_buildlist()
578 all.items = items; in dlg_buildlist()
579 all.item_no = item_no; in dlg_buildlist()
583 fill_both_sides(&all); in dlg_buildlist()
588 if ((cur_item = first_item(&all, 0)) < 0) in dlg_buildlist()
589 cur_item = first_item(&all, 1); in dlg_buildlist()
604 all.use_height = list_height; in dlg_buildlist()
605 all.use_width = (2 * (dlg_calc_list_width(item_no, items) in dlg_buildlist()
609 all.use_width = MAX(26, all.use_width); in dlg_buildlist()
610 if (all.use_height == 0) { in dlg_buildlist()
612 dlg_auto_size(title, prompt, &height, &width, MIN_HIGH, all.use_width); in dlg_buildlist()
613 dlg_calc_listh(&height, &all.use_height, item_no); in dlg_buildlist()
617 MIN_HIGH + all.use_height, all.use_width); in dlg_buildlist()
635 dlg_mouse_setbase(all.base_x = x, all.base_y = y); in dlg_buildlist()
655 all.use_height = height - MIN_HIGH - cur_y; in dlg_buildlist()
656 if (all.use_height <= 0) in dlg_buildlist()
657 all.use_height = 1; in dlg_buildlist()
661 data[k].win = dlg_sub_window(dialog, all.use_height, list_width, in dlg_buildlist()
667 all.use_height + 2 * MARGIN, in dlg_buildlist()
684 all.use_width = (list_width - 6 * MARGIN); in dlg_buildlist()
686 full_width = MIN(all.use_width, text_width); in dlg_buildlist()
688 full_width = MIN(all.use_width, name_width); in dlg_buildlist()
692 && all.use_width > 0 in dlg_buildlist()
693 && text_width + name_width > all.use_width) { in dlg_buildlist()
694 int need = (int) (0.25 * all.use_width); in dlg_buildlist()
696 int want = (int) (all.use_width * ((double) name_width) / in dlg_buildlist()
700 text_width = all.use_width - name_width; in dlg_buildlist()
705 all.check_x = (all.use_width - full_width) / 2; in dlg_buildlist()
706 all.item_x = ((dialog_vars.no_tags in dlg_buildlist()
711 + all.check_x); in dlg_buildlist()
714 j = MIN(all.use_height, item_no); in dlg_buildlist()
722 set_top_item(&all, top_item, i); in dlg_buildlist()
724 set_top_item(&all, 0, i); in dlg_buildlist()
732 all.use_height, in dlg_buildlist()
734 2 * KEY_MAX + (i * (1 + all.use_height)), in dlg_buildlist()
743 int at_top = index2row(&all, moi->top_index, which); in dlg_buildlist()
744 int at_end = index2row(&all, -1, which); in dlg_buildlist()
745 int at_bot = skip_rows(&all, at_top, all.use_height, which); in dlg_buildlist()
755 print_both(&all, cur_item); in dlg_buildlist()
761 int cur_row = index2row(&all, cur_item, which); in dlg_buildlist()
768 + all.check_x + 1); in dlg_buildlist()
786 i = (key - 2 * KEY_MAX) % (1 + all.use_height); in dlg_buildlist()
787 j = (key - 2 * KEY_MAX) / (1 + all.use_height); in dlg_buildlist()
788 k = row2index(&all, i + at_top, j); in dlg_buildlist()
796 fix_top_item(&all, k, j); in dlg_buildlist()
799 at_top = index2row(&all, moi->top_index, which); in dlg_buildlist()
800 at_bot = skip_rows(&all, at_top, all.use_height, which); in dlg_buildlist()
802 print_both(&all, cur_item); in dlg_buildlist()
835 if ((new_choice = next_item(&all, cur_item, which)) == cur_item) { in dlg_buildlist()
836 new_choice = prev_item(&all, cur_item, which); in dlg_buildlist()
845 fill_one_side(&all, 0); in dlg_buildlist()
847 append_right_side(&all, cur_item); in dlg_buildlist()
849 amend_right_side(&all, cur_item); in dlg_buildlist()
852 fill_both_sides(&all); in dlg_buildlist()
855 set_top_item(&all, new_choice, which); in dlg_buildlist()
859 fix_top_item(&all, cur_item, !which); in dlg_buildlist()
862 print_both(&all, cur_item); in dlg_buildlist()
952 i = closest_item(&all, cur_item, 0); in dlg_buildlist()
953 fix_top_item(&all, i, 0); in dlg_buildlist()
957 i = last_item(&all, 1); in dlg_buildlist()
959 i = closest_item(&all, cur_item, 1); in dlg_buildlist()
961 fix_top_item(&all, i, 1); in dlg_buildlist()
968 if ((temp -= all.use_height) < 0) in dlg_buildlist()
970 i = row2index(&all, temp, which); in dlg_buildlist()
974 if ((at_end - at_bot) < all.use_height) { in dlg_buildlist()
975 i = next_item(&all, in dlg_buildlist()
976 row2index(&all, at_end, which), in dlg_buildlist()
979 i = next_item(&all, in dlg_buildlist()
980 row2index(&all, at_bot, which), in dlg_buildlist()
983 set_top_item(&all, in dlg_buildlist()
984 next_item(&all, in dlg_buildlist()
985 row2index(&all, at_top, which), in dlg_buildlist()
988 at_bot = skip_rows(&all, at_top, all.use_height, which); in dlg_buildlist()
993 i = first_item(&all, which); in dlg_buildlist()
996 i = last_item(&all, which); in dlg_buildlist()
999 i = prev_item(&all, cur_item, which); in dlg_buildlist()
1000 if (stop_prev(&all, cur_item, which)) in dlg_buildlist()
1004 i = next_item(&all, cur_item, which); in dlg_buildlist()
1014 int now_at = index2row(&all, i, which); in dlg_buildlist()
1026 if ((at_bot - at_top) >= all.use_height) { in dlg_buildlist()
1027 set_top_item(&all, in dlg_buildlist()
1028 next_item(&all, moi->top_index, which), in dlg_buildlist()
1031 at_top = index2row(&all, moi->top_index, which); in dlg_buildlist()
1032 at_bot = skip_rows(&all, at_top, all.use_height, which); in dlg_buildlist()
1046 if ((at_bot - at_top) > all.use_height) { in dlg_buildlist()
1047 set_top_item(&all, in dlg_buildlist()
1048 next_item(&all, moi->top_index, which), in dlg_buildlist()
1051 (at_bot - at_top) >= all.use_height) { in dlg_buildlist()
1052 set_top_item(&all, in dlg_buildlist()
1053 next_item(&all, moi->top_index, which), in dlg_buildlist()
1066 set_top_item(&all, in dlg_buildlist()
1067 prev_item(&all, moi->top_index, which), in dlg_buildlist()
1069 at_top = index2row(&all, moi->top_index, which); in dlg_buildlist()
1086 print_both(&all, cur_item); in dlg_buildlist()
1143 if (myItem(all.list + k, row) == 0) in dlg_buildlist()
1145 choice = row2index(&all, row, k); in dlg_buildlist()