// a custom build target for go
//go:generate go get -v github.com/tv42/becky
//go:generate go install github.com/tv42/becky
//go:generate becky README.md

package main

import (
	"log"
	"runtime/debug"
	"time"

//	"git.wit.org/wit/gui"
)

type myChan struct {
	Width  int
	Height int
}

// This goroutine will
func watchWindows() {
	var i = 1
	for {
		log.Println("wait for GUI exit()", i)
		i += 1
		time.Sleep(loopsleep * time.Second / 10)
		// dotest()
		if closed {
			log.Println("Window was closed")

			/*
			if dnsSlider == nil {
				log.Println("SKIPPING: dnsSlider == nil")
			} else {
				dnsSlider.SetValue(55)
			}
			*/
			// gui.CreateWindow("ARGV", "vars", 300, 200, makeWindowARGV)

			debug.PrintStack()
			dumpModuleInfo()
/*
			gui.DumpBoxes()
			window := gui.Data.WindowMap["Debugging2"]
			if window != nil {
				log.Println("found debugging2 Window")
				gui.DeleteWindow("Debugging2")
			} else {
				closed = false
			}
*/

			// toggle the systray menu
			var tmp struct{}
			log.Println("is mChecked uninitialized:", mChecked == nil)
			if mChecked != nil {
				log.Println("is mChecked.ClickedCh uninitialized:", mChecked.ClickedCh == nil)
				if mChecked.ClickedCh != nil {
					mChecked.ClickedCh <- tmp // signal the main goroutine
				}
			}
		}
	}
}

func dumpModuleInfo() {
	tmp, _ := debug.ReadBuildInfo()
	if tmp == nil {
		log.Println("This wasn't compiled with go module support")
		return
	}
	log.Println("mod.Path         = ", tmp.Path)
	log.Println("mod.Main.Path    = ", tmp.Main.Path)
	log.Println("mod.Main.Version = ", tmp.Main.Version)
	log.Println("mod.Main.Sum     = ", tmp.Main.Sum)
	for _, value := range tmp.Deps {
		log.Println("\tmod.Path    = ", value.Path)
		log.Println("\tmod.Version = ", value.Version)
	}
}

func dumbLoop() {
	var i = 1
	for {
		log.Println("dumb GUI loop ", i)
		i += 1
		time.Sleep(2 * time.Second)
	}
}
