diff -urN cui8/cui.c cui9/cui.c --- cui8/cui.c Thu Jan 30 04:20:00 2014 +++ cui9/cui.c Thu Jan 30 04:30:00 2014 @@ -62,12 +62,22 @@ return obj; } +int +cui_label_hdr(cui obj, int evt, int val, void *prm) +{ + cui_esc_loc(cui_gx(obj), cui_gy(obj)); + printf("%s", cui_label_str_get(obj)); + fflush(stdout); + return TRUE; +} + void cui_label_init(cui obj, cui parent, int x, int y, char *s) { cui_label p = (cui_label)obj; cui_base_init(obj, parent, x, y, strlen(s), 1); p->s = s; + cui_bind(obj, CUI_EVT_DRAW, cui_label_hdr, NULL); } char * @@ -224,6 +234,19 @@ } void +cui_draw(cui obj) +{ + int val; + + if(obj == NULL) return; + val = (obj == cui_focus) ? CUI_DRAW_FOCUS : CUI_DRAW_NORMAL; + cui_handler_call(obj, obj->handler_list, CUI_EVT_DRAW, val); + + cui_draw(obj->next); + cui_draw(obj->children); +} + +void cui_quit(void) { cui_running = FALSE; @@ -239,6 +262,7 @@ cui_key_enter(); cui_running = TRUE; + cui_draw(top_obj); while(cui_running){ if((key = cui_key_get2()) == 0) continue; if(cui_focus){ diff -urN cui8/cui.h cui9/cui.h --- cui8/cui.h Thu Jan 30 04:00:00 2014 +++ cui9/cui.h Thu Jan 30 04:30:00 2014 @@ -1,6 +1,10 @@ #ifndef __CUI_H__ #define __CUI_H__ +#define CUI_DRAW_NORMAL 0 +#define CUI_DRAW_FOCUS 1 +#define CUI_DRAW_ACTIVE 2 + typedef struct cui_base *cui; #define MSG(s) fprintf(stderr, "%s() %s L%d : %s\n", __func__, __FILE__, __LINE__, s) @@ -59,6 +63,8 @@ char *cui_button_str_get(cui obj); void cui_bind(cui obj, int evt, cui_handler hdr, void *prm); +int cui_gx(cui obj); +int cui_gy(cui obj); void cui_quit(void); void cui_main(cui top_obj);