libui/test/page15.c

141 lines
3.0 KiB
C
Raw Normal View History

2016-06-15 12:21:07 -05:00
// 15 june 2016
#include "test.h"
static uiSpinbox *x, *y;
2016-06-15 21:28:44 -05:00
static uiSpinbox *width, *height;
2016-06-16 07:07:50 -05:00
static uiCheckbox *fullscreen;
static void moveX(uiSpinbox *s, void *data)
{
uiWindow *w = uiWindow(data);
int xp, yp;
uiWindowPosition(w, &xp, &yp);
xp = uiSpinboxValue(x);
uiWindowSetPosition(w, xp, yp);
}
static void moveY(uiSpinbox *s, void *data)
2016-06-15 12:21:07 -05:00
{
uiWindow *w = uiWindow(data);
int xp, yp;
2016-06-15 12:21:07 -05:00
uiWindowPosition(w, &xp, &yp);
yp = uiSpinboxValue(y);
uiWindowSetPosition(w, xp, yp);
2016-06-15 12:21:07 -05:00
}
2016-06-15 21:28:44 -05:00
static void updatepos(uiWindow *w)
{
int xp, yp;
uiWindowPosition(w, &xp, &yp);
uiSpinboxSetValue(x, xp);
uiSpinboxSetValue(y, yp);
}
static void center(uiButton *b, void *data)
2016-06-15 12:21:07 -05:00
{
uiWindow *w = uiWindow(data);
uiWindowCenter(w);
2016-06-15 21:28:44 -05:00
updatepos(w);
2016-06-15 12:21:07 -05:00
}
void onMove(uiWindow *w, void *data)
{
printf("move\n");
2016-06-15 21:28:44 -05:00
updatepos(w);
}
static void sizeWidth(uiSpinbox *s, void *data)
{
uiWindow *w = uiWindow(data);
int xp, yp;
uiWindowContentSize(w, &xp, &yp);
2016-06-15 21:28:44 -05:00
xp = uiSpinboxValue(width);
uiWindowSetContentSize(w, xp, yp);
}
static void sizeHeight(uiSpinbox *s, void *data)
{
uiWindow *w = uiWindow(data);
int xp, yp;
uiWindowContentSize(w, &xp, &yp);
yp = uiSpinboxValue(height);
uiWindowSetContentSize(w, xp, yp);
}
static void updatesize(uiWindow *w)
{
int xp, yp;
uiWindowContentSize(w, &xp, &yp);
uiSpinboxSetValue(width, xp);
uiSpinboxSetValue(height, yp);
2016-06-16 08:29:28 -05:00
// TODO on OS X this is updated AFTER sending the size change, not before
2016-06-16 07:07:50 -05:00
uiCheckboxSetChecked(fullscreen, uiWindowFullscreen(w));
2016-06-15 21:28:44 -05:00
}
void onSize(uiWindow *w, void *data)
{
printf("size\n");
updatesize(w);
}
2016-06-15 12:21:07 -05:00
2016-06-16 07:07:50 -05:00
void setFullscreen(uiCheckbox *cb, void *data)
{
uiWindow *w = uiWindow(data);
2016-06-16 08:29:28 -05:00
uiWindowSetFullscreen(w, uiCheckboxChecked(fullscreen));
2016-06-16 07:07:50 -05:00
updatesize(w);
}
2016-06-15 12:21:07 -05:00
uiBox *makePage15(uiWindow *w)
{
uiBox *page15;
uiBox *hbox;
uiButton *button;
2016-06-15 12:21:07 -05:00
page15 = newVerticalBox();
hbox = newHorizontalBox();
// TODO if I make this 1 and not add anything else AND not call uiWindowOnPositionChanged(), on OS X the box won't be able to grow vertically
uiBoxAppend(page15, uiControl(hbox), 0);
2016-06-15 12:21:07 -05:00
uiBoxAppend(hbox, uiControl(uiNewLabel("Position")), 0);
x = uiNewSpinbox(INT_MIN, INT_MAX);
uiBoxAppend(hbox, uiControl(x), 1);
y = uiNewSpinbox(INT_MIN, INT_MAX);
uiBoxAppend(hbox, uiControl(y), 1);
button = uiNewButton("Center");
uiBoxAppend(hbox, uiControl(button), 0);
2016-06-15 12:21:07 -05:00
uiSpinboxOnChanged(x, moveX, w);
uiSpinboxOnChanged(y, moveY, w);
uiButtonOnClicked(button, center, w);
uiWindowOnPositionChanged(w, onMove, NULL);
2016-06-15 21:28:44 -05:00
updatepos(w);
hbox = newHorizontalBox();
uiBoxAppend(page15, uiControl(hbox), 0);
uiBoxAppend(hbox, uiControl(uiNewLabel("Size")), 0);
width = uiNewSpinbox(INT_MIN, INT_MAX);
uiBoxAppend(hbox, uiControl(width), 1);
height = uiNewSpinbox(INT_MIN, INT_MAX);
uiBoxAppend(hbox, uiControl(height), 1);
2016-06-16 07:07:50 -05:00
fullscreen = uiNewCheckbox("Fullscreen");
uiBoxAppend(hbox, uiControl(fullscreen), 0);
2016-06-15 21:28:44 -05:00
uiSpinboxOnChanged(width, sizeWidth, w);
uiSpinboxOnChanged(height, sizeHeight, w);
2016-06-16 07:07:50 -05:00
uiCheckboxOnToggled(fullscreen, setFullscreen, w);
2016-06-15 21:28:44 -05:00
uiWindowOnContentSizeChanged(w, onSize, NULL);
updatesize(w);
2016-06-15 12:21:07 -05:00
return page15;
}