You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

102 lines
1.5 KiB
C

2 years ago
#include <ncurses.h>
#include <menu.h>
#include <stdlib.h>
int curs_init();
int curs_end(ITEM* item);
2 years ago
int main() {
curs_init();
init_color();
mousemask(BUTTON1_CLICKED | BUTTON1_DOUBLE_CLICKED,NULL);
2 years ago
MEVENT event;
int c;
ITEM* cur_item;
ITEM* items[] = {
new_item("File",""),
new_item("Edit",""),
new_item("Compile",""),
new_item("Help",""),
new_item("Quit",""),
NULL
};
MENU* menu = new_menu(items);
set_menu_win(menu,stdscr);
int maxx;
int maxy;
getmaxyx(stdscr,maxy,maxx);
WINDOW* subwindow = derwin(stdscr,1,maxx-1,0,0);
keypad(subwindow,TRUE);
2 years ago
set_menu_sub(menu,subwindow);
set_menu_format(menu,1,maxx);
set_menu_mark(menu,"");
post_menu(menu);
refresh();
while (true) {
c = getch();
switch(c) {
case KEY_LEFT:
menu_driver(menu,REQ_LEFT_ITEM);
break;
case KEY_RIGHT:
menu_driver(menu,REQ_RIGHT_ITEM);
break;
case KEY_MOUSE:
if (getmouse(&event) == OK) {
if (event.bstate & BUTTON1_DOUBLE_CLICKED) {
cur_item = current_item(menu);
curs_end(cur_item);
return 0;
} else {
ungetmouse(&event);
menu_driver(menu,c);
break;
}
}
2 years ago
break;
case 10:
cur_item = current_item(menu);
curs_end(cur_item);
2 years ago
return 0;
}
}
endwin();
}
int curs_init() {
initscr();
cbreak();
noecho();
curs_set(0);
keypad(stdscr,TRUE);
return 0;
}
int curs_end(ITEM* item) {
endwin();
printf("You selected %s\n",item_name(item));
return 0;
}