#include #include #ifndef _MENU_H_ #define _MENU_H_ class Menu { public: Menu(std::string text, char trigger) { this->text = text; this->trigger = trigger; } int start_x; std::string text; char trigger; }; class MenuBar { public: MenuBar(WINDOW *win,Menu *menus, int num_menus) { this->win = win; this->menus = menus; this->num_menus = num_menus; this->selected_menu = -1; int current_pos = 2; for (int i = 0; i < num_menus; i++) { this->menus[i].start_x=current_pos; current_pos += this->menus[i].text.length() + 1; } } void draw() { for (int i = 0; i < num_menus; i++) { int start_x = this->menus[i].start_x; std::string text = this->menus[i].text; if(selected_menu == i) { wattron(win, A_STANDOUT); } mvwprintw(win,0,start_x,text.c_str()); if(selected_menu == i) { wattroff(win, A_STANDOUT); } } wrefresh(win); } void handleTrigger(char trigger) { selected_menu = -1; for (int i = 0; i < num_menus; i++) { if(trigger == this->menus[i].trigger) { selected_menu = i; break; } } } WINDOW *win; Menu *menus; int num_menus; int selected_menu; }; #endif