b8ab467712cc9e64b88cc60b21bf99fc9ccf24e6
[taskasaur.git] / headers / menu.h
1
2 #ifndef __MENU_H__
3 #define __MENU_H__
4
5 #include <stdbool.h>
6 #include <ncurses.h>
7
8 /* ncurses doesn't support multiline menu items,
9  * so i wrote my own menu lib */
10
11 typedef enum {
12     MENU_UP = 0,
13     MENU_DOWN,
14     MENU_TOP,
15     MENU_BOTTOM,
16     MENU_MOVE_UP,
17     MENU_MOVE_DOWN,
18     MENU_DELETE,
19     MENU_APPEND,
20     MENU_INSERT_ABOVE,
21     MENU_INSERT_BELOW
22 } MenuAction;
23
24 typedef struct Menu Menu;
25 typedef struct MenuItem MenuItem;
26
27 extern MenuItem* create_menuitem(char* contents);
28
29 extern Menu* create_menu(char* menu_name, MenuItem** item_list);
30 extern int set_menu_win(Menu* menu, WINDOW* win);
31 extern MenuItem* get_menu_items(Menu* menu);
32 extern int set_menu_focus(Menu* menu, bool focus);
33 extern int get_selected_item(Menu* menu);
34 extern int set_selected_item(Menu* menu, int selected_item);
35 extern int get_menu_length(Menu* menu);
36
37 extern int menu_driver(Menu* menu, MenuAction action);
38
39 extern int render_menu(Menu* menu);
40
41 extern int free_menu(Menu* menu);
42
43 #endif