download, progress, improved screen updates...
[oftp] / src / tui.h
1 #ifndef TUI_H_
2 #define TUI_H_
3
4 #include <stdarg.h>
5
6 enum { TUI_INFO, TUI_WARN, TUI_ERROR };
7
8 struct tui_widget;
9 typedef void (*tui_callback)(struct tui_widget*, void*);
10
11 /* widget types */
12 enum { TUI_UNKNOWN, TUI_WINDOW, TUI_BUTTON, TUI_LIST };
13 /* callback types */
14 enum {
15         TUI_ONCLICK,
16         TUI_ONMODIFY,
17         TUI_ONFOCUS,
18         TUI_NUM_CALLBACKS
19 };
20
21 int tui_init(void);
22 void tui_shutdown(void);
23
24 struct tui_widget *tui_widget(int type);
25 void tui_free(struct tui_widget *w);
26
27 void tui_add_widget(struct tui_widget *par, struct tui_widget *w);
28 void tui_remove_widget(struct tui_widget *par, struct tui_widget *w);
29 struct tui_widget *tui_parent(struct tui_widget *w);
30
31 void tui_invalidate(struct tui_widget *w);
32 int tui_isdirty(struct tui_widget *w);
33 void tui_draw(struct tui_widget *w);
34
35 void tui_set_callback(struct tui_widget *w, int type, tui_callback func, void *cls);
36 void tui_call_callback(struct tui_widget *w, int type);
37
38 int tui_set_title(struct tui_widget *w, const char *s);
39 const char *tui_get_title(struct tui_widget *w);
40
41 void tui_focus(struct tui_widget *w, int focus);
42 int tui_hasfocus(struct tui_widget *w);
43
44 struct tui_widget *tui_window(const char *title, int x, int y, int w, int h);
45 struct tui_widget *tui_button(const char *title, int x, int y, tui_callback cbfunc, void *cbdata);
46 struct tui_widget *tui_list(const char *title, int x, int y, int w, int h, tui_callback cbfunc, void *cbdata);
47
48 void tui_clear_list(struct tui_widget *w);
49 void tui_add_list_item(struct tui_widget *w, const char *text);
50 int tui_num_list_items(struct tui_widget *w);
51
52 int tui_list_select(struct tui_widget *w, int idx);
53 int tui_get_list_sel(struct tui_widget *w);
54 int tui_list_sel_next(struct tui_widget *w);
55 int tui_list_sel_prev(struct tui_widget *w);
56 int tui_list_sel_start(struct tui_widget *w);
57 int tui_list_sel_end(struct tui_widget *w);
58
59 void tui_sort_list(struct tui_widget *w, int (*cmpfunc)(const void*, const void*));
60
61 void tui_wtoscr(struct tui_widget *w, int x, int y, int *retx, int *rety);
62 void tui_scrtow(struct tui_widget *w, int x, int y, int *retx, int *rety);
63
64 void tui_status(int type, const char *fmt, ...);
65 void tui_vstatus(int type, const char *fmt, va_list ap);
66 void tui_msgbox(int type, const char *title, const char *msg, ...);
67 void tui_vmsgbox(int type, const char *title, const char *msg, va_list ap);
68
69
70 #endif  /* TUI_H_ */