#include <common.h> #include <string.h> static void draw_menu(WINDOW *win, int wh, int ww, char *prompt, char **options, int nopt, int highlight); int menu_select(WINDOW *win, int wh, int ww, char *prompt, char **options, int nopt) { int curr_opt = 0; for(;;) { draw_menu(win, wh, ww, prompt, options, nopt, curr_opt); int c = wgetch(win); switch(c) { case 'w': if(curr_opt == 0) curr_opt = nopt - 1; else curr_opt--; break; case 's': if(curr_opt == nopt - 1) curr_opt = 0; else curr_opt++; break; case '\n': return curr_opt; } } } void draw_string_center(WINDOW *win, int ww, int y, char *s) { int x = ww / 2 - strlen(s) / 2; mvwaddstr(win, y, x, s); } static void draw_menu(WINDOW *win, int wh, int ww, char *prompt, char **options, int nopt, int highlight) { wborder(win, '|', '|', '-', '-', '+', '+', '+', '+'); int y = wh / 2 - nopt / 2 - 2; wattron(win, A_BOLD); draw_string_center(win, ww, y, prompt); y += 2; wattroff(win, A_BOLD); for(int i = 0; i < nopt; ++i) { if(i == highlight) { wattron(win, A_STANDOUT); } draw_string_center(win, ww, y + i, options[i]); if(i == highlight) { wattroff(win, A_STANDOUT); } } wrefresh(win); }