Compare commits
2 Commits
a4f0f0e1f9
...
428d40b0ef
| Author | SHA1 | Date | |
|---|---|---|---|
| 428d40b0ef | |||
| 640ea1b267 |
@@ -6,7 +6,7 @@
|
||||
|
||||
class Menu {
|
||||
public:
|
||||
Menu(std::string text, char trigger, std::string *items, int num_items)
|
||||
Menu(std::string text, int trigger, std::string *items, int num_items)
|
||||
{
|
||||
this->text = text;
|
||||
this->trigger = trigger;
|
||||
@@ -16,7 +16,7 @@ class Menu {
|
||||
}
|
||||
int start_x;
|
||||
std::string text;
|
||||
char trigger;
|
||||
int trigger;
|
||||
std::string *items;
|
||||
int num_items;
|
||||
int selected_item;
|
||||
@@ -56,6 +56,26 @@ class MenuBar {
|
||||
}
|
||||
}
|
||||
|
||||
void resize(WINDOW *new_win)
|
||||
{
|
||||
delwin(menuwin);
|
||||
|
||||
this->win = new_win;
|
||||
|
||||
int yMax,xMax,yBeg,xBeg;
|
||||
getmaxyx(win,yMax,xMax);
|
||||
getbegyx(win,yBeg,xBeg);
|
||||
|
||||
menuwin = newwin(yMax-2,xMax-2,yBeg+1,xBeg+1);
|
||||
|
||||
int current_pos = 2;
|
||||
for (int i = 0; i < num_menus; i++)
|
||||
{
|
||||
menus[i].start_x = current_pos;
|
||||
current_pos += menus[i].text.length() + 1;
|
||||
}
|
||||
}
|
||||
|
||||
void reset()
|
||||
{
|
||||
for (int i = 0; i < num_menus; i++)
|
||||
@@ -99,10 +119,10 @@ class MenuBar {
|
||||
{
|
||||
switch(ch)
|
||||
{
|
||||
case 'k':
|
||||
case 'j':
|
||||
menu.selectNextItem();
|
||||
break;
|
||||
case 'j':
|
||||
case 'k':
|
||||
menu.selectPrevItem();
|
||||
break;
|
||||
default:
|
||||
|
||||
@@ -20,7 +20,7 @@ int main(int argc, char **argv){
|
||||
int yMax,xMax;
|
||||
getmaxyx(stdscr,yMax,xMax);
|
||||
|
||||
WINDOW *win = newwin(yMax-1,xMax-1,yMax-yMax+1,xMax-xMax+1);
|
||||
WINDOW *win = newwin(yMax-1,xMax-1,1,1);
|
||||
box(win,0,0);
|
||||
|
||||
string menu1[] = {"New","Open","Save","Exit"};
|
||||
@@ -36,10 +36,26 @@ int main(int argc, char **argv){
|
||||
MenuBar menubar = MenuBar(win,menus,3);
|
||||
menubar.draw();
|
||||
|
||||
char ch;
|
||||
keypad(win, TRUE);
|
||||
int ch;
|
||||
while((ch = wgetch(win))){
|
||||
menubar.handleTrigger(ch);
|
||||
menubar.draw();
|
||||
if(ch <= 255)
|
||||
{
|
||||
menubar.handleTrigger(ch);
|
||||
menubar.draw();
|
||||
}
|
||||
else if(ch == KEY_RESIZE)
|
||||
{
|
||||
clear();
|
||||
refresh();
|
||||
delwin(win);
|
||||
getmaxyx(stdscr,yMax,xMax);
|
||||
win = newwin(yMax-1,xMax-1,1,1);
|
||||
box(win,0,0);
|
||||
menubar.resize(win);
|
||||
menubar.draw();
|
||||
wrefresh(win);
|
||||
}
|
||||
}
|
||||
|
||||
endwin();
|
||||
|
||||
Reference in New Issue
Block a user