You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
1.3 KiB
59 lines
1.3 KiB
#include <ncurses.h>
|
|
#include "menu.h"
|
|
|
|
#define ctrl(x) (x & 0x1F) // Detection of ctrl+x presses please do not forget that in unix ctrl+c and ctrl+z are special commands.
|
|
|
|
// INFO: wgetch(win); or getch(); // getch will make a refresh for us.
|
|
|
|
int main(int argv, char ** argc)
|
|
{
|
|
//Variables
|
|
int xMax, yMax = 0;
|
|
char pressed;
|
|
|
|
j
|
|
//Init Ncurses
|
|
initscr();
|
|
|
|
if(has_colors() == false) // If the terminal does have colors
|
|
{
|
|
printf("This menu is not supported by terminals without colors\n");
|
|
return -1;
|
|
}
|
|
|
|
start_color();
|
|
|
|
noecho();
|
|
curs_set(0); // Cursor won't show up
|
|
getmaxyx(stdscr, yMax, xMax);
|
|
// size y size x pos y pos x
|
|
WINDOW *win = newwin(yMax/2, xMax/2, yMax/4, xMax/4);
|
|
box(win,0,0);
|
|
|
|
//Setc colors
|
|
init_pair(1, COLOR_WHITE, COLOR_BLUE);
|
|
|
|
std::string menu1[4]={"New","Open","Save","Exit"};
|
|
std::string menu2[3]={"Copy","Cut","Paste"};
|
|
std::string menu3[5]={"Terminal","Help","Info","Update","Manual"};
|
|
|
|
// Second stage declarations
|
|
Menu menus[3]={ // init the menus
|
|
Menu("File", 'f', menu1, 4),
|
|
Menu("Edit", 'e', menu2, 3),
|
|
Menu("Options", 'o', menu3, 5),
|
|
};
|
|
|
|
MenuBar menuBar = MenuBar(win, menus, 3); // init the menu bar
|
|
menuBar.draw();
|
|
|
|
while(pressed = wgetch(win))
|
|
{
|
|
menuBar.handleTrigger(pressed);
|
|
menuBar.draw();
|
|
}
|
|
|
|
endwin();
|
|
return 0;
|
|
}
|