reworked menu rendering
[taskasaur.git] / headers / render.h
1
2 #ifndef __RENDER_H__
3 #define __RENDER_H__
4
5 #include <ncurses.h>
6 #include "parser.h"
7 #include "menu.h"
8 #include "utils.h"
9
10 // this is temp
11 #define MENU_WIDTH 40
12 #define POPUP_BORDER 2
13
14 enum TaskasaurColors {
15     TS_SELECTED = 1,
16     TS_NONSELECTED,
17     TS_MENU_SELECTED,
18     TS_MENU_NONSELECTED,
19     TS_ITEMCOUNT
20 };
21
22 typedef struct PopupMenu {
23     WINDOW* win;
24     Menu* menu;
25 } PopupMenu;
26
27 typedef struct BoardMenu {
28     Menu** menu_list;
29     int menu_count;
30     int selected;
31     PopupMenu* popupmenu;
32     int popup_open;
33 } BoardMenu;
34
35 /* the ts is used to not conflict with builtin names */
36 extern int init_tscurses(void);
37 extern int exit_tscurses(void);
38
39 extern int curs_on(void);
40 extern int curs_off(void);
41
42 /* board menu */
43 extern BoardMenu* create_board_menu(Board* board);
44 extern Menu** make_menus(Board* board, int todolist_length);
45 extern MenuItem** todolist_to_menuitem(TodoItem** item_list, int list_length);
46 extern Board* boardmenu_to_board(BoardMenu* boardmenu);
47 extern int render_board(Board* board);
48
49 extern int set_selected_menu(BoardMenu* boardmenu, int index);
50 extern int swap_menu(BoardMenu* boardmenu, int src_index, int dest_index);
51
52 /* menuitem stuff */
53 extern int update_menuitem_descrip(MenuItem* menuitem);
54
55 /* popup menu for menu item */
56 extern PopupMenu* make_popupmenu(TodoItem* itemdata);
57 extern WINDOW* create_popup_win(TodoItem* item_info);
58 extern int render_popupmenu(PopupMenu* popupmenu);
59 extern MenuItem** subtasklist_to_menuitem(SubTask** subtask_list, int list_length);
60
61 /* some helpers */
62 extern int ungetstr(char* str);
63
64
65 #endif