package main import "time" import "log" import "fmt" import "os" import "github.com/andlabs/ui" import _ "github.com/andlabs/ui/winmanifest" var mainwin *ui.Window var hbox *ui.Box 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, true) mainwin.OnClosing(func(*ui.Window) bool { ui.Quit() os.Exit(0) 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() { ui.Main(addAccountWindow) ui.Main(showSplash) go ui.Main(setupUI) // locks up GTK after a while (50 times) time.Sleep(1000 * time.Millisecond) count := 0 var newgroup *ui.Group name := "Test " + fmt.Sprintf("%d", count) log.Println("name=",name) newgroup = ui.NewGroup(name) newgroup.SetMargined(true) hbox.Append(newgroup, false) // display the splash screen info log.Println("sleep for 3") time.Sleep(3000 * time.Millisecond) hbox.Delete(1) // newgroup.Delete() // can't destroy when there is a parent newgroup.Destroy() newgroup = nil // wait forever here for { log.Println("sleep for 3 forever here") time.Sleep(3000 * time.Millisecond) } }