X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Ftui.c;h=3ad62eb282dba4379625d1c254a9f77e90dc5f3e;hb=93d652d345ffa01376110a6e41340537efe87d4b;hp=2a4d4315b831bbd9c84a9a452720299694c4023c;hpb=c65c4562a19c45eda17d7d672afe15f5c8ce5fec;p=oftp diff --git a/src/tui.c b/src/tui.c index 2a4d431..3ad62eb 100644 --- a/src/tui.c +++ b/src/tui.c @@ -79,6 +79,16 @@ struct tui_widget *tui_parent(struct tui_widget *w) return w->par; } +void tui_invalidate(struct tui_widget *w) +{ + w->dirty = 1; +} + +int tui_isdirty(struct tui_widget *w) +{ + return w->dirty; +} + void tui_draw(struct tui_widget *w) { struct tui_widget *iter; @@ -86,6 +96,7 @@ void tui_draw(struct tui_widget *w) if(w->cbfunc[TUI_DRAW]) { w->cbfunc[TUI_DRAW](w, 0); } + w->dirty = 0; iter = w->child; while(iter) { @@ -102,6 +113,24 @@ void tui_set_callback(struct tui_widget *w, int type, tui_callback func, void *c w->cbcls[type] = cls; } +void tui_call_callback(struct tui_widget *w, int type) +{ + if(w->cbfunc[type]) { + w->cbfunc[type](w, w->cbcls[type]); + } +} + +void tui_focus(struct tui_widget *w, int focus) +{ + focus = focus ? 1 : 0; + if(w->focus == focus) { + return; + } + w->focus = focus; + w->dirty = 1; + tui_call_callback(w, TUI_ONFOCUS); +} + int tui_set_title(struct tui_widget *w, const char *s) { free(w->title); @@ -182,9 +211,6 @@ void tui_status(int type, const char *fmt, ...) void tui_vstatus(int type, const char *fmt, va_list ap) { /* TODO */ - tg_color(15); - tg_bgcolor(0); - tg_vtext(0, 25, fmt, ap); } void tui_msgbox(int type, const char *title, const char *msg, ...) @@ -198,7 +224,4 @@ 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) { /* TODO */ - tg_color(15); - tg_bgcolor(0); - tg_vtext(0, 25, msg, ap); }