Compare commits

..

3 Commits

Author SHA1 Message Date
b0a440deae Started working on color support 2023-03-21 08:09:21 -05:00
02f41a62fc Added .gitignore 2023-03-21 07:54:31 -05:00
7464adb129 Added functions for init and end, fixed bug with double-click 2023-03-21 07:54:12 -05:00
2 changed files with 65 additions and 10 deletions

1
.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
test

74
test.c
View File

@@ -1,13 +1,24 @@
#include <ncurses.h> #include <ncurses.h>
#include <menu.h> #include <menu.h>
#include <stdlib.h> #include <stdlib.h>
int curs_init();
void color_init();
int curs_end(ITEM* item);
int main() { int main() {
initscr();
cbreak(); curs_init();
noecho();
curs_set(0); color_init(); /* If the program doesn't exit after this function call, it is
keypad(stdscr,TRUE); assumed that the terminal supports colors */
mousemask(BUTTON1_PRESSED | BUTTON1_RELEASED | BUTTON1_CLICKED,NULL);
init_pair(1,COLOR_BLACK,COLOR_WHITE);
mousemask(BUTTON1_CLICKED | BUTTON1_DOUBLE_CLICKED,NULL);
MEVENT event; MEVENT event;
int c; int c;
ITEM* cur_item; ITEM* cur_item;
@@ -30,7 +41,11 @@ int main() {
getmaxyx(stdscr,maxy,maxx); getmaxyx(stdscr,maxy,maxx);
WINDOW* subwindow = derwin(stdscr,1,maxx-1,1,1); WINDOW* subwindow = derwin(stdscr,1,maxx-1,0,0);
wbkgd(subwindow,COLOR_PAIR(1));
keypad(subwindow,TRUE);
set_menu_sub(menu,subwindow); set_menu_sub(menu,subwindow);
@@ -52,13 +67,22 @@ int main() {
menu_driver(menu,REQ_RIGHT_ITEM); menu_driver(menu,REQ_RIGHT_ITEM);
break; break;
case KEY_MOUSE: case KEY_MOUSE:
menu_driver(menu,c); 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;
}
}
break; break;
case 10: case 10:
cur_item = current_item(menu); cur_item = current_item(menu);
endwin(); curs_end(cur_item);
printf("You selected %s\n",item_name(cur_item));
return 0; return 0;
@@ -69,3 +93,33 @@ int main() {
endwin(); endwin();
} }
int curs_init() {
initscr();
cbreak();
noecho();
curs_set(0);
keypad(stdscr,TRUE);
return 0;
}
void color_init() {
if (has_colors() == FALSE) {
endwin();
printf("Your terminal does not support colors.\n");
exit(1);
}
start_color();
}
int curs_end(ITEM* item) {
endwin();
printf("You selected %s\n",item_name(item));
return 0;
}