package main import "time" import "log" import "fmt" import "github.com/andlabs/ui" import _ "github.com/andlabs/ui/winmanifest" var mainwin *ui.Window var hbox *ui.Box var vbox *ui.Box var newgroup *ui.Group func makeSplashPage() 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) 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("WIT Splash", makeSplashPage()) tab.SetMargined(0, true) mainwin.Show() } func main() { go ui.Main(setupUI) // locks up GTK after a while (50 times) time.Sleep(1000 * time.Millisecond) count := 0 for { time.Sleep(300 * time.Millisecond) log.Println("sleep") if (newgroup == nil) { name := "Test " + fmt.Sprintf("%d", count) log.Println("name=",name) newgroup = ui.NewGroup(name) newgroup.SetMargined(true) hbox.Append(newgroup, false) // newgroup = append(newgroup, group) count += 1 } else { hbox.Delete(1) // newgroup.Delete() // can't destroy when there is a parent newgroup.Destroy() newgroup = nil } } }