From 70e4841d311d68689724768157cc9cbfbde7a9fc Mon Sep 17 00:00:00 2001
From: StapleButter <thetotalworm@gmail.com>
Date: Sat, 9 Sep 2017 02:30:51 +0200
Subject: another UI attempt, I guess. sorry.

---
 .../libui/examples/controlgallery/darwin.png       | Bin 0 -> 97260 bytes
 src/libui_sdl/libui/examples/controlgallery/main.c | 540 +++++++++++++++++++++
 .../libui/examples/controlgallery/unix.png         | Bin 0 -> 41757 bytes
 .../libui/examples/controlgallery/windows.png      | Bin 0 -> 48217 bytes
 4 files changed, 540 insertions(+)
 create mode 100644 src/libui_sdl/libui/examples/controlgallery/darwin.png
 create mode 100644 src/libui_sdl/libui/examples/controlgallery/main.c
 create mode 100644 src/libui_sdl/libui/examples/controlgallery/unix.png
 create mode 100644 src/libui_sdl/libui/examples/controlgallery/windows.png

(limited to 'src/libui_sdl/libui/examples/controlgallery')

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
Binary files /dev/null and b/src/libui_sdl/libui/examples/controlgallery/darwin.png 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
Binary files /dev/null and b/src/libui_sdl/libui/examples/controlgallery/unix.png 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
Binary files /dev/null and b/src/libui_sdl/libui/examples/controlgallery/windows.png differ
-- 
cgit v1.2.3