diff -urN cui18/cui.c cui19/cui.c --- cui18/cui.c Thu Jan 30 22:20:00 2014 +++ cui19/cui.c Thu Jan 30 22:30:00 2014 @@ -45,6 +45,14 @@ obj->children = child; } +cui +cui_base_new(cui parent, int x, int y, int w, int h) +{ + cui obj = cui_alloc(sizeof(struct cui_base)); + cui_base_init(obj, parent, x, y, w, h); + return obj; +} + void cui_draw_str(cui obj, int x, int y, char *s, int attr) { diff -urN cui18/cui.h cui19/cui.h --- cui18/cui.h Thu Jan 30 22:20:00 2014 +++ cui19/cui.h Thu Jan 30 22:30:00 2014 @@ -32,6 +32,7 @@ cui cui_alloc(int size); void cui_base_init(cui obj, cui parent, int x, int y, int w, int h); void cui_base_child_add(cui obj, cui child); +cui cui_base_new(cui parent, int x, int y, int w, int h); void cui_draw_str(cui obj, int x, int y, char *s, int attr); void cui_fill_rect(cui obj, int x, int y, int w, int h, char c, int attr); diff -urN cui18/cui_test.c cui19/cui_test.c --- cui18/cui_test.c Thu Jan 30 22:10:00 2014 +++ cui19/cui_test.c Thu Jan 30 22:30:00 2014 @@ -17,14 +17,30 @@ } int +my_hdr2(cui obj, int evt, int val, void *prm) +{ + cui dlg = (cui)prm; + if(cui_is_visible(dlg)) cui_hide(dlg); + else cui_show(dlg); + cui_button_str_set(obj, cui_is_visible(dlg) ? "Hide Dialog" : "Show Dialog"); + return TRUE; +} + +int main() { - cui obj = cui_simple_dialog_new(NULL, 2, 2, "Are you sure ?", "OK", "Cancel"); - cui_simple_dialog p = (cui_simple_dialog)obj; + cui base = cui_base_new(NULL, 0, 0, 40, 20); + cui btn = cui_button_new(base, 2, 1, "Show Dialog"); + cui dlg = cui_simple_dialog_new(base, 2, 2, "Are you sure ?", "OK", "Cancel"); + cui_simple_dialog p = (cui_simple_dialog)dlg; + + dlg->flags |= CUI_FLG_HIDE; + cui_bind(btn, CUI_EVT_BUTTON, my_hdr2, p); cui_bind(p->btn1, CUI_EVT_BUTTON, my_hdr, p); - cui_main(obj); + + cui_main(base); printf("result %s\n", p->btn_result); - cui_free(obj); + cui_free(base); return 0; }