summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2024-01-03 12:33:25 -0600
committerJeff Carr <[email protected]>2024-01-03 12:33:25 -0600
commit144c12a2cf59b0a4b4d4a480b962d12fb9525afb (patch)
tree26661401152c8352dc5c887bce285a2cf3d4928e
parentbd33b5649eb1518176617ee2e116f9e596f03289 (diff)
move over widget window
Signed-off-by: Jeff Carr <[email protected]>
-rw-r--r--debugWidget.go281
-rw-r--r--mainWindow.go2
2 files changed, 282 insertions, 1 deletions
diff --git a/debugWidget.go b/debugWidget.go
new file mode 100644
index 0000000..c6c953c
--- /dev/null
+++ b/debugWidget.go
@@ -0,0 +1,281 @@
+package debugger
+
+import (
+ "strconv"
+ "errors"
+
+ "go.wit.com/log"
+ "go.wit.com/gui/gui"
+)
+
+
+/*
+func setActiveWidget(w *gui.Node) {
+ if (w == nil) {
+ log.Log(debugError, "setActiveWidget() was sent nil !!!")
+ return
+ }
+ activeWidget = w
+ log.Log(true, "The Widget is set to", w.id, w.Name)
+ if (activeLabel == nil) {
+ // the debug window doesn't exist yet so you can't display the change
+ // TODO: make a fake binary tree for this(?)
+ return
+ }
+ title := "ID =" + strconv.Itoa(w.id) + " " + w.Name
+ activeLabel.SetText(title)
+ activeLabelType.SetText("widget.Type = " + w.WidgetType.String())
+ return
+}
+*/
+
+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
+ }
+
+ newW = w.NewWindow("Widgets")
+ newW.Custom = newW.StandardClose
+ bugWidget = newW
+ newB = newW.NewBox("hBox", true)
+
+ g := newB.NewGroup("widget:")
+
+ g2 := g.NewGroup("widget:")
+ activeLabel = g2.NewLabel("undef")
+ g2 = g.NewGroup("type:")
+ activeLabelType = g2.NewLabel("undef")
+ g2 = g.NewGroup("New name:")
+ activeLabelNewName = g2.NewCombobox("newthing")
+ activeLabelNewName.AddText("penguin")
+ activeLabelNewName.AddText("snow")
+ activeLabelNewName.AddText("GO")
+ activeLabelNewName.AddText("debian")
+ activeLabelNewName.AddText("RiscV")
+
+ g2 = g.NewGroup("At X:")
+ activeLabelNewX = g2.NewSpinner("tmp spinner", -1, 100)
+
+ g2 = g.NewGroup("At Y:")
+ activeLabelNewY = g2.NewSpinner("tmp spinner", -1, 100)
+
+ g2 = g.NewGroup("bool B:")
+ activeLabelNewB = g2.NewCheckbox("tmp bool")
+
+
+ // common things that should work against each widget
+ g = newB.NewGroup("common things")
+ g.NewButton("Enable()", func () {
+ activeWidget.Enable()
+ })
+ g.NewButton("Disable()", func () {
+ activeWidget.Disable()
+ })
+ g.NewButton("Show()", func () {
+ activeWidget.Show()
+ })
+ g.NewButton("Hide()", func () {
+ activeWidget.Hide()
+ })
+ g.NewButton("Dump()", func () {
+ activeWidget.Dump()
+ })
+
+ g = newB.NewGroup("add things")
+ debugAddWidgetButton(g)
+ g.NewLabel("experiments:")
+ debugAddWidgetButtons(g)
+
+ g = newB.NewGroup("change things")
+ g.NewButton("AddText()", func () {
+ activeWidget.AddText(activeLabelNewName.S)
+ /*
+ activeWidget.S = activeLabelNewName.S
+ a := newAction(activeWidget, toolkit.AddText)
+ sendAction(a)
+ */
+ })
+ g.NewButton("SetText()", func () {
+ activeWidget.SetText(activeLabelNewName.S)
+ /*
+ activeWidget.S = activeLabelNewName.S
+ a := newAction(activeWidget, toolkit.SetText)
+ sendAction(a)
+ */
+ })
+ g.NewButton("Margin()", func () {
+ activeWidget.Margin()
+ /*
+ a := newAction(activeWidget, toolkit.Margin)
+ sendAction(a)
+ */
+ })
+ g.NewButton("Unmargin()", func () {
+ activeWidget.Unmargin()
+ })
+ g.NewButton("Pad()", func () {
+ activeWidget.Pad()
+ })
+ g.NewButton("Unpad()", func () {
+ activeWidget.Unpad()
+ })
+ g.NewButton("Move(junk)", func () {
+ log.Warn("gui.Node Move() not implemented yet")
+ })
+ g.NewButton("Delete()", func () {
+ activeWidget.Delete(activeWidget)
+ })
+
+ g = newB.NewGroup("not working?")
+ activeJunk = newB.NewGroup("junk:")
+ activeJunk.NewLabel("test junk")
+
+ if (activeWidget == nil) {
+ setActiveWidget(myGui)
+ }
+}
+
+func debugAddWidgetButtons(n *gui.Node) {
+ n.NewButton("Dropdown", func () {
+ a := activeWidget.NewDropdown("tmp dropdown")
+ a.AddText("this is better than tcl/tk")
+ a.AddText("make something for tim for qflow")
+ a.AddText("and for riscv")
+ a.Custom = func () {
+ log.Log(true, "custom dropdown() a =", a.Name, a.S)
+ }
+ })
+ n.NewButton("Combobox", func () {
+ a := activeWidget.NewCombobox("tmp combobox")
+ a.AddText("mirrors.wit.com")
+ a.AddText("go.wit.com")
+ a.Custom = func () {
+ log.Log(true, "custom combobox() a =", a.Name, a.S)
+ }
+ })
+ n.NewButton("Grid", func () {
+ // Grid numbering by (X,Y)
+ // -----------------------------
+ // -- (1,1) -- (2,1) -- (3,1) --
+ // -- (1,2) -- (2,1) -- (3,1) --
+ // -----------------------------
+
+ // SetDebug(true)
+ debugGrid = activeWidget.NewGrid("tmp grid", 2, 3)
+ debugGridLabel = debugGrid.NewLabel("mirrors.wit.com")
+ /*
+ debugGrid.SetNext(0,1)
+ debugGrid.NewLabel("foo (0,1)")
+ debugGrid.SetNext(1,1)
+ debugGrid.NewLabel("foo (1,1)")
+ debugGrid.SetNext(2,1)
+ debugGrid.NewLabel("foo (2,1)")
+ */
+ // SetDebug(false)
+ DebugWidgetWindow(debugGrid)
+ })
+ n.NewButton("Image", func () {
+ activeWidget.NewImage("image")
+ })
+ n.NewButton("Box(horizontal)", func () {
+ a := activeWidget.NewBox("hBox", true)
+ a.NewLabel("hBox")
+ a.NewLabel("hBox 2")
+ })
+ n.NewButton("Box(vertical)", func () {
+ a := activeWidget.NewBox("vBox", false)
+ a.NewLabel("vBox")
+ a.NewLabel("vBox 2")
+ })
+}
+
+func debugAddWidgetButton(n *gui.Node) {
+ activeLabelNewType = n.NewDropdown("tmp dropdown")
+ activeLabelNewType.AddText("Window")
+ activeLabelNewType.AddText("Tab")
+ activeLabelNewType.AddText("Frame")
+ activeLabelNewType.AddText("Grid")
+ activeLabelNewType.AddText("Group")
+ activeLabelNewType.AddText("Box")
+ activeLabelNewType.AddText("Button")
+ activeLabelNewType.AddText("Checkbox")
+ activeLabelNewType.AddText("Dropdown")
+ activeLabelNewType.AddText("Combobox")
+ activeLabelNewType.AddText("Label")
+ activeLabelNewType.AddText("Textbox")
+ activeLabelNewType.AddText("Slider")
+ activeLabelNewType.AddText("Spinner")
+ activeLabelNewType.AddText("Image")
+ activeLabelNewType.AddText("Area")
+ activeLabelNewType.AddText("Form")
+ activeLabelNewType.AddText("Font")
+ activeLabelNewType.AddText("Color")
+ activeLabelNewType.AddText("Dialog")
+
+ n.NewButton("Add", func () {
+ name := activeLabelNewName.S
+ newX := activeLabelNewX.I
+ newY := activeLabelNewY.I
+ newB := activeLabelNewB.B
+
+ if (newY == -1) {
+ name = name + " (" + strconv.Itoa(activeWidget.NextW) + "," + strconv.Itoa(activeWidget.NextH) + ")"
+ } else {
+ activeWidget.SetNext(newX, newY)
+ name = name + " (" + strconv.Itoa(newX) + "," + strconv.Itoa(newY) + ")"
+ }
+ log.Log(true, "New Name =", name)
+ log.Log(true, "New Type =", activeLabelNewType.S)
+ log.Log(true, "New X =", newX)
+ log.Log(true, "New Y =", newY)
+ log.Log(true, "activeWidget.NextW =", activeWidget.NextW)
+ log.Log(true, "activeWidget.NextH =", activeWidget.NextH)
+ log.Log(true, "Add() size (X,Y)", activeWidget.X, activeWidget.Y, "put next thing at (W,H) =", activeWidget.NextW, activeWidget.NextH)
+ activeWidget.Dump()
+
+ // activeWidget.X = newX
+ // activeWidget.Y = newY
+
+ switch activeLabelNewType.S {
+ case "Grid":
+ activeWidget.NewGrid(name, newX, newY)
+ case "Group":
+ activeWidget.NewGroup(name)
+ case "Box":
+ activeWidget.NewBox(name, newB)
+ case "Button":
+ activeWidget.NewButton(name, func () {
+ log.Log(true, "got to button", name)
+ })
+ case "Checkbox":
+ a := activeWidget.NewCheckbox(name)
+ a.Custom = func () {
+ log.Log(true, "custom checkox func a=", a.B)
+ }
+ case "Dropdown":
+ a := activeWidget.NewDropdown(name)
+ a.AddText(name + " yay")
+ a.AddText(name + " haha")
+ a.Custom = func () {
+ log.Log(true, "WTF a=", a.B)
+ }
+ case "Combobox":
+ a := activeWidget.NewCombobox(name)
+ a.AddText(name + " foo")
+ a.AddText(name + " bar")
+ case "Label":
+ activeWidget.NewLabel(name)
+ case "Textbox":
+ activeWidget.NewTextbox(name)
+ case "Slider":
+ activeWidget.NewSlider(name, newX, newY)
+ case "Spinner":
+ activeWidget.NewSpinner(name, newX, newY)
+ default:
+ log.Error(errors.New("make what type?"), activeLabelNewType.S)
+ }
+ })
+}
diff --git a/mainWindow.go b/mainWindow.go
index d7d18f9..00538d7 100644
--- a/mainWindow.go
+++ b/mainWindow.go
@@ -47,7 +47,7 @@ func DebugWindow2(n *gui.Node, title string) *gui.Node {
DebugFlags(myGui)
})
gog.NewButton("Debug Widgets", func () {
- gui.DebugWidgetWindow(myGui)
+ DebugWidgetWindow(myGui)
})
gog.NewButton("GO Language Internals", func () {
DebugGolangWindow(bugWin)