add a gui-example1/ to test macos and windows

Signed-off-by: Jeff Carr <jcarr@wit.com>
This commit is contained in:
Jeff Carr 2019-05-06 16:41:59 -07:00
parent ea1c9fd64d
commit 790b4ae20a
4 changed files with 214 additions and 6 deletions

1
.gitignore vendored
View File

@ -1 +1,2 @@
cloud-control-panel
gui-example1/gui-example1

196
gui-example1/main.go Normal file
View File

@ -0,0 +1,196 @@
package main
import "github.com/andlabs/ui"
var mainwin *ui.Window
func makeGroupEntries() ui.Control {
group := ui.NewGroup("Entries")
group.SetMargined(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 group
}
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(47, 100)
slider := ui.NewSlider(21, 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("gui-example1", 300, 200, false)
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("example1", makeNumbersPage())
tab.SetMargined(0, true)
mainwin.Show()
}
func main() {
ui.Main(setupUI)
}

View File

@ -268,7 +268,9 @@ func setupUI() {
tab.SetMargined(0, true)
name = "jcarrTable"
tab.Append(name, makeJcarrtable(name))
table, mh, model := makeJcarrtable(name)
log.Println(table, mh, model)
tab.Append(name, table)
tab.SetMargined(1, true)
tab.Append("List examples", makeNumbersPage())

View File

@ -16,20 +16,30 @@ type vmRowData struct {
disk int
}
type uiColumn struct {
offset int
name string
what ui.TableValue
color ui.TableColor
// ui.TableString(""), // column 4 button text
// ui.TableColor{}, // column 1 text color
// ui.TableImage{}, // column 1 image
// ui.TableInt(0), // column 3 checkbox state
}
type modelHandler struct {
name string
rows int
yellowRow int
checkStates []int
vms []vmRowData
tests []int
}
func newDefaultModelHandler() *modelHandler {
mh := new(modelHandler)
mh.rows = 20
mh.checkStates = make([]int, mh.rows)
mh.tests = make([]int, mh.rows)
mh.vms = make([]vmRowData, mh.rows)
mh.vms[8].hostname = "fire"
mh.vms[9].hostname = "librem15.this.is.a.really.long.string.test"
@ -43,7 +53,6 @@ func newJcarrModelHandler() *modelHandler {
mh := new(modelHandler)
mh.rows = 10
mh.checkStates = make([]int, mh.rows)
mh.tests = make([]int, mh.rows)
mh.vms = make([]vmRowData, mh.rows)
mh.vms[8].hostname = "jcarr"
mh.vms[9].hostname = "jcarr2"
@ -206,7 +215,7 @@ func makeDemotable(name string) *ui.Table {
return table
}
func makeJcarrtable(name string) *ui.Table {
func makeJcarrtable(name string) (*ui.Table, *modelHandler, *ui.TableModel) {
mh := newJcarrModelHandler()
mh.name = name
model := ui.NewTableModel(mh)
@ -220,5 +229,5 @@ func makeJcarrtable(name string) *ui.Table {
table.AppendTextColumn("hostname", 1, ui.TableModelColumnNeverEditable, nil)
table.AppendButtonColumn("Details", 3, ui.TableModelColumnAlwaysEditable)
return table
return table, mh, model
}