summaryrefslogtreecommitdiff
path: root/debugWidget.go
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2023-03-03 14:41:38 -0600
committerJeff Carr <[email protected]>2023-03-03 14:41:38 -0600
commit49202eeafdad8e5780fefdad3d2f87fd4354725e (patch)
tree5d749b5d4835c7a0395bd1f87b5d2d1d91b14a08 /debugWidget.go
parent80317ec89c94beadcbf3775f84c6010b5ceef302 (diff)
release as v0.6.5v0.6.5
good standard release really clean interaction to plugin really clean debug flags implementation common doAppend() idea, but it probably won't work re-implement combobox. this code base almost doesn't suck slider & spinner set values now tab set margin works convert dropdown to Send() lots of other changes to try to implement single line Entry() I guess use golang file names even though internalally the go developers use underscore chars in the actual go sources. Maybe there is a reason for that? go channel debug window does something make a debug window for channels. add sample icons Signed-off-by: Jeff Carr <[email protected]>
Diffstat (limited to 'debugWidget.go')
-rw-r--r--debugWidget.go180
1 files changed, 180 insertions, 0 deletions
diff --git a/debugWidget.go b/debugWidget.go
new file mode 100644
index 0000000..d76b554
--- /dev/null
+++ b/debugWidget.go
@@ -0,0 +1,180 @@
+package gui
+
+import (
+ "strconv"
+)
+
+var debugGrid *Node
+
+func (n *Node) debugWidgets(makeWindow bool) {
+ var w, gList, gShow *Node
+
+ // Either:
+ // make a new window
+ // make a new tab in the existing window
+ if (makeWindow) {
+ Config.Title = "Debug Widgets"
+ Config.Width = 300
+ Config.Height = 400
+ w = NewWindow()
+ w.Custom = w.StandardClose
+ } else {
+ w = n.NewTab("Widgets")
+ }
+ w.Dump()
+
+ gList = w.NewGroup("Pick a widget to debug")
+ gShow = w.NewGroup("Added Widgets go here")
+
+ gList.NewButton("Button", func () {
+ SetDebug(true)
+ a := gShow.NewButton("myButton", func () {
+ log("this code is more better")
+ })
+ SetDebug(false)
+ DebugWidgetWindow(a)
+ })
+ gList.NewButton("Checkbox", func () {
+ a := gShow.NewCheckbox("myCheckbox")
+ a.Custom = func () {
+ log("custom checkox func a =", a.widget.B, a.id)
+ }
+ DebugWidgetWindow(a)
+ })
+ gList.NewButton("Label", func () {
+ a := gShow.NewLabel("mylabel")
+ DebugWidgetWindow(a)
+ })
+ gList.NewButton("Textbox", func () {
+ a := gShow.NewTextbox("mytext")
+ a.Custom = func () {
+ log("custom TextBox() a =", a.widget.S, a.id)
+ }
+ DebugWidgetWindow(a)
+ })
+ gList.NewButton("Slider", func () {
+ a := gShow.NewSlider("tmp slider", 10, 55)
+ a.Custom = func () {
+ log("custom slider() a =", a.widget.I, a.id)
+ }
+ DebugWidgetWindow(a)
+ })
+ gList.NewButton("Spinner", func () {
+ a := gShow.NewSpinner("tmp spinner", 6, 32)
+ a.Custom = func () {
+ log("custom spinner() a =", a.widget.I, a.id)
+ }
+ DebugWidgetWindow(a)
+ })
+ gList.NewButton("Dropdown", func () {
+ a := gShow.NewDropdown("tmp dropdown")
+ a.AddDropdownName("this is better than tcl/tk")
+ a.AddDropdownName("make something for tim")
+ a.AddDropdownName("for qflow")
+ a.Add("and for riscv")
+ a.Custom = func () {
+ log("custom dropdown() a =", a.widget.Name, a.widget.S)
+ }
+ DebugWidgetWindow(a)
+ })
+ gList.NewButton("Combobox", func () {
+ a := gShow.NewCombobox("tmp combobox")
+ a.Add("mirrors.wit.com")
+ a.Add("go.wit.org")
+ a.Custom = func () {
+ log("custom combobox() a =", a.widget.Name, a.widget.S)
+ }
+ DebugWidgetWindow(a)
+ })
+ gList.NewButton("Grid", func () {
+ // Grid numbering by (X,Y)
+ // -----------------------------
+ // -- (1,1) -- (2,1) -- (3,1) --
+ // -- (1,2) -- (2,1) -- (3,1) --
+ // -----------------------------
+ SetDebug(true)
+ debugGrid = gShow.NewGrid("tmp grid", 2, 3)
+ debugGrid.NewLabel("mirrors.wit.com")
+ SetDebug(false)
+ DebugWidgetWindow(debugGrid)
+ })
+ gList.NewButton("Image", func () {
+ a := gShow.NewTextbox("image")
+ DebugWidgetWindow(a)
+ })
+}
+
+func DebugWidgetWindow(w *Node) {
+ var win, g *Node
+
+ title := "ID =" + strconv.Itoa(w.id) + " " + w.widget.Name
+
+ Config.Title = title
+ Config.Width = 300
+ Config.Height = 400
+ win = NewWindow()
+ win.Custom = w.StandardClose
+
+ g = win.NewGroup("Actions")
+
+ g.NewLabel(title)
+ g.NewButton("Dump()", func () {
+ w.Dump()
+ })
+ g.NewButton("Disable()", func () {
+ w.widget.Action = "Disable"
+ send(w.parent, w)
+ })
+ g.NewButton("Enable()", func () {
+ w.widget.Action = "Enable"
+ send(w.parent, w)
+ })
+ g.NewButton("Show()", func () {
+ w.widget.Action = "Show"
+ send(w.parent, w)
+ })
+ g.NewButton("Hide()", func () {
+ w.widget.Action = "Hide"
+ send(w.parent, w)
+ })
+ g.NewButton("Value()", func () {
+ log("w.B =", w.widget.B)
+ log("w.I =", w.widget.I)
+ log("w.S =", w.widget.S)
+ })
+ g.NewButton("Set Value(20)", func () {
+ w.widget.Action = "Set"
+ w.widget.B = true
+ w.widget.I = 20
+ w.widget.S = "Set Value(20)"
+ send(w.parent, w)
+ })
+ g.NewButton("Add('foo')", func () {
+ w.widget.Action = "Add"
+ w.widget.S = "foo"
+ send(w.parent, w)
+ })
+ g.NewButton("Delete('foo')", func () {
+ w.widget.Action = "Delete"
+ w.widget.S = "foo"
+ send(w.parent, w)
+ })
+ g.NewButton("SetMargin(true)", func () {
+ w.widget.Action = "SetMargin"
+ w.widget.B = true
+ send(w.parent, w)
+ })
+ g.NewButton("SetMargin(false)", func () {
+ w.widget.Action = "SetMargin"
+ w.widget.B = false
+ send(w.parent, w)
+ })
+ g.NewButton("Add button to (1,1)", func () {
+ w.widget.Action = "AddGrid"
+ w.widget.B = false
+ send(w.parent, w)
+ })
+ g.NewButton("Delete()", func () {
+ Delete(w)
+ })
+}