194 lines
4.2 KiB
Go
194 lines
4.2 KiB
Go
package gui
|
|
|
|
import (
|
|
"log"
|
|
// "fmt"
|
|
"strconv"
|
|
|
|
"github.com/andlabs/ui"
|
|
_ "github.com/andlabs/ui/winmanifest"
|
|
// "github.com/davecgh/go-spew/spew"
|
|
)
|
|
|
|
var names = make([]string, 100)
|
|
var nodeNames = make([]string, 100)
|
|
|
|
func DebugWindow() {
|
|
Config.Title = "DebugWindow()"
|
|
node := NewWindow()
|
|
node.DebugTab("WIT GUI Debug Tab")
|
|
}
|
|
|
|
// 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)
|
|
func addNodeName(c *ui.Combobox, s string, id string) {
|
|
c.Append(s)
|
|
nodeNames[y] = id
|
|
y = y + 1
|
|
}
|
|
|
|
func makeWindowDebug() *ui.Box {
|
|
hbox := ui.NewHorizontalBox()
|
|
hbox.SetPadded(true)
|
|
|
|
/////////////////////////////////////////////////////
|
|
nodeBox := addGroup(hbox, "Windows:")
|
|
nodeCombo := ui.NewCombobox()
|
|
|
|
for name, node := range Data.NodeMap {
|
|
if (Config.Debug) {
|
|
log.Println("range Data.NodeMap() name =", name)
|
|
}
|
|
tmp := node.id + " (" + name + ")"
|
|
addNodeName(nodeCombo, tmp, node.id)
|
|
}
|
|
nodeCombo.SetSelected(0)
|
|
|
|
nodeBox.Append(nodeCombo, false)
|
|
|
|
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()
|
|
}
|
|
})
|
|
|
|
/////////////////////////////////////////////////////
|
|
vbox := addGroup(hbox, "Node Debug")
|
|
|
|
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")
|
|
}
|
|
})
|
|
|
|
n1 = addButton(vbox, "Node.DemoAndlabsUiTab")
|
|
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.DemoAndlabsUiTab("ran gui.AddDemoAndlabsUiTab() " + strconv.Itoa(Config.counter))
|
|
}
|
|
})
|
|
|
|
return hbox
|
|
}
|
|
|
|
// TODO: remove this crap
|
|
var x int = 0
|
|
var y int = 0
|
|
|
|
// TODO: remove this crap
|
|
func addName(c *ui.Combobox, s string) {
|
|
c.Append(s)
|
|
names[x] = s
|
|
x = x + 1
|
|
}
|
|
|
|
func addGroup(b *ui.Box, name string) *ui.Box {
|
|
group := ui.NewGroup(name)
|
|
group.SetMargined(true)
|
|
b.Append(group, true)
|
|
|
|
vbox := ui.NewVerticalBox()
|
|
vbox.SetPadded(true)
|
|
group.SetChild(vbox)
|
|
|
|
return vbox
|
|
}
|
|
|
|
func addButton(box *ui.Box, name string) *ui.Button {
|
|
button := ui.NewButton(name)
|
|
|
|
button.OnClicked(func(*ui.Button) {
|
|
log.Println("Should do something here")
|
|
})
|
|
|
|
box.Append(button, false)
|
|
return button
|
|
}
|
|
|
|
func (n *Node) DebugTab(title string) {
|
|
newNode := n.AddTab(title, makeWindowDebug())
|
|
if (Config.DebugNode) {
|
|
newNode.Dump()
|
|
}
|
|
tabSetMargined(newNode.uiTab)
|
|
}
|
|
|
|
// This sets _all_ the tabs to Margin = true
|
|
//
|
|
// TODO: do proper tab tracking (will be complicated). low priority
|
|
func tabSetMargined(tab *ui.Tab) {
|
|
if (Config.DebugTabs) {
|
|
log.Println("tabSetMargined() IGNORE THIS")
|
|
}
|
|
c := tab.NumPages()
|
|
for i := 0; i < c; i++ {
|
|
if (Config.DebugTabs) {
|
|
log.Println("tabSetMargined() i =", i)
|
|
}
|
|
tab.SetMargined(i, true)
|
|
}
|
|
}
|