new-gui/tab.go

43 lines
1.1 KiB
Go

package gui
import (
"go.wit.com/log"
"go.wit.com/gui/toolkits"
)
// This function should make a new node with the parent and
// the 'tab' as a child
func (n *Node) NewTab(text string) *Node {
// check to make sure n is actually a window
if (n.WidgetType != toolkit.Window) {
// figure out what the actual window is
log.Warn("NewTab() is being requested on something that isn't a Window. node =", n)
if (n.parent == nil) {
// TODO: find a window. any window. never give up. never die.
log.Warn("NewTab() TODO: make a window here", n)
panic("NewTab did not get passed a window")
}
log.Warn("NewTab() parent =", n.parent)
if (n.parent.WidgetType == toolkit.Root) {
// also broken
log.Warn("NewTab() TODO: make or find a window here", n)
panic("NewTab() did not get passed a window")
}
// go up the binary tree until we find a window widget to add a tab too
return n.parent.NewTab(text)
}
newNode := n.newNode(text, toolkit.Tab)
a := newAction(newNode, toolkit.Add)
sendAction(a)
// by default, create a box inside the tab
// TODO: allow this to be configurable
newBox := newNode.NewBox(text + " box", true)
return newBox
}