X-Git-Url: https://git.danieliu.xyz/?a=blobdiff_plain;f=headers%2Fmenu.h;h=b49e5b0d0057ec98b8dd9ca9e2e0210edc14f65d;hb=72509aeb4746b7ea2bd9cc84cfd45dfb87042e07;hp=120ddad73196d1d46a283543d82bd25d5c9f95d5;hpb=63ddce932065c2d05cf6412f52fd5c4637e195a3;p=taskasaur.git diff --git a/headers/menu.h b/headers/menu.h index 120ddad..b49e5b0 100644 --- a/headers/menu.h +++ b/headers/menu.h @@ -2,18 +2,47 @@ #ifndef __MENU_H__ #define __MENU_H__ +#include +#include + /* ncurses doesn't support multiline menu items, * so i wrote my own menu lib */ +typedef enum { + MENU_UP = 0, + MENU_DOWN, + MENU_TOP, + MENU_BOTTOM, + MENU_MOVE_UP, + MENU_MOVE_DOWN, + MENU_DELETE, + MENU_APPEND, + MENU_INSERT_ABOVE, + MENU_INSERT_BELOW, + MENU_EDIT +} MenuAction; + typedef struct Menu Menu; typedef struct MenuItem MenuItem; extern MenuItem* create_menuitem(char* contents); -extern Menu* create_menu(MenuItem** item_list); -extern int set_menu_items(Menu* menu, MenuItem** item_list); +extern Menu* create_menu(char* menu_name, MenuItem** item_list); +extern WINDOW* get_menu_win(Menu* menu); extern int set_menu_win(Menu* menu, WINDOW* win); -extern MenuItem* get_menu_items(Menu* menu); +extern WINDOW* get_menu_subwin(Menu* menu); +extern MenuItem* get_menu_item(Menu* menu, int index); +extern int set_menu_focus(Menu* menu, bool focus); +extern int get_selected_item(Menu* menu); +extern int set_selected_item(Menu* menu, int selected_item); +extern int get_menu_length(Menu* menu); + +extern int insert_item(Menu* menu, MenuItem* menuitem, int index); +extern int delete_item(Menu* menu, int index); + +extern int menu_driver(Menu* menu, MenuAction action); + +extern int render_menu(Menu* menu); extern int free_menu(Menu* menu);