diff -urN cui29/cui_test.c cui30/cui_test.c --- cui29/cui_test.c Thu Jan 30 23:40:00 2014 +++ cui30/cui_test.c Fri Jan 31 00:20:00 2014 @@ -1,4 +1,5 @@ #include +#include #include "cui.h" #include "esc.h" #include "handler.h" @@ -6,6 +7,43 @@ #include "button.h" #include "dialog.h" +extern cui cui_focus; + +int +joke_hdr(cui obj, int evt, int val, void *prm) +{ + cui lb = (cui)prm, b2 = lb->children, b1 = b2->next; + char *s = cui_button_str_get(obj); + + if(strcmp(s, "reboot") == 0 || strcmp(s, "power off") == 0){ + cui_label_str_set(lb, "It's a joke"); + cui_button_str_set(b1, "sorry"); + cui_x_set(b1, lb->w + 1); + cui_hide(b2); + cui_focus = b1; + cui_w_set(lb, b1->x + b1->w); + }else{ + cui_hide(lb); + cui_focus = NULL; + cui_draw(lb->parent); + } + return TRUE; +} + +cui +joke_new(cui parent, int x, int y) +{ + cui lb = cui_label_new(parent, x, y, "system panic!"); + cui b1 = cui_button_new(lb, lb->w + 1, 0, "reboot"); + cui b2 = cui_button_new(lb, b1->x + b1->w + 1, 0, "power off"); + cui_w_set(lb, b2->x + b2->w); + cui_bind(b1, CUI_EVT_BUTTON, joke_hdr, lb); + cui_bind(b2, CUI_EVT_BUTTON, joke_hdr, lb); + cui_focus = b1; + cui_draw(lb); + return lb; +} + int my_hdr(cui obj, int evt, int val, void *prm) { @@ -14,6 +52,7 @@ cui_button_str_set(p->btn1, "Yes"); cui_button_str_set(p->btn2, "No"); cui_unbind(obj, CUI_EVT_BUTTON, my_hdr); + joke_new(((cui)p)->parent, 0, 4); return TRUE; }