diff options
author | StapleButter <thetotalworm@gmail.com> | 2017-09-09 02:30:51 +0200 |
---|---|---|
committer | StapleButter <thetotalworm@gmail.com> | 2017-09-09 02:30:51 +0200 |
commit | 70e4841d311d68689724768157cc9cbfbde7a9fc (patch) | |
tree | ba9499f77d1258530a7e60aa6e1732c41d98161c /src/libui_sdl/libui/examples/controlgallery | |
parent | 81747d6c34eb159481a6ca3f283d065fa3568617 (diff) |
another UI attempt, I guess.
sorry.
Diffstat (limited to 'src/libui_sdl/libui/examples/controlgallery')
-rw-r--r-- | src/libui_sdl/libui/examples/controlgallery/darwin.png | bin | 0 -> 97260 bytes | |||
-rw-r--r-- | src/libui_sdl/libui/examples/controlgallery/main.c | 540 | ||||
-rw-r--r-- | src/libui_sdl/libui/examples/controlgallery/unix.png | bin | 0 -> 41757 bytes | |||
-rw-r--r-- | src/libui_sdl/libui/examples/controlgallery/windows.png | bin | 0 -> 48217 bytes |
4 files changed, 540 insertions, 0 deletions
diff --git a/src/libui_sdl/libui/examples/controlgallery/darwin.png b/src/libui_sdl/libui/examples/controlgallery/darwin.png Binary files differnew file mode 100644 index 0000000..f61b54b --- /dev/null +++ b/src/libui_sdl/libui/examples/controlgallery/darwin.png diff --git a/src/libui_sdl/libui/examples/controlgallery/main.c b/src/libui_sdl/libui/examples/controlgallery/main.c new file mode 100644 index 0000000..c0d536c --- /dev/null +++ b/src/libui_sdl/libui/examples/controlgallery/main.c @@ -0,0 +1,540 @@ +// 2 september 2015 +#include <stdio.h> +#include <string.h> +#include "../../ui.h" + +static int onClosing(uiWindow *w, void *data) +{ + uiQuit(); + return 1; +} + +static int onShouldQuit(void *data) +{ + uiWindow *mainwin = uiWindow(data); + + uiControlDestroy(uiControl(mainwin)); + return 1; +} + +static uiControl *makeBasicControlsPage(void) +{ + uiBox *vbox; + uiBox *hbox; + uiGroup *group; + uiForm *entryForm; + + vbox = uiNewVerticalBox(); + uiBoxSetPadded(vbox, 1); + + hbox = uiNewHorizontalBox(); + uiBoxSetPadded(hbox, 1); + uiBoxAppend(vbox, uiControl(hbox), 0); + + uiBoxAppend(hbox, + uiControl(uiNewButton("Button")), + 0); + uiBoxAppend(hbox, + uiControl(uiNewCheckbox("Checkbox")), + 0); + + uiBoxAppend(vbox, + uiControl(uiNewLabel("This is a label. Right now, labels can only span one line.")), + 0); + + uiBoxAppend(vbox, + uiControl(uiNewHorizontalSeparator()), + 0); + + group = uiNewGroup("Entries"); + uiGroupSetMargined(group, 1); + uiBoxAppend(vbox, uiControl(group), 1); + + entryForm = uiNewForm(); + uiFormSetPadded(entryForm, 1); + uiGroupSetChild(group, uiControl(entryForm)); + + uiFormAppend(entryForm, + "Entry", + uiControl(uiNewEntry()), + 0); + uiFormAppend(entryForm, + "Password Entry", + uiControl(uiNewPasswordEntry()), + 0); + uiFormAppend(entryForm, + "Search Entry", + uiControl(uiNewSearchEntry()), + 0); + uiFormAppend(entryForm, + "Multiline Entry", + uiControl(uiNewMultilineEntry()), + 1); + uiFormAppend(entryForm, + "Multiline Entry No Wrap", + uiControl(uiNewNonWrappingMultilineEntry()), + 1); + + return uiControl(vbox); +} + +// TODO make these not global +static uiSpinbox *spinbox; +static uiSlider *slider; +static uiProgressBar *pbar; + +static void onSpinboxChanged(uiSpinbox *s, void *data) +{ + uiSliderSetValue(slider, uiSpinboxValue(s)); + uiProgressBarSetValue(pbar, uiSpinboxValue(s)); +} + +static void onSliderChanged(uiSlider *s, void *data) +{ + uiSpinboxSetValue(spinbox, uiSliderValue(s)); + uiProgressBarSetValue(pbar, uiSliderValue(s)); +} + +static uiControl *makeNumbersPage() +{ + uiBox *hbox; + uiGroup *group; + uiBox *vbox; + uiProgressBar *ip; + uiCombobox *cbox; + uiEditableCombobox *ecbox; + uiRadioButtons *rb; + + hbox = uiNewHorizontalBox(); + uiBoxSetPadded(hbox, 1); + + group = uiNewGroup("Numbers"); + uiGroupSetMargined(group, 1); + uiBoxAppend(hbox, uiControl(group), 1); + + vbox = uiNewVerticalBox(); + uiBoxSetPadded(vbox, 1); + uiGroupSetChild(group, uiControl(vbox)); + + spinbox = uiNewSpinbox(0, 100); + slider = uiNewSlider(0, 100); + pbar = uiNewProgressBar(); + uiSpinboxOnChanged(spinbox, onSpinboxChanged, NULL); + uiSliderOnChanged(slider, onSliderChanged, NULL); + uiBoxAppend(vbox, uiControl(spinbox), 0); + uiBoxAppend(vbox, uiControl(slider), 0); + uiBoxAppend(vbox, uiControl(pbar), 0); + + ip = uiNewProgressBar(); + uiProgressBarSetValue(ip, -1); + uiBoxAppend(vbox, uiControl(ip), 0); + + group = uiNewGroup("Lists"); + uiGroupSetMargined(group, 1); + uiBoxAppend(hbox, uiControl(group), 1); + + vbox = uiNewVerticalBox(); + uiBoxSetPadded(vbox, 1); + uiGroupSetChild(group, uiControl(vbox)); + + cbox = uiNewCombobox(); + uiComboboxAppend(cbox, "Combobox Item 1"); + uiComboboxAppend(cbox, "Combobox Item 2"); + uiComboboxAppend(cbox, "Combobox Item 3"); + uiBoxAppend(vbox, uiControl(cbox), 0); + + ecbox = uiNewEditableCombobox(); + uiEditableComboboxAppend(ecbox, "Editable Item 1"); + uiEditableComboboxAppend(ecbox, "Editable Item 2"); + uiEditableComboboxAppend(ecbox, "Editable Item 3"); + uiBoxAppend(vbox, uiControl(ecbox), 0); + + rb = uiNewRadioButtons(); + uiRadioButtonsAppend(rb, "Radio Button 1"); + uiRadioButtonsAppend(rb, "Radio Button 2"); + uiRadioButtonsAppend(rb, "Radio Button 3"); + uiBoxAppend(vbox, uiControl(rb), 0); + + return uiControl(hbox); +} + +// TODO make this not global +static uiWindow *mainwin; + +static void onOpenFileClicked(uiButton *b, void *data) +{ + uiEntry *entry = uiEntry(data); + char *filename; + + filename = uiOpenFile(mainwin); + if (filename == NULL) { + uiEntrySetText(entry, "(cancelled)"); + return; + } + uiEntrySetText(entry, filename); + uiFreeText(filename); +} + +static void onSaveFileClicked(uiButton *b, void *data) +{ + uiEntry *entry = uiEntry(data); + char *filename; + + filename = uiSaveFile(mainwin); + if (filename == NULL) { + uiEntrySetText(entry, "(cancelled)"); + return; + } + uiEntrySetText(entry, filename); + uiFreeText(filename); +} + +static void onMsgBoxClicked(uiButton *b, void *data) +{ + uiMsgBox(mainwin, + "This is a normal message box.", + "More detailed information can be shown here."); +} + +static void onMsgBoxErrorClicked(uiButton *b, void *data) +{ + uiMsgBoxError(mainwin, + "This message box describes an error.", + "More detailed information can be shown here."); +} + +static uiControl *makeDataChoosersPage(void) +{ + uiBox *hbox; + uiBox *vbox; + uiGrid *grid; + uiButton *button; + uiEntry *entry; + uiGrid *msggrid; + + hbox = uiNewHorizontalBox(); + uiBoxSetPadded(hbox, 1); + + vbox = uiNewVerticalBox(); + uiBoxSetPadded(vbox, 1); + uiBoxAppend(hbox, uiControl(vbox), 0); + + uiBoxAppend(vbox, + uiControl(uiNewDatePicker()), + 0); + uiBoxAppend(vbox, + uiControl(uiNewTimePicker()), + 0); + uiBoxAppend(vbox, + uiControl(uiNewDateTimePicker()), + 0); + + uiBoxAppend(vbox, + uiControl(uiNewFontButton()), + 0); + uiBoxAppend(vbox, + uiControl(uiNewColorButton()), + 0); + + uiBoxAppend(hbox, + uiControl(uiNewVerticalSeparator()), + 0); + + vbox = uiNewVerticalBox(); + uiBoxSetPadded(vbox, 1); + uiBoxAppend(hbox, uiControl(vbox), 1); + + grid = uiNewGrid(); + uiGridSetPadded(grid, 1); + uiBoxAppend(vbox, uiControl(grid), 0); + + button = uiNewButton("Open File"); + entry = uiNewEntry(); + uiEntrySetReadOnly(entry, 1); + uiButtonOnClicked(button, onOpenFileClicked, entry); + uiGridAppend(grid, uiControl(button), + 0, 0, 1, 1, + 0, uiAlignFill, 0, uiAlignFill); + uiGridAppend(grid, uiControl(entry), + 1, 0, 1, 1, + 1, uiAlignFill, 0, uiAlignFill); + + button = uiNewButton("Save File"); + entry = uiNewEntry(); + uiEntrySetReadOnly(entry, 1); + uiButtonOnClicked(button, onSaveFileClicked, entry); + uiGridAppend(grid, uiControl(button), + 0, 1, 1, 1, + 0, uiAlignFill, 0, uiAlignFill); + uiGridAppend(grid, uiControl(entry), + 1, 1, 1, 1, + 1, uiAlignFill, 0, uiAlignFill); + + msggrid = uiNewGrid(); + uiGridSetPadded(msggrid, 1); + uiGridAppend(grid, uiControl(msggrid), + 0, 2, 2, 1, + 0, uiAlignCenter, 0, uiAlignStart); + + button = uiNewButton("Message Box"); + uiButtonOnClicked(button, onMsgBoxClicked, NULL); + uiGridAppend(msggrid, uiControl(button), + 0, 0, 1, 1, + 0, uiAlignFill, 0, uiAlignFill); + button = uiNewButton("Error Box"); + uiButtonOnClicked(button, onMsgBoxErrorClicked, NULL); + uiGridAppend(msggrid, uiControl(button), + 1, 0, 1, 1, + 0, uiAlignFill, 0, uiAlignFill); + + return uiControl(hbox); +} + +int main(void) +{ + uiInitOptions options; + const char *err; + uiTab *tab; + + memset(&options, 0, sizeof (uiInitOptions)); + err = uiInit(&options); + if (err != NULL) { + fprintf(stderr, "error initializing libui: %s", err); + uiFreeInitError(err); + return 1; + } + + mainwin = uiNewWindow("libui Control Gallery", 640, 480, 1); + uiWindowOnClosing(mainwin, onClosing, NULL); + uiOnShouldQuit(onShouldQuit, mainwin); + + tab = uiNewTab(); + uiWindowSetChild(mainwin, uiControl(tab)); + uiWindowSetMargined(mainwin, 1); + + uiTabAppend(tab, "Basic Controls", makeBasicControlsPage()); + uiTabSetMargined(tab, 0, 1); + + uiTabAppend(tab, "Numbers and Lists", makeNumbersPage()); + uiTabSetMargined(tab, 1, 1); + + uiTabAppend(tab, "Data Choosers", makeDataChoosersPage()); + uiTabSetMargined(tab, 2, 1); + + uiControlShow(uiControl(mainwin)); + uiMain(); + return 0; +} + +#if 0 + +static void openClicked(uiMenuItem *item, uiWindow *w, void *data) +{ + char *filename; + + filename = uiOpenFile(mainwin); + if (filename == NULL) { + uiMsgBoxError(mainwin, "No file selected", "Don't be alarmed!"); + return; + } + uiMsgBox(mainwin, "File selected", filename); + uiFreeText(filename); +} + +static void saveClicked(uiMenuItem *item, uiWindow *w, void *data) +{ + char *filename; + + filename = uiSaveFile(mainwin); + if (filename == NULL) { + uiMsgBoxError(mainwin, "No file selected", "Don't be alarmed!"); + return; + } + uiMsgBox(mainwin, "File selected (don't worry, it's still there)", filename); + uiFreeText(filename); +} + +static uiSpinbox *spinbox; +static uiSlider *slider; +static uiProgressBar *progressbar; + +static void update(int value) +{ + uiSpinboxSetValue(spinbox, value); + uiSliderSetValue(slider, value); + uiProgressBarSetValue(progressbar, value); +} + +static void onSpinboxChanged(uiSpinbox *s, void *data) +{ + update(uiSpinboxValue(spinbox)); +} + +static void onSliderChanged(uiSlider *s, void *data) +{ + update(uiSliderValue(slider)); +} + +int main(void) +{ + uiInitOptions o; + const char *err; + uiMenu *menu; + uiMenuItem *item; + uiBox *box; + uiBox *hbox; + uiGroup *group; + uiBox *inner; + uiBox *inner2; + uiEntry *entry; + uiCombobox *cbox; + uiEditableCombobox *ecbox; + uiRadioButtons *rb; + uiTab *tab; + + memset(&o, 0, sizeof (uiInitOptions)); + err = uiInit(&o); + if (err != NULL) { + fprintf(stderr, "error initializing ui: %s\n", err); + uiFreeInitError(err); + return 1; + } + + menu = uiNewMenu("File"); + item = uiMenuAppendItem(menu, "Open"); + uiMenuItemOnClicked(item, openClicked, NULL); + item = uiMenuAppendItem(menu, "Save"); + uiMenuItemOnClicked(item, saveClicked, NULL); + item = uiMenuAppendQuitItem(menu); + uiOnShouldQuit(shouldQuit, NULL); + + menu = uiNewMenu("Edit"); + item = uiMenuAppendCheckItem(menu, "Checkable Item"); + uiMenuAppendSeparator(menu); + item = uiMenuAppendItem(menu, "Disabled Item"); + uiMenuItemDisable(item); + item = uiMenuAppendPreferencesItem(menu); + + menu = uiNewMenu("Help"); + item = uiMenuAppendItem(menu, "Help"); + item = uiMenuAppendAboutItem(menu); + + mainwin = uiNewWindow("libui Control Gallery", 640, 480, 1); + uiWindowSetMargined(mainwin, 1); + uiWindowOnClosing(mainwin, onClosing, NULL); + + box = uiNewVerticalBox(); + uiBoxSetPadded(box, 1); + uiWindowSetChild(mainwin, uiControl(box)); + + hbox = uiNewHorizontalBox(); + uiBoxSetPadded(hbox, 1); + uiBoxAppend(box, uiControl(hbox), 1); + + group = uiNewGroup("Basic Controls"); + uiGroupSetMargined(group, 1); + uiBoxAppend(hbox, uiControl(group), 0); + + inner = uiNewVerticalBox(); + uiBoxSetPadded(inner, 1); + uiGroupSetChild(group, uiControl(inner)); + + uiBoxAppend(inner, + uiControl(uiNewButton("Button")), + 0); + uiBoxAppend(inner, + uiControl(uiNewCheckbox("Checkbox")), + 0); + entry = uiNewEntry(); + uiEntrySetText(entry, "Entry"); + uiBoxAppend(inner, + uiControl(entry), + 0); + uiBoxAppend(inner, + uiControl(uiNewLabel("Label")), + 0); + + uiBoxAppend(inner, + uiControl(uiNewHorizontalSeparator()), + 0); + + uiBoxAppend(inner, + uiControl(uiNewDatePicker()), + 0); + uiBoxAppend(inner, + uiControl(uiNewTimePicker()), + 0); + uiBoxAppend(inner, + uiControl(uiNewDateTimePicker()), + 0); + + uiBoxAppend(inner, + uiControl(uiNewFontButton()), + 0); + + uiBoxAppend(inner, + uiControl(uiNewColorButton()), + 0); + + inner2 = uiNewVerticalBox(); + uiBoxSetPadded(inner2, 1); + uiBoxAppend(hbox, uiControl(inner2), 1); + + group = uiNewGroup("Numbers"); + uiGroupSetMargined(group, 1); + uiBoxAppend(inner2, uiControl(group), 0); + + inner = uiNewVerticalBox(); + uiBoxSetPadded(inner, 1); + uiGroupSetChild(group, uiControl(inner)); + + spinbox = uiNewSpinbox(0, 100); + uiSpinboxOnChanged(spinbox, onSpinboxChanged, NULL); + uiBoxAppend(inner, uiControl(spinbox), 0); + + slider = uiNewSlider(0, 100); + uiSliderOnChanged(slider, onSliderChanged, NULL); + uiBoxAppend(inner, uiControl(slider), 0); + + progressbar = uiNewProgressBar(); + uiBoxAppend(inner, uiControl(progressbar), 0); + + group = uiNewGroup("Lists"); + uiGroupSetMargined(group, 1); + uiBoxAppend(inner2, uiControl(group), 0); + + inner = uiNewVerticalBox(); + uiBoxSetPadded(inner, 1); + uiGroupSetChild(group, uiControl(inner)); + + cbox = uiNewCombobox(); + uiComboboxAppend(cbox, "Combobox Item 1"); + uiComboboxAppend(cbox, "Combobox Item 2"); + uiComboboxAppend(cbox, "Combobox Item 3"); + uiBoxAppend(inner, uiControl(cbox), 0); + + ecbox = uiNewEditableCombobox(); + uiEditableComboboxAppend(ecbox, "Editable Item 1"); + uiEditableComboboxAppend(ecbox, "Editable Item 2"); + uiEditableComboboxAppend(ecbox, "Editable Item 3"); + uiBoxAppend(inner, uiControl(ecbox), 0); + + rb = uiNewRadioButtons(); + uiRadioButtonsAppend(rb, "Radio Button 1"); + uiRadioButtonsAppend(rb, "Radio Button 2"); + uiRadioButtonsAppend(rb, "Radio Button 3"); + uiBoxAppend(inner, uiControl(rb), 1); + + tab = uiNewTab(); + uiTabAppend(tab, "Page 1", uiControl(uiNewHorizontalBox())); + uiTabAppend(tab, "Page 2", uiControl(uiNewHorizontalBox())); + uiTabAppend(tab, "Page 3", uiControl(uiNewHorizontalBox())); + uiBoxAppend(inner2, uiControl(tab), 1); + + uiControlShow(uiControl(mainwin)); + uiMain(); + uiUninit(); + return 0; +} + +#endif diff --git a/src/libui_sdl/libui/examples/controlgallery/unix.png b/src/libui_sdl/libui/examples/controlgallery/unix.png Binary files differnew file mode 100644 index 0000000..0c58d09 --- /dev/null +++ b/src/libui_sdl/libui/examples/controlgallery/unix.png diff --git a/src/libui_sdl/libui/examples/controlgallery/windows.png b/src/libui_sdl/libui/examples/controlgallery/windows.png Binary files differnew file mode 100644 index 0000000..4be832f --- /dev/null +++ b/src/libui_sdl/libui/examples/controlgallery/windows.png |