new-gui/box.go

176 lines
4.5 KiB
Go
Raw Normal View History

package gui
import "log"
import "github.com/andlabs/ui"
import _ "github.com/andlabs/ui/winmanifest"
// import pb "git.wit.com/wit/witProtobuf"
// import "github.com/davecgh/go-spew/spew"
// THIS IS CLEAN
// 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")
newbox.Window.UiTab.InsertAt(newbox.Name, 0, 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
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 InitGuiBox(gw *GuiWindow, box *GuiBox, uiBox *ui.Box, name string) *GuiBox {
log.Println("InitGuiBox() START")
var newGuiBox GuiBox
newGuiBox.UiBox = uiBox
newGuiBox.Window = gw
uiBox.SetPadded(true)
if (box != nil) {
log.Println("InitGuiBox() APPEND NEW BOX TO OLD BOX")
box.UiBox.Append(uiBox, false)
} else {
log.Println("InitGuiBox() APPEND NEW BOX TO TAB")
gw.UiTab.Append(name, uiBox)
}
gw.BoxMap[name] = &newGuiBox
log.Println("InitGuiBox() END")
return &newGuiBox
}
func HardHorizontalBox(gw *GuiWindow) *GuiBox {
log.Println("HardHorizontalBreak START")
var newbox *GuiBox
newbox = new(GuiBox)
newbox.Window = gw
box := gw.BoxMap["MAINBOX"]
if (box != nil) {
// There is already a box. Add a Seperator
tmp := ui.NewHorizontalSeparator()
box.UiBox.Append(tmp, true)
add(gw.BoxMap["MAINBOX"], newbox)
}
hbox := ui.NewVerticalBox()
hbox.SetPadded(true)
newbox.UiBox = hbox
newbox.Name = "Hbox1"
add(gw.BoxMap["MAINBOX"], newbox)
log.Println("HardHorizontalBreak END")
return newbox
}
func HardVerticalBreak(box *GuiBox) {
log.Println("HardVerticalBreak START")
gw := box.Window
mainbox := gw.BoxMap["MAIN"]
if (mainbox == nil) {
log.Println("HardHorizontalBreak ERROR MAIN box == nil")
return
}
tmp := ui.NewVerticalSeparator()
mainbox.UiBox.Append(tmp, false)
hbox := ui.NewVerticalBox()
hbox.SetPadded(true)
box.UiBox = hbox
mainbox.UiBox.Append(hbox, false)
log.Println("HardVerticalBreak END")
}
func HorizontalBreak(box *GuiBox) {
tmp := ui.NewHorizontalSeparator()
box.UiBox.Append(tmp, false)
}
func VerticalBreak(box *GuiBox) {
tmp := ui.NewVerticalSeparator()
box.UiBox.Append(tmp, false)
}
func AddGenericBox(gw *GuiWindow, name string) *GuiBox {
log.Println("AddGenericBox() START name =", name)
// create a new vertical box off of the mainbox
vbox := ui.NewVerticalBox()
vbox.SetPadded(true)
var newbox *GuiBox
newbox = new(GuiBox)
newbox.UiBox = vbox
newbox.Window = gw
newbox.Name = name
add(gw.BoxMap["MAINBOX"], newbox)
// create a new horizonal box off of the vertical box
hbox := ui.NewHorizontalBox()
hbox.SetPadded(true)
var newhbox *GuiBox
newhbox = new(GuiBox)
newhbox.UiBox = hbox
newhbox.Window = gw
newhbox.Name = "Hbox1"
add(newbox, newhbox)
return newbox
}
/*
func CreateGenericBox(gw *GuiWindow, name string) *GuiBox {
log.Println("CreateAddVmBox() START name =", name)
var box *GuiBox
box = new(GuiBox)
vbox := ui.NewVerticalBox()
vbox.SetPadded(true)
box.UiBox = vbox
box.Window = gw
gw.BoxMap["ADD VM" + name] = box
hbox := ui.NewHorizontalBox()
hbox.SetPadded(true)
vbox.Append(hbox, false)
gw.UiTab.Append(name, vbox)
gw.UiTab.SetMargined(0, true)
return box
}
*/