diff options
Diffstat (limited to 'examples/controlgallery.go')
| -rw-r--r-- | examples/controlgallery.go | 222 | 
1 files changed, 222 insertions, 0 deletions
diff --git a/examples/controlgallery.go b/examples/controlgallery.go new file mode 100644 index 0000000..d77bebe --- /dev/null +++ b/examples/controlgallery.go @@ -0,0 +1,222 @@ +// 12 august 2018 + +// +build OMIT + +package main + +import ( +	"github.com/andlabs/ui" +) + +var mainwin *ui.Window + +func makeBasicControlsPage() ui.Control { +	vbox := ui.NewVerticalBox() +	vbox.SetPadded(true) + +	hbox := ui.NewHorizontalBox() +	hbox.SetPadded(true) +	vbox.Append(hbox, false) + +	hbox.Append(ui.NewButton("Button"), false) +	hbox.Append(ui.NewCheckbox("Checkbox"), false) + +	vbox.Append(ui.NewLabel("This is a label. Right now, labels can only span one line."), false) + +	vbox.Append(ui.NewHorizontalSeparator(), false) + +	group := ui.NewGroup("Entries") +	group.SetMargined(true) +	vbox.Append(group, true) + +group.SetChild(ui.NewNonWrappingMultilineEntry()) + +	entryForm := ui.NewForm() +	entryForm.SetPadded(true) +	group.SetChild(entryForm) + +	entryForm.Append("Entry", ui.NewEntry(), false) +	entryForm.Append("Password Entry", ui.NewPasswordEntry(), false) +	entryForm.Append("Search Entry", ui.NewSearchEntry(), false) +	entryForm.Append("Multiline Entry", ui.NewMultilineEntry(), true) +	entryForm.Append("Multiline Entry No Wrap", ui.NewNonWrappingMultilineEntry(), true) + +	return vbox +} + +func makeNumbersPage() ui.Control { +	hbox := ui.NewHorizontalBox() +	hbox.SetPadded(true) + +	group := ui.NewGroup("Numbers") +	group.SetMargined(true) +	hbox.Append(group, true) + +	vbox := ui.NewVerticalBox() +	vbox.SetPadded(true) +	group.SetChild(vbox) + +	spinbox := ui.NewSpinbox(0, 100) +	slider := ui.NewSlider(0, 100) +	pbar := ui.NewProgressBar() +	spinbox.OnChanged(func(*ui.Spinbox) { +		slider.SetValue(spinbox.Value()) +		pbar.SetValue(spinbox.Value()) +	}) +	slider.OnChanged(func(*ui.Slider) { +		spinbox.SetValue(slider.Value()) +		pbar.SetValue(slider.Value()) +	}) +	vbox.Append(spinbox, false) +	vbox.Append(slider, false) +	vbox.Append(pbar, false) + +	ip := ui.NewProgressBar() +	ip.SetValue(-1) +	vbox.Append(ip, false) + +	group = ui.NewGroup("Lists") +	group.SetMargined(true) +	hbox.Append(group, true) + +	vbox = ui.NewVerticalBox() +	vbox.SetPadded(true) +	group.SetChild(vbox) + +	cbox := ui.NewCombobox() +	cbox.Append("Combobox Item 1") +	cbox.Append("Combobox Item 2") +	cbox.Append("Combobox Item 3") +	vbox.Append(cbox, false) + +	ecbox := ui.NewEditableCombobox() +	ecbox.Append("Editable Item 1") +	ecbox.Append("Editable Item 2") +	ecbox.Append("Editable Item 3") +	vbox.Append(ecbox, false) + +	rb := ui.NewRadioButtons() +	rb.Append("Radio Button 1") +	rb.Append("Radio Button 2") +	rb.Append("Radio Button 3") +	vbox.Append(rb, false) + +	return hbox +} + +func makeDataChoosersPage() ui.Control { +	hbox := ui.NewHorizontalBox() +	hbox.SetPadded(true) + +	vbox := ui.NewVerticalBox() +	vbox.SetPadded(true) +	hbox.Append(vbox, false) + +	vbox.Append(ui.NewDatePicker(), false) +	vbox.Append(ui.NewTimePicker(), false) +	vbox.Append(ui.NewDateTimePicker(), false) +	vbox.Append(ui.NewFontButton(), false) +	vbox.Append(ui.NewColorButton(), false) + +	hbox.Append(ui.NewVerticalSeparator(), false) + +	vbox = ui.NewVerticalBox() +	vbox.SetPadded(true) +	hbox.Append(vbox, true) + +	grid := ui.NewGrid() +	grid.SetPadded(true) +	vbox.Append(grid, false) + +	button := ui.NewButton("Open File") +	entry := ui.NewEntry() +	entry.SetReadOnly(true) +	button.OnClicked(func(*ui.Button) { +		filename := ui.OpenFile(mainwin) +		if filename == "" { +			filename = "(cancelled)" +		} +		entry.SetText(filename) +	}) +	grid.Append(button, +		0, 0, 1, 1, +		false, ui.AlignFill, false, ui.AlignFill) +	grid.Append(entry, +		1, 0, 1, 1, +		true, ui.AlignFill, false, ui.AlignFill) + +	button = ui.NewButton("Save File") +	entry2 := ui.NewEntry() +	entry2.SetReadOnly(true) +	button.OnClicked(func(*ui.Button) { +		filename := ui.SaveFile(mainwin) +		if filename == "" { +			filename = "(cancelled)" +		} +		entry2.SetText(filename) +	}) +	grid.Append(button, +		0, 1, 1, 1, +		false, ui.AlignFill, false, ui.AlignFill) +	grid.Append(entry2, +		1, 1, 1, 1, +		true, ui.AlignFill, false, ui.AlignFill) + +	msggrid := ui.NewGrid() +	msggrid.SetPadded(true) +	grid.Append(msggrid, +		0, 2, 2, 1, +		false, ui.AlignCenter, false, ui.AlignStart) + +	button = ui.NewButton("Message Box") +	button.OnClicked(func(*ui.Button) { +		ui.MsgBox(mainwin, +			"This is a normal message box.", +			"More detailed information can be shown here.") +	}) +	msggrid.Append(button, +		0, 0, 1, 1, +		false, ui.AlignFill, false, ui.AlignFill) +	button = ui.NewButton("Error Box") +	button.OnClicked(func(*ui.Button) { +		ui.MsgBoxError(mainwin, +			"This message box describes an error.", +			"More detailed information can be shown here.") +	}) +	msggrid.Append(button, +		1, 0, 1, 1, +		false, ui.AlignFill, false, ui.AlignFill) + +	return hbox +} + +func setupUI() { +	mainwin = ui.NewWindow("libui Control Gallery", 640, 480, true) +	mainwin.OnClosing(func(*ui.Window) bool { +		ui.Quit() +		return true +	}) +	ui.OnShouldQuit(func() bool { +		mainwin.Destroy() +		return true +	}) + +	tab := ui.NewTab() +	mainwin.SetChild(tab) +	mainwin.SetMargined(true) + +	tab.Append("Basic Controls", makeBasicControlsPage()) +	tab.SetMargined(0, true) + +	tab.Append("Numbers and Lists", makeNumbersPage()) +	tab.SetMargined(1, true) + +	tab.Append("Data Choosers", makeDataChoosersPage()) +	tab.SetMargined(2, true) + +	mainwin.Show() +} + +func main() { +	ui.Main(setupUI) +}  | 
