package gui import ( "fmt" "log" "time" "github.com/davecgh/go-spew/spew" ) // WatchGUI() opens a goroutine // // From that goroutine, it dumps out debugging information every 4 seconds /* TODO: add configuration triggers on what to dump out TODO: allow this to be sent to /var/log, syslogd, systemd's journalctl, etc */ func WatchGUI() { count := 0 for { if count > 20 { log.Println("Sleep() in watchGUI()") if Config.Debug { DumpBoxes() } count = 0 } count += 1 time.Sleep(200 * time.Millisecond) } } func DumpWindows() { for name, _ := range Data.WindowMap { log.Println("gui.DumpWindows() window =", name) } } func DumpMap() { for name, window := range Data.WindowMap { log.Println("gui.DumpBoxes() MAP: ", name) log.Println("gui.DumpBoxes() BOXES:", name) for name, abox := range window.BoxMap { log.Printf("gui.DumpBoxes() \tBOX mapname=%-12s abox.Name=%-12s", name, abox.Name) } } } func DumpBoxes() { for name, window := range Data.WindowMap { log.Println("gui.DumpBoxes() MAP: ", name) if window.TabNumber == nil { log.Println("gui.DumpBoxes() \tWindows.TabNumber = nil") } else { log.Println("gui.DumpBoxes() \tWindows.TabNumber =", *window.TabNumber) } log.Println("gui.DumpBoxes()\tWindow.name =", window.Name) // log.Println("gui.DumpBoxes()\tWindow.UiWindow type =", reflect.TypeOf(window.UiWindow)) log.Println("gui.DumpBoxes()\tWindow.UiWindow =", window.UiWindow) log.Println("gui.DumpBoxes()\tWindow.UiTab =", window.UiTab) for name, abox := range window.BoxMap { log.Printf("gui.DumpBoxes() \tBOX mapname=%-12s abox.Name=%-12s", name, abox.Name) if name == "MAINBOX" { if Config.Debug { scs := spew.ConfigState{MaxDepth: 1} scs.Dump(abox.UiBox) } } } if window.UiTab != nil { // log.Println("gui.DumpBoxes()\tWindow.UiTab type =", reflect.TypeOf(window.UiTab)) // log.Println("gui.DumpBoxes()\tWindow.UiTab =", window.UiTab) pages := window.UiTab.NumPages() log.Println("gui.DumpBoxes()\tWindow.UiTab.NumPages() =", pages) // for i := 0; i < pages; i++ { // log.Println("gui.DumpBoxes()\t\tWindow.UiTab.Margined(", i, ") =", window.UiTab.Margined(i)) // } // tmp := spew.NewDefaultConfig() // tmp.MaxDepth = 2 // tmp.Dump(window.UiTab) if Config.Debug { scs := spew.ConfigState{MaxDepth: 2} scs.Dump(window.UiTab) } } } /* for i, window := range Data.Windows { if (window.TabNumber == nil) { log.Println("gui.DumpBoxes() Data.Windows", i, "Name =", window.Name, "TabNumber = nil") } else { log.Println("gui.DumpBoxes() Data.Windows", i, "Name =", window.Name, "TabNumber =", *window.TabNumber) } } */ } func addTableTab() { var parts []TableColumnData for key, foo := range []string{"BG", "TEXTCOLOR", "BUTTON", "TEXTCOLOR", "TEXTCOLOR", "TEXT", "BUTTON", "TEXT", "BUTTON"} { log.Println(key, foo) var b TableColumnData b.CellType = foo b.Heading = fmt.Sprintf("heading%d", key) parts = append(parts, b) } log.Println("Sleep for 1 second, then try to add new tabs") time.Sleep(1 * time.Second) } func (dn *GuiData) DumpNodeMap() { log.Println("DebugDataNodeMap():") for name, node := range dn.NodeMap { log.Println("\tNode =", node.id, node.Width, node.Height, name) if (node.children == nil) { log.Println("\t\tNo children") } else { log.Println("\t\tHas children:", node.children) } // node.SetName("yahoo") // log.Println("\tData.NodeMap node =", node) } } /* func DebugDataNodeChildren() { if Data.NodeMap == nil { log.Println("DebugDataNodeChildren() NodeMap == nil") return } log.Println("DebugDataNodeChildren():") for name, node := range Data.NodeMap { log.Println("\tNode name =", node.Width, node.Height, name) if (node.children == nil) { log.Println("\t\tNo children") break } log.Println("\t\tHas children:", node.children) } } */ func (dn *GuiData) ListChildren(dump bool) { if Data.NodeMap == nil { log.Println("gui.Data.ListChildren() Data.NodeMap == nil") return } log.Println("gui.Data.ListChildren() Data.NodeMap:") for name, node := range Data.NodeMap { log.Println("\tgui.Data.ListChildren() node =", node.id, node.Width, node.Height, name) if (dump == true) { node.Dump() } node.ListChildren(dump) } }