2021-10-05 05:52:50 -05:00
|
|
|
package gui
|
|
|
|
|
2021-10-06 11:17:43 -05:00
|
|
|
import (
|
|
|
|
"log"
|
2022-10-19 13:23:22 -05:00
|
|
|
// "time"
|
|
|
|
// "os"
|
2021-10-05 05:52:50 -05:00
|
|
|
|
2021-10-06 11:17:43 -05:00
|
|
|
"github.com/andlabs/ui"
|
|
|
|
_ "github.com/andlabs/ui/winmanifest"
|
2022-10-11 11:25:46 -05:00
|
|
|
"github.com/davecgh/go-spew/spew"
|
2021-10-06 11:17:43 -05:00
|
|
|
)
|
2021-10-05 06:25:32 -05:00
|
|
|
|
2021-10-05 05:52:50 -05:00
|
|
|
var names = make([]string, 100)
|
2021-10-31 14:21:36 -05:00
|
|
|
var nodeNames = make([]string, 100)
|
2021-10-05 05:52:50 -05:00
|
|
|
|
2022-10-19 13:23:22 -05:00
|
|
|
var bugWin *Node
|
|
|
|
/*
|
|
|
|
Creates a window helpful for debugging this package
|
|
|
|
*/
|
2021-10-31 14:21:36 -05:00
|
|
|
func DebugWindow() {
|
2022-10-19 13:23:22 -05:00
|
|
|
Config.Title = "git.wit.org/wit/gui debug fixme"
|
|
|
|
Config.Width = 300
|
|
|
|
Config.Height = 200
|
2022-10-17 11:56:43 -05:00
|
|
|
Config.Exit = StandardClose
|
2022-10-19 13:23:22 -05:00
|
|
|
bugWin = NewWindow()
|
|
|
|
bugWin.DebugTab("does this also work?")
|
|
|
|
// node.DebugTab("WIT GUI Debug Tab")
|
2021-10-31 14:21:36 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
// TODO: remove this crap
|
|
|
|
// What does this actually do?
|
|
|
|
// It populates the nodeNames in a map. No, not a map, an array.
|
|
|
|
// What is the difference again? (other than one being in order and a predefined length)
|
2022-10-19 13:23:22 -05:00
|
|
|
func addNodeNameBAD(c *ui.Combobox, s string, id string) {
|
2021-10-31 14:21:36 -05:00
|
|
|
c.Append(s)
|
2022-10-19 13:23:22 -05:00
|
|
|
// nodeNames[y] = id
|
|
|
|
// y = y + 1
|
|
|
|
log.Println("addNodeName:", s)
|
|
|
|
// time.Sleep(1 * time.Second)
|
|
|
|
// os.Exit(0)
|
2021-10-31 14:21:36 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
func makeWindowDebug() *ui.Box {
|
2021-10-05 05:52:50 -05:00
|
|
|
hbox := ui.NewHorizontalBox()
|
|
|
|
hbox.SetPadded(true)
|
|
|
|
|
2022-10-11 11:25:46 -05:00
|
|
|
/////////////////////////////////////////////////////
|
|
|
|
vbox := addGroup(hbox, "range Data.WindowMap")
|
|
|
|
cbox := ui.NewCombobox()
|
|
|
|
|
|
|
|
for name, _ := range Data.WindowMap {
|
|
|
|
if (Config.Debug) {
|
|
|
|
log.Println("range Data.WindowMap() name =", name)
|
|
|
|
}
|
2022-10-19 13:23:22 -05:00
|
|
|
addNameBAD(cbox, name)
|
2022-10-11 11:25:46 -05:00
|
|
|
}
|
|
|
|
cbox.SetSelected(0)
|
|
|
|
|
|
|
|
vbox.Append(cbox, false)
|
|
|
|
|
|
|
|
cbox.OnSelected(func(*ui.Combobox) {
|
|
|
|
x := cbox.Selected()
|
|
|
|
log.Println("x =", x)
|
|
|
|
log.Println("names[x] =", names[x])
|
|
|
|
dumpBox(names[x])
|
|
|
|
})
|
|
|
|
|
|
|
|
/////////////////////////////////////////////////////
|
|
|
|
vbox = addGroup(hbox, "Debug Window")
|
|
|
|
|
|
|
|
b1 := addButton(vbox, "dumpBox(window)")
|
|
|
|
b1.OnClicked(func(*ui.Button) {
|
|
|
|
x := cbox.Selected()
|
|
|
|
log.Println("x =", x)
|
|
|
|
log.Println("names[x] =", names[x])
|
|
|
|
dumpBox(names[x])
|
|
|
|
})
|
|
|
|
|
|
|
|
b2 := addButton(vbox, "SetMargined(tab)")
|
|
|
|
b2.OnClicked(func(*ui.Button) {
|
|
|
|
x := cbox.Selected()
|
|
|
|
log.Println("x =", x)
|
|
|
|
log.Println("FindWindow; names[x] =", names[x])
|
|
|
|
gw := FindWindow(names[x])
|
|
|
|
if gw == nil {
|
|
|
|
return
|
|
|
|
}
|
|
|
|
if gw.UiTab == nil {
|
|
|
|
return
|
|
|
|
}
|
|
|
|
if gw.TabNumber == nil {
|
|
|
|
return
|
|
|
|
}
|
|
|
|
scs := spew.ConfigState{MaxDepth: 1}
|
|
|
|
scs.Dump(gw)
|
2022-10-19 13:23:22 -05:00
|
|
|
log.Println("gui.dumpBoxes()\tWindow.UiTab =", gw.UiTab)
|
|
|
|
log.Println("gui.dumpBoxes()\tWindow.TabNumber =", *gw.TabNumber)
|
2022-10-11 11:25:46 -05:00
|
|
|
gw.UiTab.SetMargined(*gw.TabNumber, true)
|
|
|
|
})
|
|
|
|
|
|
|
|
b3 := addButton(vbox, "Hide(tab)")
|
|
|
|
b3.OnClicked(func(*ui.Button) {
|
|
|
|
x := cbox.Selected()
|
|
|
|
log.Println("x =", x)
|
|
|
|
log.Println("FindWindow; names[x] =", names[x])
|
|
|
|
gw := FindWindow(names[x])
|
|
|
|
if gw == nil {
|
|
|
|
return
|
|
|
|
}
|
|
|
|
if gw.UiTab == nil {
|
|
|
|
return
|
|
|
|
}
|
|
|
|
gw.UiTab.Hide()
|
|
|
|
})
|
|
|
|
|
|
|
|
b4 := addButton(vbox, "Show(tab)")
|
|
|
|
b4.OnClicked(func(*ui.Button) {
|
|
|
|
x := cbox.Selected()
|
|
|
|
log.Println("x =", x)
|
|
|
|
log.Println("FindWindow; names[x] =", names[x])
|
|
|
|
gw := FindWindow(names[x])
|
|
|
|
if gw == nil {
|
|
|
|
return
|
|
|
|
}
|
|
|
|
if gw.UiTab == nil {
|
|
|
|
return
|
|
|
|
}
|
|
|
|
gw.UiTab.Show()
|
|
|
|
})
|
|
|
|
|
|
|
|
b5 := addButton(vbox, "Delete(tab)")
|
|
|
|
b5.OnClicked(func(*ui.Button) {
|
|
|
|
x := cbox.Selected()
|
|
|
|
log.Println("x =", x)
|
|
|
|
log.Println("FindWindow; names[x] =", names[x])
|
|
|
|
gw := FindWindow(names[x])
|
|
|
|
if gw == nil {
|
|
|
|
return
|
|
|
|
}
|
|
|
|
if gw.UiTab == nil {
|
|
|
|
return
|
|
|
|
}
|
|
|
|
if gw.TabNumber == nil {
|
|
|
|
return
|
|
|
|
}
|
|
|
|
gw.UiTab.Delete(*gw.TabNumber)
|
|
|
|
})
|
|
|
|
|
|
|
|
/////////////////////////////////////////////////////
|
|
|
|
vbox = addGroup(hbox, "Global Debug")
|
|
|
|
|
|
|
|
dump3 := addButton(vbox, "Dump Windows")
|
|
|
|
dump3.OnClicked(func(*ui.Button) {
|
2022-10-19 13:23:22 -05:00
|
|
|
dumpWindows()
|
2022-10-11 11:25:46 -05:00
|
|
|
})
|
|
|
|
|
|
|
|
dump2 := addButton(vbox, "Dump Boxes")
|
|
|
|
dump2.OnClicked(func(*ui.Button) {
|
2022-10-19 13:23:22 -05:00
|
|
|
dumpBoxes()
|
2022-10-11 11:25:46 -05:00
|
|
|
})
|
|
|
|
|
|
|
|
dump1 := addButton(vbox, "Dump MAP")
|
|
|
|
dump1.OnClicked(func(*ui.Button) {
|
2022-10-19 13:23:22 -05:00
|
|
|
dumpMap()
|
2022-10-11 11:25:46 -05:00
|
|
|
})
|
|
|
|
|
2021-10-31 14:21:36 -05:00
|
|
|
/////////////////////////////////////////////////////
|
|
|
|
nodeBox := addGroup(hbox, "Windows:")
|
|
|
|
nodeCombo := ui.NewCombobox()
|
|
|
|
|
|
|
|
for name, node := range Data.NodeMap {
|
2022-10-19 13:23:22 -05:00
|
|
|
// if (Config.Debug) {
|
2021-10-31 14:21:36 -05:00
|
|
|
log.Println("range Data.NodeMap() name =", name)
|
2022-10-19 13:23:22 -05:00
|
|
|
// }
|
2021-10-31 14:21:36 -05:00
|
|
|
tmp := node.id + " (" + name + ")"
|
2022-10-19 13:23:22 -05:00
|
|
|
addNodeNameBAD(nodeCombo, tmp, node.id)
|
2021-10-31 14:21:36 -05:00
|
|
|
}
|
2022-10-19 13:23:22 -05:00
|
|
|
// scs := spew.ConfigState{MaxDepth: 1}
|
|
|
|
// scs.Dump(Data.NodeMap)
|
|
|
|
// os.Exit(0)
|
2021-10-31 14:21:36 -05:00
|
|
|
nodeCombo.SetSelected(0)
|
|
|
|
|
2022-10-11 11:25:46 -05:00
|
|
|
nodeBox.Append(nodeCombo, false)
|
2021-10-31 14:21:36 -05:00
|
|
|
|
|
|
|
nodeCombo.OnSelected(func(*ui.Combobox) {
|
|
|
|
y := nodeCombo.Selected()
|
|
|
|
log.Println("y =", y)
|
|
|
|
log.Println("nodeNames[y] =", nodeNames[y])
|
|
|
|
node := Data.findId(nodeNames[y])
|
|
|
|
if (node != nil) {
|
|
|
|
node.Dump()
|
|
|
|
}
|
|
|
|
})
|
|
|
|
|
|
|
|
/////////////////////////////////////////////////////
|
2022-10-11 11:25:46 -05:00
|
|
|
vbox = addGroup(hbox, "Node Debug")
|
2021-10-31 14:21:36 -05:00
|
|
|
|
|
|
|
n1 := addButton(vbox, "Data.DumpNodeMap()")
|
|
|
|
n1.OnClicked(func(*ui.Button) {
|
|
|
|
Data.DumpNodeMap()
|
|
|
|
})
|
|
|
|
|
|
|
|
n1 = addButton(vbox, "Data.ListChildren(false)")
|
|
|
|
n1.OnClicked(func(*ui.Button) {
|
|
|
|
Data.ListChildren(false)
|
|
|
|
})
|
|
|
|
|
|
|
|
n1 = addButton(vbox, "Data.ListChildren(true)")
|
|
|
|
n1.OnClicked(func(*ui.Button) {
|
|
|
|
Data.ListChildren(true)
|
|
|
|
})
|
|
|
|
|
|
|
|
n1 = addButton(vbox, "Node.Dump()")
|
|
|
|
n1.OnClicked(func(*ui.Button) {
|
|
|
|
y := nodeCombo.Selected()
|
|
|
|
log.Println("y =", y)
|
|
|
|
log.Println("nodeNames[y] =", nodeNames[y])
|
|
|
|
node := Data.findId(nodeNames[y])
|
|
|
|
if (node != nil) {
|
|
|
|
node.Dump()
|
|
|
|
}
|
|
|
|
})
|
|
|
|
|
|
|
|
n1 = addButton(vbox, "Node.ListChildren(false)")
|
|
|
|
n1.OnClicked(func(*ui.Button) {
|
|
|
|
y := nodeCombo.Selected()
|
|
|
|
log.Println("y =", y)
|
|
|
|
log.Println("nodeNames[y] =", nodeNames[y])
|
|
|
|
node := Data.findId(nodeNames[y])
|
|
|
|
if (node != nil) {
|
|
|
|
node.ListChildren(false)
|
|
|
|
}
|
|
|
|
})
|
|
|
|
|
|
|
|
n1 = addButton(vbox, "Node.ListChildren(true)")
|
|
|
|
n1.OnClicked(func(*ui.Button) {
|
|
|
|
y := nodeCombo.Selected()
|
|
|
|
log.Println("y =", y)
|
|
|
|
log.Println("nodeNames[y] =", nodeNames[y])
|
|
|
|
node := Data.findId(nodeNames[y])
|
|
|
|
if (node != nil) {
|
|
|
|
node.ListChildren(true)
|
|
|
|
}
|
|
|
|
})
|
|
|
|
|
|
|
|
n1 = addButton(vbox, "Node.AddDebugTab")
|
|
|
|
n1.OnClicked(func(*ui.Button) {
|
|
|
|
y := nodeCombo.Selected()
|
|
|
|
log.Println("y =", y)
|
|
|
|
log.Println("nodeNames[y] =", nodeNames[y])
|
|
|
|
node := Data.findId(nodeNames[y])
|
|
|
|
if (node != nil) {
|
|
|
|
node.DebugTab("added this DebugTab")
|
|
|
|
}
|
|
|
|
})
|
|
|
|
|
2021-10-05 05:52:50 -05:00
|
|
|
return hbox
|
|
|
|
}
|
|
|
|
|
2021-10-31 14:21:36 -05:00
|
|
|
// TODO: remove this crap
|
2022-10-19 13:23:22 -05:00
|
|
|
// var x int = 0
|
|
|
|
// var y int = 0
|
2021-10-05 05:52:50 -05:00
|
|
|
|
2021-10-31 14:21:36 -05:00
|
|
|
// TODO: remove this crap
|
2022-10-19 13:23:22 -05:00
|
|
|
func addNameBAD(c *ui.Combobox, s string) {
|
2021-10-05 05:52:50 -05:00
|
|
|
c.Append(s)
|
2022-10-19 13:23:22 -05:00
|
|
|
// names[x] = s
|
|
|
|
// x = x + 1
|
|
|
|
log.Println("addName:", s)
|
|
|
|
// time.Sleep(1 * time.Second)
|
|
|
|
// os.Exit(0)
|
2021-10-05 05:52:50 -05:00
|
|
|
}
|
2021-10-05 06:25:32 -05:00
|
|
|
|
2021-10-05 06:46:46 -05:00
|
|
|
func addGroup(b *ui.Box, name string) *ui.Box {
|
2021-10-05 06:25:32 -05:00
|
|
|
group := ui.NewGroup(name)
|
|
|
|
group.SetMargined(true)
|
2022-10-11 11:25:46 -05:00
|
|
|
b.Append(group, true)
|
2021-10-05 06:25:32 -05:00
|
|
|
|
|
|
|
vbox := ui.NewVerticalBox()
|
|
|
|
vbox.SetPadded(true)
|
|
|
|
group.SetChild(vbox)
|
|
|
|
|
|
|
|
return vbox
|
|
|
|
}
|
|
|
|
|
2022-10-11 11:25:46 -05:00
|
|
|
func dumpBox(s string) {
|
|
|
|
var name string
|
|
|
|
var window *GuiWindow
|
|
|
|
|
|
|
|
for name, window = range Data.WindowMap {
|
|
|
|
if name != s {
|
|
|
|
continue
|
|
|
|
}
|
|
|
|
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)
|
|
|
|
log.Println("gui.dumpBox() BoxMap START")
|
|
|
|
for name, abox := range window.BoxMap {
|
|
|
|
log.Printf("gui.DumpBoxes() \tBOX mapname=%-12s abox.Name=%-12s", name, abox.Name)
|
|
|
|
abox.Dump()
|
|
|
|
if name == "MAINBOX" {
|
|
|
|
if Config.Debug {
|
|
|
|
scs := spew.ConfigState{MaxDepth: 1}
|
|
|
|
scs.Dump(abox.UiBox)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
log.Println("gui.dumpBox() BoxMap END")
|
|
|
|
if window.UiTab != nil {
|
|
|
|
pages := window.UiTab.NumPages()
|
|
|
|
log.Println("gui.DumpBoxes()\tWindow.UiTab.NumPages() =", pages)
|
2022-10-19 13:23:22 -05:00
|
|
|
// fixme: tabSetMargined(window.UiTab)
|
2022-10-11 11:25:46 -05:00
|
|
|
if Config.Debug {
|
|
|
|
scs := spew.ConfigState{MaxDepth: 2}
|
|
|
|
scs.Dump(window.UiTab)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2021-10-05 06:46:46 -05:00
|
|
|
func addButton(box *ui.Box, name string) *ui.Button {
|
|
|
|
button := ui.NewButton(name)
|
|
|
|
|
|
|
|
button.OnClicked(func(*ui.Button) {
|
|
|
|
log.Println("Should do something here")
|
|
|
|
})
|
|
|
|
|
2022-10-11 11:25:46 -05:00
|
|
|
box.Append(button, false)
|
2021-10-05 06:46:46 -05:00
|
|
|
return button
|
|
|
|
}
|
2021-10-31 14:21:36 -05:00
|
|
|
|
2022-10-19 13:23:22 -05:00
|
|
|
func DebugTab() {
|
|
|
|
bugWin.DebugTab("does this work?")
|
2021-10-31 14:21:36 -05:00
|
|
|
}
|
|
|
|
|
2022-10-19 13:23:22 -05:00
|
|
|
func (n *Node) DebugTab(title string) *Node {
|
|
|
|
var newN *Node
|
|
|
|
var b *ui.Box
|
|
|
|
// var uiBox *ui.Box
|
|
|
|
|
|
|
|
// time.Sleep(1 * time.Second)
|
|
|
|
newN = n.AddTabNew(title + " fix makeWindowDebug")
|
|
|
|
newN.Toolkit.Dump()
|
|
|
|
b = makeWindowDebug()
|
|
|
|
newN.Toolkit.SetTabBox(b)
|
|
|
|
// FIXME: make sure this is getting run to add padding: tabSetMargined(newN.uiTab)
|
|
|
|
// os.Exit(0)
|
|
|
|
|
|
|
|
return newN
|
2021-10-31 14:21:36 -05:00
|
|
|
}
|