diff --git a/new/control.c b/new/control.c index aab5ea0..5c56f0a 100644 --- a/new/control.c +++ b/new/control.c @@ -30,3 +30,48 @@ void uiControlResize(uiControl *c, intmax_t x, intmax_t y, intmax_t width, intma { (*(c->resize))(c, x, y, width, height, d); } + +int uiControlVisible(uiControl *c) +{ + return (*(c->visible))(c); +} + +void uiControlShow(uiControl *c) +{ + (*(c->show))(c); +} + +void uiControlHide(uiControl *c) +{ + (*(c->hide))(c); +} + +void uiControlContainerShow(uiControl *c) +{ + (*(c->containerShow))(c); +} + +void uiControlContainerHide(uiControl *c) +{ + (*(c->containerHide))(c); +} + +void uiControlEnable(uiControl *c) +{ + (*(c->enable))(c); +} + +void uiControlDisable(uiControl *c) +{ + (*(c->disable))(c); +} + +void uiControlContainerEnable(uiControl *c) +{ + (*(c->containerEnable))(c); +} + +void uiControlContainerDisable(uiControl *c) +{ + (*(c->containerDisable))(c); +} diff --git a/new/test.c b/new/test.c index f61038e..643d52c 100644 --- a/new/test.c +++ b/new/test.c @@ -67,7 +67,7 @@ static void setCheckboxText(uiControl *b, void *data) } uiWindow *w; -#define nStacks 5 +#define nStacks 7 uiControl *stacks[nStacks]; uiControl *spaced; @@ -110,6 +110,26 @@ static void showSpaced(uiControl *c, void *data) uiEntrySetText(e, msg); } +static void showControl(uiControl *c, void *data) +{ + uiControlShow((uiControl *) data); +} + +static void hideControl(uiControl *c, void *data) +{ + uiControlHide((uiControl *) data); +} + +static void enableControl(uiControl *c, void *data) +{ + uiControlEnable((uiControl *) data); +} + +static void disableControl(uiControl *c, void *data) +{ + uiControlDisable((uiControl *) data); +} + int main(int argc, char *argv[]) { uiInitOptions o; @@ -186,6 +206,38 @@ int main(int argc, char *argv[]) uiStackAdd(stacks[4], setButton, 0); uiStackAdd(stacks[0], stacks[4], 0); + stacks[5] = uiNewHorizontalStack(); + getButton = uiNewButton("Button"); + uiStackAdd(stacks[5], getButton, 1); + setButton = uiNewButton("Show"); + uiButtonOnClicked(setButton, showControl, getButton); + uiStackAdd(stacks[5], setButton, 0); + setButton = uiNewButton("Hide"); + uiButtonOnClicked(setButton, hideControl, getButton); + uiStackAdd(stacks[5], setButton, 0); + setButton = uiNewButton("Enable"); + uiButtonOnClicked(setButton, enableControl, getButton); + uiStackAdd(stacks[5], setButton, 0); + setButton = uiNewButton("Disable"); + uiButtonOnClicked(setButton, disableControl, getButton); + uiStackAdd(stacks[5], setButton, 0); + uiStackAdd(stacks[0], stacks[5], 0); + + stacks[6] = uiNewHorizontalStack(); + setButton = uiNewButton("Show Stack"); + uiButtonOnClicked(setButton, showControl, stacks[5]); + uiStackAdd(stacks[6], setButton, 1); + setButton = uiNewButton("Hide Stack"); + uiButtonOnClicked(setButton, hideControl, stacks[5]); + uiStackAdd(stacks[6], setButton, 1); + setButton = uiNewButton("Enable Stack"); + uiButtonOnClicked(setButton, enableControl, stacks[5]); + uiStackAdd(stacks[6], setButton, 1); + setButton = uiNewButton("Disable Stack"); + uiButtonOnClicked(setButton, disableControl, stacks[5]); + uiStackAdd(stacks[6], setButton, 1); + uiStackAdd(stacks[0], stacks[6], 0); + uiWindowShow(w); uiMain(); printf("after uiMain()\n"); diff --git a/new/ui.h b/new/ui.h index 0625bd0..fb803c4 100644 --- a/new/ui.h +++ b/new/ui.h @@ -42,6 +42,15 @@ struct uiControl { void (*removeParent)(uiControl *); void (*preferredSize)(uiControl *, uiSizing *, intmax_t *, intmax_t *); void (*resize)(uiControl *, intmax_t, intmax_t, intmax_t, intmax_t, uiSizing *); + int (*visible)(uiControl *); + void (*show)(uiControl *); + void (*hide)(uiControl *); + void (*containerShow)(uiControl *); + void (*containerHide)(uiControl *); + void (*enable)(uiControl *); + void (*disable)(uiControl *); + void (*containerEnable)(uiControl *); + void (*containerDisable)(uiControl *); }; void uiControlDestroy(uiControl *); uintptr_t uiControlHandle(uiControl *); @@ -49,6 +58,15 @@ void uiControlSetParent(uiControl *, uintptr_t); void uiControlRemoveParent(uiControl *); void uiControlPreferredSize(uiControl *, uiSizing *, intmax_t *width, intmax_t *height); void uiControlResize(uiControl *, intmax_t, intmax_t, intmax_t, intmax_t, uiSizing *); +int uiControlVisible(uiControl *); +void uiControlShow(uiControl *); +void uiControlHide(uiControl *); +void uiControlContainerShow(uiControl *); +void uiControlContainerHide(uiControl *); +void uiControlEnable(uiControl *); +void uiControlDisable(uiControl *); +void uiControlContainerEnable(uiControl *); +void uiControlContainerDisable(uiControl *); typedef struct uiWindow uiWindow; uiWindow *uiNewWindow(char *, int, int);