diff -urN cui68/Makefile cui69/Makefile --- cui68/Makefile 2014-02-08 23:00:00.000000000 +0900 +++ cui69/Makefile 2014-02-09 01:00:00.000000000 +0900 @@ -1,7 +1,7 @@ CC = gcc -Wall TARG = cui_test -OBJS = cui.o focus.o etext.o menu.o dialog.o scpanel.o scbar.o fillbtn.o tab.o radio.o ckbox.o button.o lblfix.o fill.o label.o panel.o handler.o esc.o key.o rect.o +OBJS = cui.o focus.o etext.o menu.o dialog.o scpanel.o rszbox.o scbar.o fillbtn.o tab.o radio.o ckbox.o button.o lblfix.o fill.o label.o panel.o handler.o esc.o key.o rect.o all: $(TARG) diff -urN cui68/ckbox.c cui69/ckbox.c --- cui68/ckbox.c 2014-02-02 23:50:00.000000000 +0900 +++ cui69/ckbox.c 2014-02-09 01:00:00.000000000 +0900 @@ -77,7 +77,7 @@ { cui_ckbox p = (cui_ckbox)obj; p->v = v; - if(cui_is_visible(obj)) cui_draw(obj); + cui_draw(obj); } /* EOF */ diff -urN cui68/fillbtn.c cui69/fillbtn.c --- cui68/fillbtn.c 2014-02-09 00:00:00.000000000 +0900 +++ cui69/fillbtn.c 2014-02-09 01:00:00.000000000 +0900 @@ -48,4 +48,19 @@ return FALSE; } +int +cui_fillbtn_val_get(cui obj) +{ + cui_fillbtn p = (cui_fillbtn)obj; + return p->v; +} + +void +cui_fillbtn_val_set(cui obj, int v) +{ + cui_fillbtn p = (cui_fillbtn)obj; + p->v = v; + cui_draw(obj); +} + /* EOF */ diff -urN cui68/fillbtn.h cui69/fillbtn.h --- cui68/fillbtn.h 2014-02-07 22:00:00.000000000 +0900 +++ cui69/fillbtn.h 2014-02-09 01:00:00.000000000 +0900 @@ -13,5 +13,7 @@ cui cui_fillbtn_new(cui parent, int x, int y, int w, int h, char *s); void cui_fillbtn_init(cui obj, cui parent, int x, int y, int w, int h, char *s); int cui_fillbtn_hdr(cui obj, int evt, int val, void *prm); +int cui_fillbtn_val_get(cui obj); +void cui_fillbtn_val_set(cui obj, int v); #endif diff -urN cui68/rszbox.c cui69/rszbox.c --- cui68/rszbox.c 1970-01-01 09:00:00.000000000 +0900 +++ cui69/rszbox.c 2014-02-09 01:00:00.000000000 +0900 @@ -0,0 +1,76 @@ +#include "rszbox.h" +#include "handler.h" +#include "key.h" +#include + +cui +cui_rszbox_new(cui parent) +{ + cui obj = cui_alloc(sizeof(struct cui_rszbox)); + cui_rszbox_init(obj, parent); + return obj; +} + +void +cui_rszbox_init(cui obj, cui parent) +{ + cui_fillbtn_init(obj, parent, parent->w-1, parent->h-1, 1, 1, "+"); + cui_bind(obj, CUI_EVT_KEY, cui_rszbox_hdr, NULL); +} + +void +cui_rszbox_update(cui obj) +{ + cui_wh_set(obj->parent, obj->x+1, obj->y+1); +} + +int +cui_rszbox_hdr(cui obj, int evt, int val, void *prm) +{ + cui_rszbox p = (cui_rszbox)obj; + + /* evt == CUI_EVT_KEY */ + + if(!cui_fillbtn_val_get(obj)){ + if(val != CUI_KEY_ENTER) return FALSE; + cui_fillbtn_val_set(obj, TRUE); + p->bak_x = obj->x; + p->bak_y = obj->y; + return TRUE; + }else{ + switch(val){ + case CUI_KEY_ESC: + if(obj->x != p->bak_x || obj->y != p->bak_y){ + obj->x = p->bak_x; + obj->y = p->bak_y; + cui_rszbox_update(obj); + } + case CUI_KEY_ENTER: + cui_fillbtn_val_set(obj, FALSE); + return TRUE; + case CUI_KEY_UP: + if(obj->y > 0){ + obj->y--; + cui_rszbox_update(obj); + } + return TRUE; + case CUI_KEY_DOWN: + obj->y++; + cui_rszbox_update(obj); + return TRUE; + case CUI_KEY_LEFT: + if(obj->x > 0){ + obj->x--; + cui_rszbox_update(obj); + } + return TRUE; + case CUI_KEY_RIGHT: + obj->x++; + cui_rszbox_update(obj); + return TRUE; + } + } + return FALSE; +} + +/* EOF */ diff -urN cui68/rszbox.h cui69/rszbox.h --- cui68/rszbox.h 1970-01-01 09:00:00.000000000 +0900 +++ cui69/rszbox.h 2014-02-09 01:00:00.000000000 +0900 @@ -0,0 +1,15 @@ +#ifndef __RSZBOX_H__ +#define __RSZBOX_H__ + +#include "fillbtn.h" + +typedef struct cui_rszbox{ + struct cui_fillbtn fbtn; + int bak_x, bak_y; +} *cui_rszbox; + +cui cui_rszbox_new(cui parent); +void cui_rszbox_init(cui obj, cui parent); +int cui_rszbox_hdr(cui obj, int evt, int val, void *prm); + +#endif diff -urN cui68/scpanel.c cui69/scpanel.c --- cui68/scpanel.c 2014-02-09 00:00:00.000000000 +0900 +++ cui69/scpanel.c 2014-02-09 01:00:00.000000000 +0900 @@ -28,6 +28,8 @@ cui_hide(p->hbar); cui_bind(p->hbar, CUI_EVT_BUTTON, cui_scpanel_scbar_hdr, obj); + p->rszbox = cui_rszbox_new(obj); + cui_bind(obj, CUI_EVT_RESIZE, cui_scpanel_hdr, obj); cui_bind(p->sheet, CUI_EVT_RESIZE, cui_scpanel_hdr, obj); } diff -urN cui68/scpanel.h cui69/scpanel.h --- cui68/scpanel.h 2014-02-08 23:00:00.000000000 +0900 +++ cui69/scpanel.h 2014-02-09 01:00:00.000000000 +0900 @@ -3,10 +3,11 @@ #include "panel.h" #include "scbar.h" +#include "rszbox.h" typedef struct cui_scpanel{ struct cui_panel panel; - cui view, sheet, hbar, vbar; + cui view, sheet, hbar, vbar, rszbox; } *cui_scpanel; cui cui_scpanel_new(cui parent, int x, int y, int w, int h);