diff options
Diffstat (limited to 'src/ui.h')
-rw-r--r-- | src/ui.h | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/src/ui.h b/src/ui.h new file mode 100644 index 0000000..8aa1d55 --- /dev/null +++ b/src/ui.h @@ -0,0 +1,90 @@ +#ifndef UI_H +#define UI_H 1 + +#include <ncurses.h> +#include <stdint.h> + +#define UICB_OK 0 +#define UICB_ERR_UNDEF 1 +#define UICB_ERR_CB 2 +#define UICB_ERR_BUF 3 + +#define DOUI_OK 0 +#define DOUI_ERR 1 +#define DOUI_TMOUT 2 +#define DOUI_NINIT 3 + +#define UILOOP_TIMEOUT 1 + +#define UIKEY_ACTIVATE 0 +#define UIKEY_ENTER 10 +#define UIKEY_BACKSPACE 7 +#define UIKEY_ESC 27 +#define UIKEY_DOWN 2 +#define UIKEY_UP 3 +#define UIKEY_LEFT 4 +#define UIKEY_RIGHT 5 + + +typedef int (*uicb_base)(WINDOW *, void *, bool); +typedef int (*uicb_input)(WINDOW *, void *, int); + + +struct ui_callbacks { + uicb_base ui_element; + uicb_input ui_input; +}; + +struct nask_ui { + struct ui_callbacks cbs; + WINDOW *wnd; + void *data; + struct nask_ui *next; +}; + +void +register_ui_elt(struct ui_callbacks *cbs, void *data, WINDOW *wnd); + +void +unregister_ui_elt(void *data); + +unsigned int +ui_get_maxx(void); + +unsigned int +ui_get_maxy(void); + +void +ui_set_cur(unsigned int x, unsigned int y); + +unsigned int +ui_get_curx(void); + +unsigned int +ui_get_cury(void); + +int +activate_ui_input(void *data); + +int +deactivate_ui_input(void *data); + +void +ui_thrd_force_update(void); + +void +ui_thrd_suspend(void); + +void +ui_thrd_resume(void); + +WINDOW * +init_ui(void); + +void +free_ui(void); + +int +do_ui(void); + +#endif |