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

Function menu_display_page

win/curses/cursdial.c:1196–1366  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1194extern color_attr curses_menu_promptstyle; /*cursmain.c */
1195
1196static void
1197menu_display_page(
1198 WINDOW *win,
1199 nhmenu *menu,
1200 int page_num, /* page number, 1..n rather than 0..n-1 */
1201 char *selectors, /* selection letters on current page */
1202 char *groupaccels) /* group accelerator characters on any page */
1203{
1204 nhmenu_item *menu_item_ptr;
1205 int count, curletter, entry_cols, start_col, num_lines;
1206 char *tmpstr;
1207 boolean first_accel = TRUE;
1208 int color = NO_COLOR, attr;
1209
1210 /* letters assigned to entries on current page */
1211 if (selectors)
1212 (void) memset((genericptr_t) selectors, 0, 256);
1213 /* characters assigned to group accelerators on any page */
1214 if (groupaccels)
1215 (void) memset((genericptr_t) groupaccels, 0, 256);
1216
1217 /* Cycle through entries until we are on the correct page */
1218
1219 menu_item_ptr = menu->entries;
1220
1221 while (menu_item_ptr != NULL) {
1222 if (menu_item_ptr->page_num == page_num) {
1223 break;
1224 }
1225 menu_item_ptr = menu_item_ptr->next_item;
1226 }
1227
1228 if (menu_item_ptr == NULL) { /* Page not found */
1229 impossible("menu_display_page: attempt to display nonexistent page");
1230 return;
1231 }
1232
1233 werase(win);
1234
1235 if (menu->prompt && *menu->prompt) {
1236 num_lines = curses_num_lines(menu->prompt, menu->width);
1237
1238 for (count = 0; count < num_lines; count++) {
1239 tmpstr = curses_break_str(menu->prompt, menu->width, count + 1);
1240 curses_menu_color_attr(win, curses_menu_promptstyle.color,
1241 curses_menu_promptstyle.attr, ON);
1242 mvwprintw(win, count + 1, 1, "%s", tmpstr);
1243 curses_menu_color_attr(win, curses_menu_promptstyle.color,
1244 curses_menu_promptstyle.attr, OFF);
1245 free(tmpstr);
1246 }
1247 }
1248
1249 /* Display items for current page */
1250
1251 while (menu_item_ptr != NULL) {
1252 /* collect group accelerators for every page */
1253 if (groupaccels && menu_item_ptr->identifier.a_void != NULL) {

Callers 3

menu_get_selectionsFunction · 0.85
menu_operationFunction · 0.85

Calls 7

curses_num_linesFunction · 0.85
curses_break_strFunction · 0.85
curses_menu_color_attrFunction · 0.85
menu_get_accelFunction · 0.85
curses_toggle_color_attrFunction · 0.85
curses_win_clr_initedFunction · 0.85
impossibleFunction · 0.50

Tested by

no test coverage detected