MCPcopy Create free account
hub / github.com/NetHack/NetHack / menu_get_selections

Function menu_get_selections

win/curses/cursdial.c:1505–1656  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1503}
1504
1505static int
1506menu_get_selections(WINDOW *win, nhmenu *menu, int how)
1507{
1508 int curletter, menucmd;
1509 long count = -1L;
1510 int count_letter = '\0';
1511 int curpage = !menu->bottom_heavy ? 1 : menu->num_pages;
1512 int num_selected = 0;
1513 boolean dismiss = FALSE;
1514 char selectors[256], groupaccels[256];
1515 nhmenu_item *menu_item_ptr;
1516
1517 activemenu = win;
1518 menu_display_page(win, menu, curpage, selectors, groupaccels);
1519
1520 while (!dismiss) {
1521 curletter = curses_getch();
1522
1523 if (curletter == ERR) {
1524 iflags.term_gone = 1;
1525 num_selected = -1;
1526 dismiss = TRUE;
1527 }
1528
1529 if (curletter == '\033') {
1530 curletter = curses_convert_keys(curletter);
1531 }
1532
1533 switch (how) {
1534 case PICK_NONE:
1535 if (menu->num_pages == 1) {
1536 if (curletter == KEY_ESC) {
1537 num_selected = -1;
1538 } else {
1539 num_selected = 0;
1540 }
1541 dismiss = TRUE;
1542 break;
1543 }
1544 break;
1545 case PICK_ANY:
1546 if (curletter <= 0 || curletter >= 256
1547 || (!selectors[curletter] && !groupaccels[curletter])) {
1548 menucmd = (curletter <= 0 || curletter >= 255) ? curletter
1549 : (int) (uchar) map_menu_cmd(curletter);
1550 switch (menucmd) {
1551 case MENU_SELECT_PAGE:
1552 (void) menu_operation(win, menu, SELECT, curpage);
1553 break;
1554 case MENU_SELECT_ALL:
1555 curpage = menu_operation(win, menu, SELECT, 0);
1556 break;
1557 case MENU_UNSELECT_PAGE:
1558 (void) menu_operation(win, menu, DESELECT, curpage);
1559 break;
1560 case MENU_UNSELECT_ALL:
1561 curpage = menu_operation(win, menu, DESELECT, 0);
1562 break;

Callers 1

curses_display_nhmenuFunction · 0.85

Calls 11

menu_display_pageFunction · 0.85
curses_getchFunction · 0.85
curses_convert_keysFunction · 0.85
map_menu_cmdFunction · 0.85
menu_operationFunction · 0.85
isdigitFunction · 0.85
curses_get_countFunction · 0.85
curses_count_windowFunction · 0.85
menu_clear_selectionsFunction · 0.85
menu_select_deselectFunction · 0.85

Tested by

no test coverage detected