NODE: walking around in the rabbit hole

This commit is contained in:
Jeff Carr 2021-10-09 07:13:58 -05:00
parent 3d6e0e5518
commit da16b8106c
5 changed files with 39 additions and 70 deletions

28
box.go
View File

@ -72,25 +72,18 @@ func add(box *GuiBox, newbox *GuiBox) {
log.Println("gui.add() END") log.Println("gui.add() END")
} }
func (n *Node) NewBox(axis int, name string) *Node { func (parent *Node) NewBox(axis int, name string) *Node {
var newBox *GuiBox if (parent.box == nil) {
var newNode *Node = n panic("gui.Node.NewBox() parent.box == nil")
}
newBox = new(GuiBox) newBox := new(GuiBox)
// newBox.Window = newNode.uiWindow newBox.Window = parent.window
newBox.Name = name newBox.Name = name
if (n.box == nil) {
panic("node.newBox() box == nil")
}
if (n.box == nil) {
// add a box here
newBox.node = n
n.box = newBox
} else {
// make a new box & a new node // make a new box & a new node
newNode = makeNode(n, name, 111, 112) newNode := parent.makeNode(name, 111, 100 + Config.counter)
} Config.counter += 1
var uiBox *ui.Box var uiBox *ui.Box
if (axis == Xaxis) { if (axis == Xaxis) {
@ -100,7 +93,10 @@ func (n *Node) NewBox(axis int, name string) *Node {
} }
uiBox.SetPadded(true) uiBox.SetPadded(true)
newBox.UiBox = uiBox newBox.UiBox = uiBox
add(n.box, newBox) newNode.uiBox = uiBox
parent.Append(newNode)
// add(n.box, newBox)
return newNode return newNode
} }

View File

@ -34,7 +34,7 @@ func watchGUI() {
for { for {
log.Println("Waiting for customExit()", i) log.Println("Waiting for customExit()", i)
i += 1 i += 1
time.Sleep(3 * time.Second) time.Sleep(1 * time.Second)
if i == 2 { if i == 2 {
log.Println("Sending ExampleWindow to gui.Queue()") log.Println("Sending ExampleWindow to gui.Queue()")
gui.Queue(gui.DebugWindow) gui.Queue(gui.DebugWindow)

View File

@ -47,11 +47,13 @@ type Node struct {
parent *Node parent *Node
children []*Node children []*Node
window *GuiWindow
box *GuiBox box *GuiBox
uiControl *ui.Control uiControl *ui.Control
uiWindow *ui.Window uiWindow *ui.Window
uiTab *ui.Tab uiTab *ui.Tab
uiBox *ui.Box
} }
func (n *Node) Parent() *Node { func (n *Node) Parent() *Node {
@ -67,12 +69,17 @@ func (n *Node) Dump() {
log.Println("gui.Node.Dump() Name = ", n.Name) log.Println("gui.Node.Dump() Name = ", n.Name)
log.Println("gui.Node.Dump() Width = ", n.Width) log.Println("gui.Node.Dump() Width = ", n.Width)
log.Println("gui.Node.Dump() Height = ", n.Height) log.Println("gui.Node.Dump() Height = ", n.Height)
log.Println("gui.Node.Dump() parent = ", n.parent) log.Println("gui.Node.Dump() parent = ", n.parent)
log.Println("gui.Node.Dump() children = ", n.children) log.Println("gui.Node.Dump() children = ", n.children)
log.Println("gui.Node.Dump() window = ", n.window)
log.Println("gui.Node.Dump() box = ", n.box) log.Println("gui.Node.Dump() box = ", n.box)
log.Println("gui.Node.Dump() uiControl = ", n.uiControl)
log.Println("gui.Node.Dump() uiWindow = ", n.uiWindow) log.Println("gui.Node.Dump() uiWindow = ", n.uiWindow)
log.Println("gui.Node.Dump() uiTab = ", n.uiTab) log.Println("gui.Node.Dump() uiTab = ", n.uiTab)
log.Println("gui.Node.Dump() uiBox = ", n.uiBox)
log.Println("gui.Node.Dump() uiControl = ", n.uiControl)
if (n.id == "") { if (n.id == "") {
panic("gui.Node.Dump() id == nil") panic("gui.Node.Dump() id == nil")
} }
@ -197,30 +204,6 @@ func findByName(node *Node, name string) *Node {
return nil return nil
} }
/*
func (parent *Node) InitTab(title string) *Node {
if parent.uiWindow == nil {
parent.Dump()
panic("gui.InitTab() ERROR ui.Window == nil")
}
if parent.box == nil {
parent.Dump()
panic("gui.InitTab() ERROR box == nil")
}
tab := ui.NewTab()
parent.uiWindow.SetChild(tab)
parent.uiWindow.SetMargined(true)
parent.uiTab = tab
tab.Append(title, initBlankWindow())
tab.SetMargined(0, true)
newNode := makeNode(parent, title, 555, 600 + Config.counter)
return newNode
}
*/
func (parent *Node) AddTab(title string) *Node { func (parent *Node) AddTab(title string) *Node {
if parent.uiWindow == nil { if parent.uiWindow == nil {
parent.Dump() parent.Dump()
@ -246,7 +229,7 @@ func (parent *Node) AddTab(title string) *Node {
tab.Append(title, initBlankWindow()) tab.Append(title, initBlankWindow())
tab.SetMargined(0, true) tab.SetMargined(0, true)
newNode := makeNode(parent, title, 555, 600 + Config.counter) newNode := parent.makeNode(title, 555, 600 + Config.counter)
newNode.uiTab = tab newNode.uiTab = tab
return newNode return newNode
} }

View File

@ -186,32 +186,6 @@ func (s GuiBox) Append(child ui.Control, x bool) {
s.UiBox.Append(child, x) s.UiBox.Append(child, x)
} }
/*
func (s GuiBox) InitTab(title string, custom func() ui.Control) *Node {
if s.Window == nil {
return nil
}
if s.Window.UiWindow == nil {
return nil
}
window := s.Window.UiWindow
tab := ui.NewTab()
window.SetChild(tab)
window.SetMargined(true)
tab.Append(title, custom())
tab.SetMargined(0, true)
// tab.SetMargined(1, true)
s.Window.UiTab = tab
if s.node == nil {
log.Println("Fuck node = ", s.node)
os.Exit(-1)
}
return s.node
}
*/
func (s *GuiBox) AddTab(title string, custom ui.Control) *ui.Tab { func (s *GuiBox) AddTab(title string, custom ui.Control) *ui.Tab {
if s.Window == nil { if s.Window == nil {

View File

@ -20,6 +20,7 @@ func initUI(name string, callback func(*GuiBox) *GuiBox) {
box := node.box box := node.box
box = callback(box) box = callback(box)
window := box.Window window := box.Window
node.window = window
log.Println("StartNewWindow() box =", box) log.Println("StartNewWindow() box =", box)
window.UiWindow.Show() window.UiWindow.Show()
@ -271,6 +272,21 @@ func makeNode(parent *Node, title string, x int, y int) *Node {
return &node return &node
} }
func (parent *Node) makeNode(title string, x int, y int) *Node {
var node Node
node.Name = title
node.Width = x
node.Height = y
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) { func (n *Node) uiNewWindow(title string, x int, y int) {
w := ui.NewWindow(title, x, y, false) w := ui.NewWindow(title, x, y, false)
w.SetBorderless(false) w.SetBorderless(false)