From 6b49c4139e0ec885d8790f6dba794f2c7272c074 Mon Sep 17 00:00:00 2001 From: Jeff Carr Date: Wed, 3 Jan 2024 11:18:56 -0600 Subject: start moving this stuff out --- mainWindow.go | 183 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 183 insertions(+) create mode 100644 mainWindow.go (limited to 'mainWindow.go') diff --git a/mainWindow.go b/mainWindow.go new file mode 100644 index 0000000..6d535cd --- /dev/null +++ b/mainWindow.go @@ -0,0 +1,183 @@ +package debugger + +import ( + "os" + + "go.wit.com/log" + "go.wit.com/gui/gui" +) + +// main debugging window +var myGui *gui.Node +var bugWin *gui.Node +var bugTab *gui.Node + +var mapWindows map[string]*gui.Node // tracks all windows that exist + +/* + Creates a window helpful for debugging this package +*/ + +func DebugWindow(p *gui.Node) { + myGui = p + bugWin = myGui.NewWindow("go.wit.com/gui debug window") + bugWin.StandardClose() + bugTab = DebugWindow2(bugWin, "Debug Tab") + bugTab.StandardClose() + if gui.ArgDebug() { + log.SetTmp() + // myGui.DebugFlags() + } +} + +func DebugWindow2(n *gui.Node, title string) *gui.Node { + var newW, newB, gog, g1 *gui.Node + // var logSettings *gadgets.LogSettings + + // time.Sleep(1 * time.Second) + newW = n.NewWindow(title) + + newB = newW.NewBox("hBox", true) + +//////////////////////// main debug things ////////////////////////////////// + gog = newB.NewGroup("Debugging Windows:") + + // generally useful debugging + cb := gog.NewCheckbox("Seperate windows") + cb.Custom = func() { + log.Log(BUG, "Custom() n.widget =", cb.Name, cb.B) + n.SetTabs(cb.B) + } + cb.Set(false) + n.SetTabs(false) + + gog.NewButton("logging", func () { + bugWin.DebugFlags() + }) + gog.NewButton("Debug Widgets", func () { + gui.DebugWidgetWindow(myGui) + }) + gog.NewButton("GO Language Internals", func () { + bugWin.DebugGolangWindow() + }) + gog.NewButton("GO Channels debug", func () { + bugWin.DebugGoChannels() + }) + + gog.NewLabel("Force Quit:") + + gog.NewButton("os.Exit()", func () { + os.Exit(0) + }) + +//////////////////////// window debugging things ////////////////////////////////// + g1 = newB.NewGroup("list things") + + g1.NewButton("List toolkits", func () { + dropdownWindow(g1) + bugWin.ListToolkits() + }) + g1.NewButton("List Windows", func () { + dropdownWindow(g1) + }) + g1.NewButton("List Window Widgets", func () { + dropdownWindowWidgets(g1) + }) + + g2 := newB.NewGroup("more things") + + g2.NewButton("Node.ListChildren(true)", func () { + if (activeWidget == nil) { + activeWidget = bugWin + } + activeWidget.ListChildren(true) + }) + + g2.NewButton("test conc", func () { + log.Log(true, "TODO: fix me") + // makeConc() + }) + + g2.NewButton("List Plugins", func () { + log.Log(true, "TODO: fix me") + /* + for _, aplug := range allPlugins { + log.Log(true, "Loaded plugin:", aplug.name, aplug.filename) + } + */ + }) + + g2.NewButton("load toolkit 'gocui'", func () { + bugWin.LoadToolkit("gocui") + }) + + g2.NewButton("load toolkit 'andlabs'", func () { + bugWin.LoadToolkit("andlabs") + }) + + return newB +} + +func dropdownWindow(p *gui.Node) { + var mapWindows map[string]*gui.Node + mapWindows = make(map[string]*gui.Node) + + dd := p.NewDropdown("Window Dropdown") + dd.Custom = func() { + name := dd.S + activeWidget = mapWindows[name] + setActiveWidget(activeWidget) + log.Log(true, "The Window was set to", name) + } + log.Log(INFO, "dd =", dd) + if (activeWidget == nil) { + // the debug window doesn't exist yet so you can't display the change + // TODO: make a fake binary tree for this(?) + return + } + + // var last = "" + for _, child := range p.Children() { + log.Log(INFO, "\t\t", child.GetName()) + dd.AddDropdownName(child.GetName()) + // last = child.Name + mapWindows[child.GetName()] = child + if (activeWidget == nil) { + activeWidget = child + } + } + // dd.SetDropdownName(last) +} + +func dropdownWindowWidgets(p *gui.Node) { + var mapWindows map[string]*gui.Node + mapWindows = make(map[string]*gui.Node) + + dd := p.NewDropdown("Window Widgets Dropdown") + dd.Custom = func() { + name := dd.S + activeWidget = mapWindows[name] + setActiveWidget(activeWidget) + } + log.Log(INFO, "dd =", dd) + + // log.Log("dumpWidget() ", b, listChildrenDepth, defaultPadding, n.id, info) + + var addDropdowns func (*gui.Node) + addDropdowns = func (n *gui.Node) { + // s := n.dumpWidget(true) + s := n.GetName() + dd.AddDropdownName(s) + mapWindows[s] = n + + for _, child := range n.Children() { + addDropdowns(child) + } + } + + // list everything in the binary tree + addDropdowns(bugWin) +} + +func setActiveWidget(w *gui.Node) { +} -- cgit v1.2.3