From 81c44bce5313d4415a0fa062ececc4547832d66d Mon Sep 17 00:00:00 2001 From: Jeff Carr Date: Wed, 27 Oct 2021 16:31:54 -0500 Subject: REFACTOR: moving around things in the rabbit hole Signed-off-by: Jeff Carr --- debug-window.go | 372 ++++++++++++++++++++++++++++++++++++++++++++++ demo-window-andlabs-ui.go | 84 +++++++++++ demo-window.go | 127 ++++++++++++++++ gui-example/main.go | 13 +- new-structs.go | 1 + window-debug.go | 372 ---------------------------------------------- window-demo-andlabs-ui.go | 84 ----------- window-demo.go | 75 ---------- window.go | 17 ++- 9 files changed, 609 insertions(+), 536 deletions(-) create mode 100644 debug-window.go create mode 100644 demo-window-andlabs-ui.go create mode 100644 demo-window.go delete mode 100644 window-debug.go delete mode 100644 window-demo-andlabs-ui.go delete mode 100644 window-demo.go diff --git a/debug-window.go b/debug-window.go new file mode 100644 index 0000000..61a7158 --- /dev/null +++ b/debug-window.go @@ -0,0 +1,372 @@ +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 = "replace InitWindow()" + node := NewWindow() + node.AddDebugTab("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? +func addNodeName(c *ui.Combobox, s string) { + c.Append(s) + nodeNames[y] = s + y = y + 1 +} + +func makeWindowDebug() *ui.Box { + hbox := ui.NewHorizontalBox() + hbox.SetPadded(true) + + ///////////////////////////////////////////////////// + vbox := addGroup(hbox, "range Data.WindowMap") + cbox := ui.NewCombobox() + + for name, _ := range Data.WindowMap { + if (Config.Debug) { + log.Println("range Data.WindowMap() name =", name) + } + addName(cbox, name) + } + 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) + log.Println("gui.DumpBoxes()\tWindow.UiTab =", gw.UiTab) + log.Println("gui.DumpBoxes()\tWindow.TabNumber =", *gw.TabNumber) + 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) { + DumpWindows() + }) + + dump2 := addButton(vbox, "Dump Boxes") + dump2.OnClicked(func(*ui.Button) { + DumpBoxes() + }) + + dump1 := addButton(vbox, "Dump MAP") + dump1.OnClicked(func(*ui.Button) { + DumpMap() + }) + + ///////////////////////////////////////////////////// + nodeBox := addGroup(hbox, "range Data.NodeMap") + nodeCombo := ui.NewCombobox() + + for name, node := range Data.NodeMap { + if (Config.Debug) { + log.Println("range Data.NodeMap() name =", name) + } + addNodeName(nodeCombo, 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.AddDebugTab("added this DebugTab") + } + }) + + n1 = addButton(vbox, "Node.DemoTab") + 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.AddDemoTab("ran gui.AddDemoTab() " + strconv.Itoa(Config.counter)) + } + }) + + 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.AddDemoAndlabsUiTab("ran gui.AddDemoAndlabsUiTab() " + strconv.Itoa(Config.counter)) + } + }) + +/* + ///////////////////////////////////////////////////// + vbox = addGroup(hbox, "Numbers") + pbar := ui.NewProgressBar() + vbox.Append(pbar, false) +*/ + + + 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 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) + tabSetMargined(window.UiTab) + if Config.Debug { + scs := spew.ConfigState{MaxDepth: 2} + scs.Dump(window.UiTab) + } + } + } +} + +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) AddDebugTab(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) + } +} diff --git a/demo-window-andlabs-ui.go b/demo-window-andlabs-ui.go new file mode 100644 index 0000000..806dc14 --- /dev/null +++ b/demo-window-andlabs-ui.go @@ -0,0 +1,84 @@ +package gui + +import "log" +import "github.com/andlabs/ui" +import _ "github.com/andlabs/ui/winmanifest" + +// This will create a tab in a window using direct +// calls to andlabs/ui. This can be used to bypass +// the obvuscation added in this package if it is desired +// or needed. +func (n *Node) AddDemoAndlabsUiTab(title string) { + newNode := n.AddTab(title, makeAndlabsUiTab()) + if (Config.DebugNode) { + newNode.Dump() + } + tabSetMargined(newNode.uiTab) +} + +func makeAndlabsUiTab() *ui.Box { + hbox := ui.NewHorizontalBox() + hbox.SetPadded(true) + + group := ui.NewGroup("Numbers") + group.SetMargined(true) + hbox.Append(group, true) + + vbox := ui.NewVerticalBox() + vbox.SetPadded(true) + group.SetChild(vbox) + + spinbox := ui.NewSpinbox(47, 100) + slider := ui.NewSlider(21, 100) + pbar := ui.NewProgressBar() + + spinbox.OnChanged(func(*ui.Spinbox) { + slider.SetValue(spinbox.Value()) + pbar.SetValue(spinbox.Value()) + }) + slider.OnChanged(func(*ui.Slider) { + spinbox.SetValue(slider.Value()) + pbar.SetValue(slider.Value()) + }) + vbox.Append(spinbox, false) + vbox.Append(slider, false) + vbox.Append(pbar, false) + + ip := ui.NewProgressBar() + ip.SetValue(-1) + vbox.Append(ip, false) + + group = ui.NewGroup("Lists") + group.SetMargined(true) + hbox.Append(group, true) + + vbox = ui.NewVerticalBox() + vbox.SetPadded(true) + group.SetChild(vbox) + + cbox := ui.NewCombobox() + cbox.Append("Combobox Item 1") + cbox.Append("Combobox Item 2") + cbox.Append("Combobox Item 3") + vbox.Append(cbox, false) + + ecbox := ui.NewEditableCombobox() + ecbox.Append("Editable Item 1") + ecbox.Append("Editable Item 2") + ecbox.Append("Editable Item 3") + vbox.Append(ecbox, false) + + ecbox.OnChanged(func(*ui.EditableCombobox) { + log.Println("test") + test := ecbox.Text() + log.Println("test=", test) + }) + + rb := ui.NewRadioButtons() + rb.Append("Radio Button 1") + rb.Append("Radio Button 2") + rb.Append("Radio Button 3") + vbox.Append(rb, false) + + return hbox +} diff --git a/demo-window.go b/demo-window.go new file mode 100644 index 0000000..2bde8b4 --- /dev/null +++ b/demo-window.go @@ -0,0 +1,127 @@ +package gui + +import "log" +import "github.com/andlabs/ui" +import _ "github.com/andlabs/ui/winmanifest" + +var mybox *ui.Box + +func (n *Node) AddDemoTab(title string) { + newNode := n.AddTab(title, makeDemoTab()) + if (Config.DebugNode) { + newNode.Dump() + } + tabSetMargined(newNode.uiTab) + newNode.Dump() + newNode.ListChildren(false) + addDemoGroup(newNode, "new group 1") + addDemoGroup(newNode, "new group 2") + + groupNode := newNode.AddGroup("new group 3") + groupNode.AddComboBox("testing", "foo", "man", "blah") +} + +func makeDemoTab() *ui.Box { + hbox := ui.NewHorizontalBox() + hbox.SetPadded(true) + + group := ui.NewGroup("DemoEditBox") + group.SetMargined(true) + hbox.Append(group, true) + + vbox := ui.NewVerticalBox() + vbox.SetPadded(true) + group.SetChild(vbox) + + ecbox := ui.NewEditableCombobox() + ecbox.Append("foo 1") + ecbox.Append("man 2") + ecbox.Append("bar 3") + + ecbox.OnChanged(func(*ui.EditableCombobox) { + log.Println("test") + test := ecbox.Text() + log.Println("test=", test) + }) + + vbox.Append(ecbox, false) + + return hbox +} + +func addDemoGroup(n *Node, title string) { + hbox := n.uiBox + if (hbox == nil) { + return + } + group := ui.NewGroup(title) + group.SetMargined(true) + hbox.Append(group, true) + + vbox := ui.NewVerticalBox() + vbox.SetPadded(true) + group.SetChild(vbox) + + ecbox := ui.NewEditableCombobox() + ecbox.Append("foo 1") + ecbox.Append("man 2") + ecbox.Append("bar 3") + + ecbox.OnChanged(func(*ui.EditableCombobox) { + log.Println("test") + test := ecbox.Text() + log.Println("test=", test) + }) + + vbox.Append(ecbox, false) +} + +func (n *Node) AddGroup(title string) *Node { + hbox := n.uiBox + if (hbox == nil) { + return n + } + group := ui.NewGroup(title) + group.SetMargined(true) + hbox.Append(group, true) + + vbox := ui.NewVerticalBox() + vbox.SetPadded(true) + group.SetChild(vbox) + + newNode := n.AddNode(title) + newNode.uiBox = vbox + return newNode +} + +func (n *Node) GetText(title string) string { + if (n.uiText != nil) { + return n.uiText.Text() + } + return n.Name +} + +func (n *Node) AddComboBox(title string, s ...string) *Node { + box := n.uiBox + if (box == nil) { + return n + } + + ecbox := ui.NewEditableCombobox() + + for id, name := range s { + log.Println("Adding Combobox Entry:", id, name) + ecbox.Append(name) + } + + ecbox.OnChanged(func(*ui.EditableCombobox) { + test := ecbox.Text() + log.Println("text is now:", test) + }) + + box.Append(ecbox, false) + + newNode := n.AddNode(title) + newNode.uiText = ecbox + return newNode +} diff --git a/gui-example/main.go b/gui-example/main.go index 2b8cc39..9fcb971 100644 --- a/gui-example/main.go +++ b/gui-example/main.go @@ -22,14 +22,19 @@ func main() { // This initializes the first window func initGUI() { - gui.Config.Title = "WIT GUI Window Demo" + gui.Config.Title = "WIT GUI Window Demo 1" gui.Config.Width = 640 gui.Config.Height = 480 gui.Config.Exit = myExit + node1 := gui.NewWindow() + node1.AddDemoTab("A Simple Tab Demo") - node := gui.NewWindow() - node.AddDemoTab("A Simple Tab Demo") - node.AddDemoAndlabsUiTab("A Simple andlabs/ui Tab Demo") + gui.Config.Title = "WIT GUI Window Demo 2" + gui.Config.Width = 640 + gui.Config.Height = 240 + gui.Config.Exit = myExit + node2 := gui.NewWindow() + node2.AddDemoAndlabsUiTab("A Simple andlabs/ui Tab Demo") } // This demonstrates how to properly interact with the GUI diff --git a/new-structs.go b/new-structs.go index 92933ed..858d50f 100644 --- a/new-structs.go +++ b/new-structs.go @@ -55,6 +55,7 @@ type Node struct { uiWindow *ui.Window uiTab *ui.Tab uiBox *ui.Box + uiText *ui.EditableCombobox } func (n *Node) Parent() *Node { diff --git a/window-debug.go b/window-debug.go deleted file mode 100644 index 61a7158..0000000 --- a/window-debug.go +++ /dev/null @@ -1,372 +0,0 @@ -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 = "replace InitWindow()" - node := NewWindow() - node.AddDebugTab("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? -func addNodeName(c *ui.Combobox, s string) { - c.Append(s) - nodeNames[y] = s - y = y + 1 -} - -func makeWindowDebug() *ui.Box { - hbox := ui.NewHorizontalBox() - hbox.SetPadded(true) - - ///////////////////////////////////////////////////// - vbox := addGroup(hbox, "range Data.WindowMap") - cbox := ui.NewCombobox() - - for name, _ := range Data.WindowMap { - if (Config.Debug) { - log.Println("range Data.WindowMap() name =", name) - } - addName(cbox, name) - } - 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) - log.Println("gui.DumpBoxes()\tWindow.UiTab =", gw.UiTab) - log.Println("gui.DumpBoxes()\tWindow.TabNumber =", *gw.TabNumber) - 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) { - DumpWindows() - }) - - dump2 := addButton(vbox, "Dump Boxes") - dump2.OnClicked(func(*ui.Button) { - DumpBoxes() - }) - - dump1 := addButton(vbox, "Dump MAP") - dump1.OnClicked(func(*ui.Button) { - DumpMap() - }) - - ///////////////////////////////////////////////////// - nodeBox := addGroup(hbox, "range Data.NodeMap") - nodeCombo := ui.NewCombobox() - - for name, node := range Data.NodeMap { - if (Config.Debug) { - log.Println("range Data.NodeMap() name =", name) - } - addNodeName(nodeCombo, 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.AddDebugTab("added this DebugTab") - } - }) - - n1 = addButton(vbox, "Node.DemoTab") - 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.AddDemoTab("ran gui.AddDemoTab() " + strconv.Itoa(Config.counter)) - } - }) - - 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.AddDemoAndlabsUiTab("ran gui.AddDemoAndlabsUiTab() " + strconv.Itoa(Config.counter)) - } - }) - -/* - ///////////////////////////////////////////////////// - vbox = addGroup(hbox, "Numbers") - pbar := ui.NewProgressBar() - vbox.Append(pbar, false) -*/ - - - 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 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) - tabSetMargined(window.UiTab) - if Config.Debug { - scs := spew.ConfigState{MaxDepth: 2} - scs.Dump(window.UiTab) - } - } - } -} - -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) AddDebugTab(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) - } -} diff --git a/window-demo-andlabs-ui.go b/window-demo-andlabs-ui.go deleted file mode 100644 index 806dc14..0000000 --- a/window-demo-andlabs-ui.go +++ /dev/null @@ -1,84 +0,0 @@ -package gui - -import "log" -import "github.com/andlabs/ui" -import _ "github.com/andlabs/ui/winmanifest" - -// This will create a tab in a window using direct -// calls to andlabs/ui. This can be used to bypass -// the obvuscation added in this package if it is desired -// or needed. -func (n *Node) AddDemoAndlabsUiTab(title string) { - newNode := n.AddTab(title, makeAndlabsUiTab()) - if (Config.DebugNode) { - newNode.Dump() - } - tabSetMargined(newNode.uiTab) -} - -func makeAndlabsUiTab() *ui.Box { - hbox := ui.NewHorizontalBox() - hbox.SetPadded(true) - - group := ui.NewGroup("Numbers") - group.SetMargined(true) - hbox.Append(group, true) - - vbox := ui.NewVerticalBox() - vbox.SetPadded(true) - group.SetChild(vbox) - - spinbox := ui.NewSpinbox(47, 100) - slider := ui.NewSlider(21, 100) - pbar := ui.NewProgressBar() - - spinbox.OnChanged(func(*ui.Spinbox) { - slider.SetValue(spinbox.Value()) - pbar.SetValue(spinbox.Value()) - }) - slider.OnChanged(func(*ui.Slider) { - spinbox.SetValue(slider.Value()) - pbar.SetValue(slider.Value()) - }) - vbox.Append(spinbox, false) - vbox.Append(slider, false) - vbox.Append(pbar, false) - - ip := ui.NewProgressBar() - ip.SetValue(-1) - vbox.Append(ip, false) - - group = ui.NewGroup("Lists") - group.SetMargined(true) - hbox.Append(group, true) - - vbox = ui.NewVerticalBox() - vbox.SetPadded(true) - group.SetChild(vbox) - - cbox := ui.NewCombobox() - cbox.Append("Combobox Item 1") - cbox.Append("Combobox Item 2") - cbox.Append("Combobox Item 3") - vbox.Append(cbox, false) - - ecbox := ui.NewEditableCombobox() - ecbox.Append("Editable Item 1") - ecbox.Append("Editable Item 2") - ecbox.Append("Editable Item 3") - vbox.Append(ecbox, false) - - ecbox.OnChanged(func(*ui.EditableCombobox) { - log.Println("test") - test := ecbox.Text() - log.Println("test=", test) - }) - - rb := ui.NewRadioButtons() - rb.Append("Radio Button 1") - rb.Append("Radio Button 2") - rb.Append("Radio Button 3") - vbox.Append(rb, false) - - return hbox -} diff --git a/window-demo.go b/window-demo.go deleted file mode 100644 index 92e89e8..0000000 --- a/window-demo.go +++ /dev/null @@ -1,75 +0,0 @@ -package gui - -import "log" -import "github.com/andlabs/ui" -import _ "github.com/andlabs/ui/winmanifest" - -var mybox *ui.Box - -func (n *Node) AddDemoTab(title string) { - newNode := n.AddTab(title, makeDemoTab()) - if (Config.DebugNode) { - newNode.Dump() - } - tabSetMargined(newNode.uiTab) - newNode.Dump() - newNode.ListChildren(false) - addDemoGroup(newNode, "new group 1") - addDemoGroup(newNode, "new group 2") - addDemoGroup(newNode, "new group 3") -} - -func makeDemoTab() *ui.Box { - hbox := ui.NewHorizontalBox() - hbox.SetPadded(true) - - group := ui.NewGroup("DemoEditBox") - group.SetMargined(true) - hbox.Append(group, true) - - vbox := ui.NewVerticalBox() - vbox.SetPadded(true) - group.SetChild(vbox) - - ecbox := ui.NewEditableCombobox() - ecbox.Append("foo 1") - ecbox.Append("man 2") - ecbox.Append("bar 3") - - ecbox.OnChanged(func(*ui.EditableCombobox) { - log.Println("test") - test := ecbox.Text() - log.Println("test=", test) - }) - - vbox.Append(ecbox, false) - - return hbox -} - -func addDemoGroup(n *Node, title string) { - hbox := n.uiBox - if (hbox == nil) { - return - } - group := ui.NewGroup(title) - group.SetMargined(true) - hbox.Append(group, true) - - vbox := ui.NewVerticalBox() - vbox.SetPadded(true) - group.SetChild(vbox) - - ecbox := ui.NewEditableCombobox() - ecbox.Append("foo 1") - ecbox.Append("man 2") - ecbox.Append("bar 3") - - ecbox.OnChanged(func(*ui.EditableCombobox) { - log.Println("test") - test := ecbox.Text() - log.Println("test=", test) - }) - - vbox.Append(ecbox, false) -} diff --git a/window.go b/window.go index fb142ac..56081d2 100644 --- a/window.go +++ b/window.go @@ -77,12 +77,12 @@ func (n *Node) Add(e Element) *Node { } */ +/* // // Create a new node // if parent == nil, that means it is a new window and needs to be put // in the window map (aka Data.NodeMap) // -/* func (parent *Node) addNode(title string) *Node { var node Node node.Name = title @@ -147,6 +147,21 @@ func (parent *Node) makeNode(title string, x int, y int) *Node { return &node } +func (parent *Node) AddNode(title string) *Node { + var node Node + node.Name = title + node.Width = parent.Width + node.Height = parent.Height + + id := Config.prefix + strconv.Itoa(Config.counter) + Config.counter += 1 + node.id = id + + parent.Append(&node) + node.parent = parent + return &node +} + func (n *Node) uiNewWindow(title string, x int, y int) { w := ui.NewWindow(title, x, y, false) w.SetBorderless(false) -- cgit v1.2.3