aboutsummaryrefslogtreecommitdiff
path: root/src/libui_sdl/libui/examples/controlgallery
diff options
context:
space:
mode:
Diffstat (limited to 'src/libui_sdl/libui/examples/controlgallery')
-rw-r--r--src/libui_sdl/libui/examples/controlgallery/darwin.pngbin0 -> 97260 bytes
-rw-r--r--src/libui_sdl/libui/examples/controlgallery/main.c540
-rw-r--r--src/libui_sdl/libui/examples/controlgallery/unix.pngbin0 -> 41757 bytes
-rw-r--r--src/libui_sdl/libui/examples/controlgallery/windows.pngbin0 -> 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
new file mode 100644
index 0000000..f61b54b
--- /dev/null
+++ b/src/libui_sdl/libui/examples/controlgallery/darwin.png
Binary files differ
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
new file mode 100644
index 0000000..0c58d09
--- /dev/null
+++ b/src/libui_sdl/libui/examples/controlgallery/unix.png
Binary files differ
diff --git a/src/libui_sdl/libui/examples/controlgallery/windows.png b/src/libui_sdl/libui/examples/controlgallery/windows.png
new file mode 100644
index 0000000..4be832f
--- /dev/null
+++ b/src/libui_sdl/libui/examples/controlgallery/windows.png
Binary files differ