package gui import "log" // import "reflect" import "github.com/andlabs/ui" 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") 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") } 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 var uiBox *ui.Box if (axis == Xaxis) { uiBox = ui.NewHorizontalBox() } else { uiBox = ui.NewVerticalBox() } 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) } 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("HardBoxk END") return newbox } 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) }