X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Ftui.h;h=2a3bfa7ef7e2134621eb7c9972c40f4a066ddf86;hb=e0c59f7f4ddb73390dc9c16569254c0e2a921931;hp=b5f7fafb8a1f59194d9d96b10c89a1bce1c2260d;hpb=6478a82a947e3662c31b95682661f2de9952944d;p=oftp diff --git a/src/tui.h b/src/tui.h index b5f7faf..2a3bfa7 100644 --- a/src/tui.h +++ b/src/tui.h @@ -1,8 +1,12 @@ #ifndef TUI_H_ #define TUI_H_ +#include + +enum { TUI_INFO, TUI_WARN, TUI_ERROR }; + struct tui_widget; -typedef void (*tui_callback)(struct tui_widget*); +typedef void (*tui_callback)(struct tui_widget*, void*); /* widget types */ enum { TUI_UNKNOWN, TUI_WINDOW, TUI_BUTTON, TUI_LIST }; @@ -19,14 +23,42 @@ void tui_shutdown(void); struct tui_widget *tui_widget(int type); void tui_free(struct tui_widget *w); +void tui_add_widget(struct tui_widget *par, struct tui_widget *w); +void tui_remove_widget(struct tui_widget *par, struct tui_widget *w); +struct tui_widget *tui_parent(struct tui_widget *w); + +int tui_isdirty(struct tui_widget *w); +void tui_draw(struct tui_widget *w); + void tui_set_callback(struct tui_widget *w, int type, tui_callback func, void *cls); +int tui_set_title(struct tui_widget *w, const char *s); +const char *tui_get_title(struct tui_widget *w); + struct tui_widget *tui_window(const char *title, int x, int y, int w, int h); struct tui_widget *tui_button(const char *title, int x, int y, tui_callback cbfunc, void *cbdata); struct tui_widget *tui_list(const char *title, int x, int y, int w, int h, tui_callback cbfunc, void *cbdata); void tui_clear_list(struct tui_widget *w); void tui_add_list_item(struct tui_widget *w, const char *text); +int tui_num_list_items(struct tui_widget *w); + +int tui_list_select(struct tui_widget *w, int idx); +int tui_get_list_sel(struct tui_widget *w); +int tui_list_sel_next(struct tui_widget *w); +int tui_list_sel_prev(struct tui_widget *w); +int tui_list_sel_start(struct tui_widget *w); +int tui_list_sel_end(struct tui_widget *w); + +void tui_sort_list(struct tui_widget *w, int (*cmpfunc)(const void*, const void*)); + +void tui_wtoscr(struct tui_widget *w, int x, int y, int *retx, int *rety); +void tui_scrtow(struct tui_widget *w, int x, int y, int *retx, int *rety); + +void tui_status(int type, const char *fmt, ...); +void tui_vstatus(int type, const char *fmt, va_list ap); +void tui_msgbox(int type, const char *title, const char *msg, ...); +void tui_vmsgbox(int type, const char *title, const char *msg, va_list ap); #endif /* TUI_H_ */