diff options
| author | Jeff Carr <[email protected]> | 2022-10-08 23:51:48 -0500 |
|---|---|---|
| committer | Jeff Carr <[email protected]> | 2022-10-08 23:51:48 -0500 |
| commit | dd7d277a86f25116cc1c0130a763409a166d49b4 (patch) | |
| tree | 7bf1f9b67f2f3d34e5153ccfa0b60c72cf9fb774 /box.go | |
| parent | 086986b6b8f55d15d18595bcbf3f76c023365b61 (diff) | |
Try renaming 'Node' to 'Box'
Diffstat (limited to 'box.go')
| -rw-r--r-- | box.go | 203 |
1 files changed, 187 insertions, 16 deletions
@@ -1,7 +1,7 @@ package gui import "log" -// import "os" +import "os" // import "reflect" import "github.com/andlabs/ui" @@ -9,17 +9,190 @@ import _ "github.com/andlabs/ui/winmanifest" // import "github.com/davecgh/go-spew/spew" +// add(nil, newbox, "") // use this when the Window is created. Always called 'MAINBOX' +// add(gw.BoxMap["MAINBOX"], newbox, name) // use this to add a box off the main box +// add(gw.BoxMap["BUTTONBOX"], newbox, name) // use this to add something to the box called 'BUTTONBOX' +// add(box, newbox, name) // add 'newbox' to 'box' and call it 'name' +func add(box *GuiBox, newbox *GuiBox) { + log.Println("gui.add() START box =", box) + log.Println("gui.add() START newbox =", newbox) + if (box == nil) { + log.Println("\tgui.add() add to Window as MAINBOX") + if (newbox.Window.UiTab != nil) { + // create a new tab here + // add the box to it as MAINBOX + log.Println("\tgui.add() add to Window as a UiTab") + // TODO: allow passing where to append + // newbox.Window.UiTab.InsertAt(newbox.Name, 0, newbox.UiBox) + newbox.Window.UiTab.Append(newbox.Name, newbox.UiBox) + // newbox.Window.UiTab.SetMargined(0, true) + + // TODO: figure out how to make a new Tab/Window/Box here + // window := InitGuiWindow(Data.Config, newbox.Name, gw.MakeWindow, gw.UiWindow, gw.UiTab) + // window.UiTab.Delete(0) + // window.MakeWindow(window) + // newbox.Window = window + + newbox.Window.BoxMap["MAINBOX"] = newbox + log.Println("gui.add() END") + panic("gui.add() MAINBOX gui.add() END") + return + } else { + log.Println("\tgui.add() ERROR DONT KNOW HOW TO ADD TO A RAW WINDOW YET") + // add this to the window + } + log.Println("\tgui.add() ERROR DON'T KNOW HOW TO add to Window as MAINBOX DONE") + log.Println("gui.add() END") + panic("gui.add() gui.add() END") + return + } + log.Println("\tgui.add() adding", newbox.Name, "to", box.Name) + // copy the box settings over + newbox.Window = box.Window + if (box.node == nil) { + box.Dump() + panic("gui.add() ERROR box.node == nil") + } + + if (newbox.UiBox == nil) { + panic("gui.add() ERROR newbox.UiBox == nil") + } + + if (box.UiBox == nil) { + box.Dump() + // panic("gui.add() ERROR box.UiBox == nil") + return + // TODO: fix this whole add() function // Oct 9 + } + box.UiBox.Append(newbox.UiBox, false) + box.Dump() + panic("gui.add()") + + // add the newbox to the Window.BoxMap[] + box.Window.BoxMap[newbox.Name] = newbox + log.Println("gui.add() END") +} + +func (n *Node) AddBox(axis int, name string) *Node { + newBox := new(GuiBox) + newBox.Window = n.window + newBox.Name = name + + if (n.box == nil) { + n.box = newBox + } + + // make a new box & a new node + newNode := n.makeNode(name, 111, 100 + Config.counter) + newNode.box = newBox + Config.counter += 1 + + var uiBox *ui.Box + if (axis == Xaxis) { + uiBox = ui.NewHorizontalBox() + } else { + uiBox = ui.NewVerticalBox() + } + uiBox.SetPadded(true) + newBox.UiBox = uiBox + newNode.uiBox = uiBox + + n.Append(newNode) + // add(n.box, newBox) + return newNode +} + +func (b *GuiBox) NewBox(axis int, name string) *GuiBox { + log.Println("gui.NewBox() START") + n := b.FindNode() + if (n == nil) { + log.Println("gui.NewBox() SERIOUS ERROR. CAN NOT FIND NODE") + os.Exit(0) + } else { + log.Println("gui.NewBox() node =", n.Name) + } + var newbox *GuiBox + newbox = new(GuiBox) + newbox.Window = b.Window + newbox.Name = name + + var uiBox *ui.Box + if (axis == Xaxis) { + uiBox = ui.NewHorizontalBox() + } else { + uiBox = ui.NewVerticalBox() + } + uiBox.SetPadded(true) + newbox.UiBox = uiBox + add(b, newbox) + // panic("gui.NewBox") + return newbox +} + +func HardBox(gw *GuiWindow, axis int, name string) *GuiBox { + log.Println("HardBox() START axis =", axis) + + if (gw.node == nil) { + gw.Dump() + panic("gui.HardBox() gw.node == nil") + } + // add a Vertical Seperator if there is already a box + // Is this right? + box := gw.BoxMap["MAINBOX"] + if (box != nil) { + if (axis == Xaxis) { + VerticalBreak(box) + } else { + HorizontalBreak(box) + } + } + + // make the new vbox + var uiBox *ui.Box + if (axis == Xaxis) { + uiBox = ui.NewHorizontalBox() + } else { + uiBox = ui.NewVerticalBox() + } + uiBox.SetPadded(true) + + // Init a new GuiBox + newbox := new(GuiBox) + newbox.Window = gw + newbox.UiBox = uiBox + newbox.Name = name + + add(gw.BoxMap["MAINBOX"], newbox) + + log.Println("HardBox END") + return newbox +} + +func HorizontalBreak(box *GuiBox) { + log.Println("VerticalSeparator added to box =", box.Name) + tmp := ui.NewHorizontalSeparator() + if (box == nil) { + return + } + if (box.UiBox == nil) { + return + } + box.UiBox.Append(tmp, false) +} + +func VerticalBreak(box *GuiBox) { + log.Println("VerticalSeparator added to box =", box.Name) + tmp := ui.NewVerticalSeparator() + box.UiBox.Append(tmp, false) +} + func (n *Node) AddComboBox(title string, s ...string) *Node { - newNode := n.AddNode(title) box := n.uiBox if (box == nil) { return n } ecbox := ui.NewEditableCombobox() - newNode.uiText = ecbox - // newNode.Dump() - // log.Println("ecbox", ecbox) for id, name := range s { log.Println("Adding Combobox Entry:", id, name) @@ -28,23 +201,21 @@ func (n *Node) AddComboBox(title string, s ...string) *Node { ecbox.OnChanged(func(*ui.EditableCombobox) { test := ecbox.Text() - log.Println("node.Name = '" + newNode.Name + "' text for '" + title + "' is now: '" + test + "'") - if (newNode.OnChanged == nil) { - log.Println("Not doing custom OnChanged since OnChanged == nil") - newNode.Dump() - } else { - newNode.OnChanged() - } + log.Println("node.Name = '" + n.Name + "' text for '" + title + "' is now: '" + test + "'") }) - box.Append(ecbox, Config.Stretchy) + box.Append(ecbox, false) + + newNode := n.AddNode(title) + newNode.uiText = ecbox return newNode } +func (n *Node) OnChanged(f func()) { + f() +} + func (n *Node) GetText() string { - if (n.uiMultilineEntry != nil) { - return n.uiMultilineEntry.Text() - } if (n.uiText == nil) { return "" } |
