Reimplemented the Spaced row of Page 1.

This commit is contained in:
Pietro Gagliardi 2015-04-29 14:03:17 -04:00
parent 932313cdc7
commit 537c7e29cf
3 changed files with 58 additions and 0 deletions

View File

@ -24,6 +24,24 @@ TEXT(Button, uiButton, uiButtonText, uiButtonSetText)
TEXT(Checkbox, uiCheckbox, uiCheckboxText, uiCheckboxSetText)
TEXT(Label, uiLabel, uiLabelText, uiLabelSetText)
static void toggleSpaced(uiCheckbox *c, void *data)
{
setSpaced(uiCheckboxChecked(spaced));
}
static void forceSpaced(uiButton *b, void *data)
{
uiCheckboxSetChecked(spaced, data != NULL);
}
static void showSpaced(uiButton *b, void *data)
{
char s[12];
querySpaced(s);
uiEntrySetText(entry, s);
}
uiBox *makePage1(uiWindow *w)
{
uiBox *page1;
@ -38,6 +56,7 @@ uiBox *makePage1(uiWindow *w)
uiBoxAppend(page1, uiControl(entry), 0);
spaced = uiNewCheckbox("Spaced");
uiCheckboxOnToggled(spaced, toggleSpaced, NULL);
label = uiNewLabel("Label");
hbox = newHorizontalBox();
@ -79,10 +98,13 @@ uiBox *makePage1(uiWindow *w)
hbox = newHorizontalBox();
uiBoxAppend(hbox, uiControl(spaced), 1);
getButton = uiNewButton("On");
uiButtonOnClicked(getButton, forceSpaced, getButton);
uiBoxAppend(hbox, uiControl(getButton), 0);
getButton = uiNewButton("Off");
uiButtonOnClicked(getButton, forceSpaced, NULL);
uiBoxAppend(hbox, uiControl(getButton), 0);
getButton = uiNewButton("Show");
uiButtonOnClicked(getButton, showSpaced, NULL);
uiBoxAppend(hbox, uiControl(getButton), 0);
uiBoxAppend(page1, uiControl(hbox), 0);

View File

@ -53,6 +53,41 @@ void setSpaced(int spaced)
}
}
void querySpaced(char out[12]) // more than enough
{
int m = 0;
int p = 0;
uintmax_t i;
void *pp;
for (i = 0; i < len; i++) {
pp = things[i].ptr;
switch (things[i].type) {
case window:
m = uiWindowMargined(uiWindow(pp));
break;
case box:
p = uiBoxPadded(uiBox(pp));
break;
}
if (m && p) // cheap attempt at breaking early
break;
}
out[0] = 'm';
out[1] = ' ';
out[2] = '0';
if (m)
out[2] = '1';
out[3] = ' ';
out[4] = 'p';
out[5] = ' ';
out[6] = '0';
if (p)
out[6] = '1';
out[7] = '\0';
}
uiWindow *newWindow(const char *title, int width, int height, int hasMenubar)
{
uiWindow *w;

View File

@ -11,6 +11,7 @@ extern void die(const char *, ...);
// spaced.c
extern void setSpaced(int);
extern void querySpaced(char[12]);
extern uiWindow *newWindow(const char *title, int width, int height, int hasMenubar);
extern uiBox *newHorizontalBox(void);
extern uiBox *newVerticalBox(void);