summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2024-01-04 23:28:55 -0600
committerJeff Carr <[email protected]>2024-01-04 23:28:55 -0600
commitff32316084e11911462be420dd8310473b3d26fd (patch)
treef95e62befdccb40ed4f1b397f71a0d24ca427c3f
parent1f0e212002c2c5b34ea23d91e504ed59d31cab22 (diff)
ah, a much cleaner start to a debugger
Finally there is some sense this debugger can finally be useful. It can be developed and worked on in isolation from the 'gui' package therefore it can call more sophisticated widget collections. 'gadgets' all moved to gadgets.BasicWindow() thank goodness all this code is isolated finally can finally rename the files first gadgets.BasicWindow() Signed-off-by: Jeff Carr <[email protected]>
-rw-r--r--gochan.go (renamed from debugGochan.go)14
-rw-r--r--golang.go (renamed from debugGolang.go)19
-rw-r--r--main.go (renamed from mainWindow.go)59
-rw-r--r--structs.go30
-rw-r--r--widget.go (renamed from debugWidget.go)32
5 files changed, 95 insertions, 59 deletions
diff --git a/debugGochan.go b/gochan.go
index e21dda8..3f62b24 100644
--- a/debugGochan.go
+++ b/gochan.go
@@ -9,18 +9,18 @@ import (
"go.wit.com/log"
"go.wit.com/gui/gui"
+ "go.wit.com/gui/gadgets"
)
var debugWG *sync.WaitGroup
var debugNumberChan chan int
-func DebugGoChannels(n *gui.Node) {
- var w, g *gui.Node
+func DebugGoChannels(p *gui.Node) *gadgets.BasicWindow {
+ var w *gadgets.BasicWindow
+ var g *gui.Node
- w = n.NewWindow("Debug GO Channels")
- w.Custom = w.StandardClose
-
- g = w.NewGroup("Channel stuff")
+ w = gadgets.NewBasicWindow(p, "Debug GO Channels")
+ g = w.Box().NewGroup("Channel stuff").Pad()
// var debugWG sync.WaitGroup
g.NewButton("init()", func () {
@@ -63,7 +63,9 @@ func DebugGoChannels(n *gui.Node) {
g.NewButton("print", func () {
log.Log(true, "waitgroup counter is ?")
})
+ return w
}
+
func sendNumber(i int) {
log.Log(true, "START debugNumberChan <-", i, " (sending", i, "to channel)")
debugNumberChan <- i
diff --git a/debugGolang.go b/golang.go
index 1cddf9a..a037ca2 100644
--- a/debugGolang.go
+++ b/golang.go
@@ -10,16 +10,15 @@ import (
"go.wit.com/log"
"go.wit.com/gui/gui"
+ "go.wit.com/gui/gadgets"
)
-func DebugGolangWindow(n *gui.Node) {
- var newW, newB, g, og, outputTextbox *gui.Node
+func DebugGolangWindow(p *gui.Node) *gadgets.BasicWindow {
+ var w *gadgets.BasicWindow
+ var g, og, outputTextbox *gui.Node
- newW = n.NewWindow("GO")
- newW.Custom = newW.StandardClose
- newB = newW.NewBox("hBox", true)
-
- g = newB.NewGroup("Language Internals")
+ w = gadgets.NewBasicWindow(p, "GO")
+ g = w.Box().NewGroup("Language Internals").Pad()
g.NewButton("ReadModuleInfo()", func () {
tmp, _ := debug.ReadBuildInfo()
@@ -91,7 +90,7 @@ func DebugGolangWindow(n *gui.Node) {
panic("test")
})
- g = newB.NewGroup("TODO: finish these")
+ g = w.Box().NewGroup("TODO: finish these").Pad()
// g.NewLabel("TODO:")
@@ -122,11 +121,13 @@ func DebugGolangWindow(n *gui.Node) {
outputTextbox.SetText(dumpModuleInfo())
})
- og = newB.NewGroup("output")
+ og = w.Box().NewGroup("output").Pad()
outputTextbox = og.NewTextbox("outputBox")
outputTextbox.Custom = func () {
log.Log(true, "custom TextBox() for golang output a =", outputTextbox.S)
}
+
+ return w
}
func runtimeReadMemStats() string {
diff --git a/mainWindow.go b/main.go
index b40056c..bf18ed3 100644
--- a/mainWindow.go
+++ b/main.go
@@ -5,6 +5,7 @@ import (
"go.wit.com/log"
"go.wit.com/gui/gui"
+ "go.wit.com/gui/gadgets"
"go.wit.com/gui/gadgets/logsettings"
)
@@ -13,35 +14,40 @@ import (
*/
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 (me != nil) {
+ me.bugWin.Toggle()
+ return
+ }
+ me = new(debuggerSettings)
+ me.myGui = p
+
+ me.bugWin = gadgets.NewBasicWindow(p,"go.wit.com/gui debug window")
+
+ DebugWindow2(me.bugWin.Box(), "Debug Tab")
// initialize the log settings window (does not display it)
- myLS = logsettings.New(myGui)
+
+ me.myLS = logsettings.New(me.myGui)
if ArgDebug() {
log.SetTmp()
}
}
-func DebugWindow2(n *gui.Node, title string) *gui.Node {
- var newW, newB, gr *gui.Node
- // var logSettings *gadgets.LogSettings
-
- // time.Sleep(1 * time.Second)
- newW = n.NewWindow(title)
-
- newB = newW.NewBox("hBox", true)
+func DebugWindow2(newB *gui.Node, title string) *gui.Node {
+ var gr *gui.Node
//////////////////////// main debug things //////////////////////////////////
gr = newB.NewGroup("Debugging Windows:")
gr.NewButton("logging", func () {
- myLS.Show()
+ me.myLS.Toggle()
})
- gr.NewButton("Debug Widgets", func () {
- DebugWidgetWindow(myGui)
+ gr.NewButton("Widgets Window", func () {
+ if me.widgets == nil {
+ me.widgets = DebugWidgetWindow(me.myGui)
+ me.widgets.Draw()
+ return
+ }
+ me.widgets.Toggle()
})
gr.NewLabel("Force Quit:")
@@ -98,10 +104,24 @@ func DebugWindow2(n *gui.Node, title string) *gui.Node {
gr = newB.NewGroup("Learn GO")
gr.NewButton("GO Language Internals", func () {
- DebugGolangWindow(myGui)
+ if me.golang == nil {
+ me.golang = DebugGolangWindow(me.myGui)
+ me.golang.Draw()
+ return
+ }
+ if me.golang.Ready() {
+ me.golang.Toggle()
+ }
})
gr.NewButton("GO Channels debug", func () {
- DebugGoChannels(myGui)
+ if me.gochan == nil {
+ me.gochan = DebugGoChannels(me.myGui)
+ me.gochan.Draw()
+ return
+ }
+ if me.gochan.Ready() {
+ me.gochan.Toggle()
+ }
})
return newB
@@ -169,4 +189,5 @@ func dropdownWindowWidgets(p *gui.Node) {
}
func setActiveWidget(w *gui.Node) {
+ log.Warn("TODO: setActiveWidget()")
}
diff --git a/structs.go b/structs.go
index 8d4e9f9..8997887 100644
--- a/structs.go
+++ b/structs.go
@@ -2,17 +2,35 @@ package debugger
import (
"go.wit.com/gui/gui"
+ "go.wit.com/gui/gadgets"
"go.wit.com/gui/gadgets/logsettings"
)
-// main debugging window
-var myGui *gui.Node
-var bugWin *gui.Node
-var bugTab *gui.Node
+var me *debuggerSettings
+
+type debuggerSettings struct {
+ ready bool
+ hidden bool
+ err error
+
+ myGui *gui.Node
-var myLS *logsettings.LogSettings
+ bugWin *gadgets.BasicWindow
+ widgets *gadgets.BasicWindow
+ golang *gadgets.BasicWindow
+ gochan *gadgets.BasicWindow
-var mapWindows map[string]*gui.Node // tracks all windows that exist
+ myLS *logsettings.LogSettings
+
+ mapWindows map[string]*gui.Node // tracks all windows that exist
+}
+
+var bugWin *gui.Node
+/*
+// main debugging window
+var bugTab *gui.Node
+var myGui *gui.Node
+*/
// global var for checking to see if this
// window/tab for debugging a widget exists
diff --git a/debugWidget.go b/widget.go
index c6c953c..3f459a8 100644
--- a/debugWidget.go
+++ b/widget.go
@@ -6,6 +6,7 @@ import (
"go.wit.com/log"
"go.wit.com/gui/gui"
+ "go.wit.com/gui/gadgets"
)
@@ -29,20 +30,11 @@ func setActiveWidget(w *gui.Node) {
}
*/
-func DebugWidgetWindow(w *gui.Node) {
- var newW, newB *gui.Node
- if (bugWidget != nil) {
- // this window was already created. Just change the widget we are working against
- setActiveWidget(w)
- return
- }
+func DebugWidgetWindow(p *gui.Node) *gadgets.BasicWindow {
+ var w *gadgets.BasicWindow
+ w = gadgets.NewBasicWindow(p, "Widgets")
- newW = w.NewWindow("Widgets")
- newW.Custom = newW.StandardClose
- bugWidget = newW
- newB = newW.NewBox("hBox", true)
-
- g := newB.NewGroup("widget:")
+ g := w.Box().NewGroup("widget:").Pad()
g2 := g.NewGroup("widget:")
activeLabel = g2.NewLabel("undef")
@@ -67,7 +59,7 @@ func DebugWidgetWindow(w *gui.Node) {
// common things that should work against each widget
- g = newB.NewGroup("common things")
+ g = w.Box().NewGroup("common things")
g.NewButton("Enable()", func () {
activeWidget.Enable()
})
@@ -84,12 +76,12 @@ func DebugWidgetWindow(w *gui.Node) {
activeWidget.Dump()
})
- g = newB.NewGroup("add things")
+ g = w.Box().NewGroup("add things")
debugAddWidgetButton(g)
g.NewLabel("experiments:")
debugAddWidgetButtons(g)
- g = newB.NewGroup("change things")
+ g = w.Box().NewGroup("change things")
g.NewButton("AddText()", func () {
activeWidget.AddText(activeLabelNewName.S)
/*
@@ -129,13 +121,15 @@ func DebugWidgetWindow(w *gui.Node) {
activeWidget.Delete(activeWidget)
})
- g = newB.NewGroup("not working?")
- activeJunk = newB.NewGroup("junk:")
+ g = w.Box().NewGroup("not working?")
+ activeJunk = w.Box().NewGroup("junk:")
activeJunk.NewLabel("test junk")
if (activeWidget == nil) {
- setActiveWidget(myGui)
+ setActiveWidget(me.myGui)
}
+
+ return w
}
func debugAddWidgetButtons(n *gui.Node) {