diff -urN cui5/Makefile cui6/Makefile --- cui5/Makefile Thu Jan 30 03:20:00 2014 +++ cui6/Makefile Thu Jan 30 04:00:00 2014 @@ -1,6 +1,7 @@ CC = gcc -Wall -TARG = key_test esc_test +TARG = cui_test +OBJS = cui.o esc.o key.o all: $(TARG) @@ -9,6 +10,9 @@ esc_test: esc_test.o esc.o $(CC) -o $@ esc_test.o esc.o + +cui_test: cui_test.o $(OBJS) + $(CC) -o $@ cui_test.o $(OBJS) clean: rm -f $(TARG) *.o *~ diff -urN cui5/cui.c cui6/cui.c --- cui5/cui.c Thu Jan 30 03:50:00 2014 +++ cui6/cui.c Thu Jan 30 04:00:00 2014 @@ -1,15 +1,10 @@ #include "cui.h" +#include "esc.h" #include "key.h" #include #include #include -#define MSG(s) fprintf(stderr, "%s() %s L%d : %s\n", __func__, __FILE__, __LINE__, s) -#define ERR(s) do{ fprintf(stderr, "ERR "); MSG(s); exit(1); }while(0) - -#define FALSE 0 -#define TRUE 1 - cui cui_focus = NULL; int cui_running = FALSE; @@ -75,6 +70,13 @@ p->s = s; } +char * +cui_label_str_get(cui obj) +{ + cui_label p = (cui_label)obj; + return p->s; +} + cui cui_button_new(cui parent, int x, int y, char *s) { @@ -91,6 +93,12 @@ obj->flags |= CUI_FLG_CAN_FOCUS; } +char * +cui_button_str_get(cui obj) +{ + return cui_label_str_get(obj); +} + cui_handler_list cui_handler_list_new(cui_handler hdr, int evt, void *prm, cui_handler_list next) { @@ -226,6 +234,7 @@ int key, val; cui obj; + cui_esc_enter(); cui_key_enter(); cui_running = TRUE; @@ -238,6 +247,7 @@ if(obj) cui_focus = obj; } cui_key_exit(); + cui_esc_exit(); } /* EOF */ diff -urN cui5/cui.h cui6/cui.h --- cui5/cui.h Thu Jan 30 03:50:00 2014 +++ cui6/cui.h Thu Jan 30 04:00:00 2014 @@ -3,6 +3,12 @@ typedef struct cui_base *cui; +#define MSG(s) fprintf(stderr, "%s() %s L%d : %s\n", __func__, __FILE__, __LINE__, s) +#define ERR(s) do{ fprintf(stderr, "ERR "); MSG(s); exit(1); }while(0) + +#define FALSE 0 +#define TRUE 1 + #define CUI_EVT_KEY (1<<0) #define CUI_EVT_DRAW (1<<1) #define CUI_EVT_BUTTON (1<<2) @@ -47,7 +53,13 @@ void cui_panel_init(cui obj, cui parent, int x, int y, int w, int h); cui cui_label_new(cui parent, int x, int y, char *s); void cui_label_init(cui obj, cui parent, int x, int y, char *s); +char *cui_label_str_get(cui obj); cui cui_button_new(cui parent, int x, int y, char *s); void cui_button_init(cui obj, cui parent, int x, int y, char *s); +char *cui_button_str_get(cui obj); + +void cui_bind(cui obj, int evt, cui_handler hdr, void *prm); +void cui_quit(void); +void cui_main(cui top_obj); #endif diff -urN cui5/cui_test.c cui6/cui_test.c --- cui5/cui_test.c Thu Jan 1 09:00:00 1970 +++ cui6/cui_test.c Thu Jan 30 04:00:00 2014 @@ -0,0 +1,35 @@ +#include +#include "esc.h" +#include "cui.h" + +int +hdr(cui obj, int evt, int val, void *prm) +{ + cui_esc_loc(2, 2); + printf("hdr: %s, %02x ", cui_button_str_get(obj), val); + fflush(stdout); + + if(val == 'q'){ + cui_quit(); + return TRUE; + } + return FALSE; +} + +int +main() +{ + cui panel = cui_panel_new(NULL, 8, 4, 23, 7); + cui btn1 = cui_button_new(panel, 5, 4, "OK"); + cui btn2 = cui_button_new(panel, 12, 4, "Cancel"); + + cui_label_new(panel, 3, 2, "Are you sure ?"); + + cui_bind(btn1, CUI_EVT_KEY, hdr, NULL); + cui_bind(btn2, CUI_EVT_KEY, hdr, NULL); + + cui_main(panel); + return 0; +} + +/* EOF */