// 6 april 2015 #include "ui.h" #include int onClosing(uiWindow *w, void *data) { printf("in closing!\n"); uiQuit(); return 1; } uiControl *e; static void getWindowText(uiControl *b, void *data) { char *text; text = uiWindowTitle((uiWindow *) data); uiEntrySetText(e, text); uiFreeText(text); } static void setWindowText(uiControl *b, void *data) { char *text; text = uiEntryText(e); uiWindowSetTitle((uiWindow *) data, text); uiFreeText(text); } static void getButtonText(uiControl *b, void *data) { char *text; text = uiButtonText((uiControl *) data); uiEntrySetText(e, text); uiFreeText(text); } static void setButtonText(uiControl *b, void *data) { char *text; text = uiEntryText(e); uiButtonSetText((uiControl *) data, text); uiFreeText(text); } static void getCheckboxText(uiControl *b, void *data) { char *text; text = uiCheckboxText((uiControl *) data); uiEntrySetText(e, text); uiFreeText(text); } static void setCheckboxText(uiControl *b, void *data) { char *text; text = uiEntryText(e); uiCheckboxSetText((uiControl *) data, text); uiFreeText(text); } uiWindow *w; #define nStacks 5 uiControl *stacks[nStacks]; uiControl *spaced; static void setSpaced(int spaced) { int i; uiWindowSetMargined(w, spaced); for (i = 0; i < nStacks; i++) uiStackSetPadded(stacks[i], spaced); } static void toggleSpaced(uiControl *c, void *data) { int s = uiCheckboxChecked(spaced); printf("toggled %d\n", s); setSpaced(s); } // these will also be used to test if setting checks will trigger events static void forceSpacedOn(uiControl *c, void *data) { uiCheckboxSetChecked(spaced, 1); } static void forceSpacedOff(uiControl *c, void *data) { uiCheckboxSetChecked(spaced, 0); } static void showSpaced(uiControl *c, void *data) { char msg[] = { 'm', ' ', '0', ' ', 'p', ' ', '0', '\0' }; if (uiWindowMargined(w)) msg[2] = '1'; if (uiStackPadded(stacks[0])) msg[6] = '1'; uiEntrySetText(e, msg); } int main(int argc, char *argv[]) { uiInitError *err; uiControl *getButton, *setButton; err = uiInit(NULL); if (err != NULL) { fprintf(stderr, "error initializing ui: %s\n", uiInitErrorMessage(err)); uiInitErrorFree(err); return 1; } w = uiNewWindow("Hello", 320, 240); uiWindowOnClosing(w, onClosing, NULL); stacks[0] = uiNewVerticalStack(); uiWindowSetChild(w, stacks[0]); e = uiNewEntry(); uiStackAdd(stacks[0], e, 0); stacks[1] = uiNewHorizontalStack(); getButton = uiNewButton("Get Window Text"); uiButtonOnClicked(getButton, getWindowText, w); setButton = uiNewButton("Set Window Text"); uiButtonOnClicked(setButton, setWindowText, w); uiStackAdd(stacks[1], getButton, 1); uiStackAdd(stacks[1], setButton, 1); uiStackAdd(stacks[0], stacks[1], 0); stacks[2] = uiNewHorizontalStack(); getButton = uiNewButton("Get Button Text"); uiButtonOnClicked(getButton, getButtonText, getButton); setButton = uiNewButton("Set Button Text"); uiButtonOnClicked(setButton, setButtonText, getButton); uiStackAdd(stacks[2], getButton, 1); uiStackAdd(stacks[2], setButton, 1); uiStackAdd(stacks[0], stacks[2], 0); // this will also be used to make sure tab stops work properly when inserted out of creation order, especially on Windows spaced = uiNewCheckbox("Spaced"); uiCheckboxOnToggled(spaced, toggleSpaced, NULL); stacks[3] = uiNewHorizontalStack(); getButton = uiNewButton("Get Checkbox Text"); uiButtonOnClicked(getButton, getCheckboxText, spaced); setButton = uiNewButton("Set Checkbox Text"); uiButtonOnClicked(setButton, setCheckboxText, spaced); uiStackAdd(stacks[3], getButton, 1); uiStackAdd(stacks[3], setButton, 1); uiStackAdd(stacks[0], stacks[3], 0); stacks[4] = uiNewHorizontalStack(); uiStackAdd(stacks[4], spaced, 1); getButton = uiNewButton("On"); uiButtonOnClicked(getButton, forceSpacedOn, NULL); setButton = uiNewButton("Off"); uiButtonOnClicked(setButton, forceSpacedOff, NULL); uiStackAdd(stacks[4], getButton, 0); uiStackAdd(stacks[4], setButton, 0); setButton = uiNewButton("Show"); uiButtonOnClicked(setButton, showSpaced, NULL); uiStackAdd(stacks[4], setButton, 0); uiStackAdd(stacks[0], stacks[4], 0); uiWindowShow(w); uiMain(); printf("after uiMain()\n"); return 0; }