summaryrefslogtreecommitdiff
path: root/box.go
diff options
context:
space:
mode:
Diffstat (limited to 'box.go')
-rw-r--r--box.go139
1 files changed, 31 insertions, 108 deletions
diff --git a/box.go b/box.go
index f19e22a..67c0c05 100644
--- a/box.go
+++ b/box.go
@@ -1,6 +1,7 @@
package gui
import "log"
+// import "os"
// import "reflect"
import "github.com/andlabs/ui"
@@ -8,123 +9,45 @@ 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)
+func (n *Node) AddComboBox(title string, s ...string) *Node {
+ newNode := n.AddNode(title)
+ box := n.uiBox
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")
- 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")
- return
- }
- log.Println("\tgui.add() adding", newbox.Name, "to", box.Name)
- // copy the box settings over
- newbox.Window = box.Window
- if (box.UiBox == nil) {
- log.Println("\tgui.add() ERROR box.UiBox == nil")
- panic("crap")
+ return n
}
- if (newbox.UiBox == nil) {
- log.Println("\tgui.add() ERROR newbox.UiBox == nil")
- panic("crap")
- }
- // log.Println("\tgui.add() newbox.UiBox == ", newbox.UiBox.GetParent())
- // spew.Dump(newbox.UiBox)
- box.UiBox.Append(newbox.UiBox, false)
-
- // add the newbox to the Window.BoxMap[]
- box.Window.BoxMap[newbox.Name] = newbox
- log.Println("gui.add() END")
-}
-func NewBox(box *GuiBox, axis int, name string) *GuiBox {
- log.Println("VerticalBox START")
- var newbox *GuiBox
- newbox = new(GuiBox)
- newbox.Window = box.Window
- newbox.Name = name
+ ecbox := ui.NewEditableCombobox()
+ newNode.uiText = ecbox
+ // newNode.Dump()
+ // log.Println("ecbox", ecbox)
- var uiBox *ui.Box
- if (axis == Xaxis) {
- uiBox = ui.NewHorizontalBox()
- } else {
- uiBox = ui.NewVerticalBox()
+ for id, name := range s {
+ log.Println("Adding Combobox Entry:", id, name)
+ ecbox.Append(name)
}
- uiBox.SetPadded(true)
- newbox.UiBox = uiBox
- add(box, newbox)
- return newbox
-}
-
-func HardBox(gw *GuiWindow, axis int, name string) *GuiBox {
- log.Println("HardBox() START axis =", axis)
- // 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)
+ 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 {
- HorizontalBreak(box)
+ newNode.OnChanged()
}
- }
-
- // 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("HardBoxk END")
- return newbox
+ box.Append(ecbox, Config.Stretchy)
+ return newNode
}
-func HorizontalBreak(box *GuiBox) {
- log.Println("VerticalSeparator added to box =", box.Name)
- tmp := ui.NewHorizontalSeparator()
- 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) GetText() string {
+ if (n.uiMultilineEntry != nil) {
+ return n.uiMultilineEntry.Text()
+ }
+ if (n.uiText == nil) {
+ return ""
+ }
+ ecbox := n.uiText
+ return ecbox.Text()
}