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)
	}
}