diff --git a/examples/controlgallery/GNUmakefile b/examples/controlgallery/GNUmakefile new file mode 100644 index 00000000..32017fbc --- /dev/null +++ b/examples/controlgallery/GNUmakefile @@ -0,0 +1,29 @@ +# 2 september 2015 + +OUT = controlgallery + +ifeq ($(OS),windows) +linkto = ../../out/new.dll +CC = i686-w64-mingw32-gcc +OUT = controlgallery.exe +else +ifeq ($(OS),darwin) +linkto = ../../out/new.dylib +else +linkto = ../../out/new.so +endif +endif + +CFILES = \ + main.c + +OFILES = $(CFILES:%.c=%.o) + +controlgallery: $(OFILES) + $(CC) -g -o $(OUT) $(OFILES) $(linkto) + +%.o: %.c + $(CC) -c -g -o $@ $< + +clean: + rm -f $(OUT) $(OFILES) diff --git a/examples/controlgallery/main.c b/examples/controlgallery/main.c new file mode 100644 index 00000000..d45d5a3d --- /dev/null +++ b/examples/controlgallery/main.c @@ -0,0 +1,218 @@ +// 2 september 2015 +#include +#include +#include "../../ui.h" + +static uiWindow *mainwin; + +static int onClosing(uiWindow *w, void *data) +{ + uiControlDestroy(uiControl(mainwin)); + uiQuit(); + return 0; +} + +static int shouldQuit(void *data) +{ + uiControlDestroy(uiControl(mainwin)); + return 1; +} + +static void openClicked(uiMenuItem *item, uiWindow *w, void *data) +{ + char *filename; + + filename = uiOpenFile(); + if (filename == NULL) { + uiMsgBoxError("No file selected", "Don't be alarmed!"); + return; + } + uiMsgBox("File selected", filename); + uiFreeText(filename); +} + +static void saveClicked(uiMenuItem *item, uiWindow *w, void *data) +{ + char *filename; + + filename = uiSaveFile(); + if (filename == NULL) { + uiMsgBoxError("No file selected", "Don't be alarmed!"); + return; + } + uiMsgBox("File selected (don't worry, it's still there)", filename); + uiFreeText(filename); +} + +static uiSpinbox *spinbox; +static uiSlider *slider; +static uiProgressBar *progressbar; + +static void update(intmax_t 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; + uiGroup *group; + uiBox *inner; + uiBox *inner2; + uiEntry *entry; + uiCombobox *cbox; + 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)); + + group = uiNewGroup("Buttons and Text"); + uiGroupSetMargined(group, 1); + uiBoxAppend(box, uiControl(group), 0); + + inner = uiNewHorizontalBox(); + uiBoxSetPadded(inner, 1); + uiGroupSetChild(group, uiControl(inner)); + + inner2 = uiNewVerticalBox(); + uiBoxSetPadded(inner2, 1); + uiBoxAppend(inner, uiControl(inner2), 1); + + uiBoxAppend(inner2, + uiControl(uiNewButton("Button")), + 0); + uiBoxAppend(inner2, + uiControl(uiNewCheckbox("Checkbox")), + 0); + entry = uiNewEntry(); + uiEntrySetText(entry, "Entry"); + uiBoxAppend(inner2, + uiControl(entry), + 0); + uiBoxAppend(inner2, + uiControl(uiNewLabel("Label")), + 0); + + inner2 = uiNewVerticalBox(); + uiBoxSetPadded(inner2, 1); + uiBoxAppend(inner, uiControl(inner2), 1); + + uiBoxAppend(inner2, + uiControl(uiNewDatePicker()), + 0); + uiBoxAppend(inner2, + uiControl(uiNewTimePicker()), + 0); + uiBoxAppend(inner2, + uiControl(uiNewDateTimePicker()), + 0); + + group = uiNewGroup("Numbers"); + uiGroupSetMargined(group, 1); + uiBoxAppend(box, 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(box, uiControl(group), 0); + + inner = uiNewHorizontalBox(); + uiBoxSetPadded(inner, 1); + uiGroupSetChild(group, uiControl(inner)); + + inner2 = uiNewVerticalBox(); + uiBoxSetPadded(inner2, 1); + uiBoxAppend(inner, uiControl(inner2), 1); + + cbox = uiNewCombobox(); + uiComboboxAppend(cbox, "Combobox Item 1"); + uiComboboxAppend(cbox, "Combobox Item 2"); + uiComboboxAppend(cbox, "Combobox Item 3"); + uiBoxAppend(inner2, uiControl(cbox), 0); + + cbox = uiNewEditableCombobox(); + uiComboboxAppend(cbox, "Editable Item 1"); + uiComboboxAppend(cbox, "Editable Item 2"); + uiComboboxAppend(cbox, "Editable Item 3"); + uiBoxAppend(inner2, uiControl(cbox), 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(box, uiControl(tab), 1); + + uiControlShow(uiControl(mainwin)); + uiMain(); + uiUninit(); + return 0; +} diff --git a/examples/controlgallery/unix.png b/examples/controlgallery/unix.png new file mode 100644 index 00000000..cb10525e Binary files /dev/null and b/examples/controlgallery/unix.png differ