diff options
Diffstat (limited to 'widget.go')
| -rw-r--r-- | widget.go | 99 |
1 files changed, 63 insertions, 36 deletions
@@ -2,10 +2,11 @@ package main import ( "go.wit.com/log" + "go.wit.com/toolkits/tree" "go.wit.com/widget" ) -func initWidget(n *node) *guiWidget { +func initWidget(n *tree.Node) *guiWidget { var w *guiWidget w = new(guiWidget) // Set(w, "default") @@ -15,11 +16,12 @@ func initWidget(n *node) *guiWidget { // set the name used by gocui to the id w.cuiName = string(n.WidgetId) + w.node = n + w.WidgetType = n.WidgetType + if n.WidgetType == widget.Root { log.Log(INFO, "setupWidget() FOUND ROOT w.id =", n.WidgetId) - n.WidgetId = 0 - me.rootNode = n - return w + // me.treeRoot = n } if n.WidgetType == widget.Grid { @@ -36,13 +38,13 @@ func setupCtrlDownWidget() { a.WidgetType = widget.Dialog a.WidgetId = -1 a.ParentId = 0 - n := addNode(a) + // n := addNode(a) + n := me.myTree.AddNode(a) me.ctrlDown = n } -func (n *node) deleteView() { - w := n.tk +func (w *guiWidget) deleteView() { if w.v != nil { w.v.Visible = false return @@ -52,8 +54,9 @@ func (n *node) deleteView() { w.v = nil } +/* // searches the binary tree for a WidgetId -func (n *node) findWidgetName(name string) *node { +func findWidgetName(n *tree.Node, name string) *node { if n == nil { return nil } @@ -70,70 +73,94 @@ func (n *node) findWidgetName(name string) *node { } return nil } +*/ -func (n *node) IsCurrent() bool { - w := n.tk - if n.WidgetType == widget.Tab { +func (w *guiWidget) IsCurrent() bool { + if w.node.WidgetType == widget.Tab { return w.isCurrent } - if n.WidgetType == widget.Window { + if w.node.WidgetType == widget.Window { return w.isCurrent } - if n.WidgetType == widget.Root { + if w.node.WidgetType == widget.Root { return false } - return n.parent.IsCurrent() + return w.parent.IsCurrent() } -func (n *node) Visible() bool { - if n == nil { +func (tk *guiWidget) String() string { + return tk.progname +} + +func (tk *guiWidget) Visible() bool { + if tk == nil { return false } - if n.tk == nil { + if tk.v == nil { return false } - if n.tk.v == nil { + return tk.v.Visible +} + +func Visible(n *tree.Node) bool { + if n == nil { return false } - return n.tk.v.Visible + if n.TK == nil { + return false + } + var w *guiWidget + w = n.TK.(*guiWidget) + return w.Visible() } -func (n *node) SetVisible(b bool) { +func (w *guiWidget) SetVisible(b bool) { + if w.v == nil { + return + } + w.v.Visible = b +} + +func SetVisible(n *tree.Node, b bool) { if n == nil { return } - if n.tk == nil { + if n.TK == nil { return } - if n.tk.v == nil { + var w *guiWidget + w = n.TK.(*guiWidget) + if w.v == nil { return } - n.tk.v.Visible = b + w.v.Visible = b } -func addDropdown() *node { - n := new(node) +func addDropdown() *tree.Node { + n := new(tree.Node) n.WidgetType = widget.Flag n.WidgetId = -2 n.ParentId = 0 - // copy the data from the action message - n.progname = "DropBox" - n.tk.label = "DropBox text" - // store the internal toolkit information - n.tk = new(guiWidget) - n.tk.frame = true + tk := new(guiWidget) + tk.frame = true + tk.label = "DropBox text" + + // copy the data from the action message + tk.progname = "DropBox" // set the name used by gocui to the id - n.tk.cuiName = "-1 dropbox" + tk.cuiName = "-1 dropbox" - n.tk.color = &colorFlag + tk.color = &colorFlag // add this new widget on the binary tree - n.parent = me.rootNode - if n.parent != nil { - n.parent.children = append(n.parent.children, n) + tk.parent = me.treeRoot.TK.(*guiWidget) + if tk.parent != nil { + tk.parent.children = append(tk.parent.children, tk) } + + n.TK = tk return n } |
