// Copyright 2017-2025 WIT.COM Inc. All rights reserved. // Use of this source code is governed by the GPL 3.0 package main import ( "fmt" "slices" "go.wit.com/lib/protobuf/guipb" "go.wit.com/log" "go.wit.com/toolkits/tree" "go.wit.com/widget" ) /* func initGridPB(pb *guipb.Widget) *guiWidget { var w *guiWidget w = new(guiWidget) w.pb = pb w.parent = me.treeRoot.TK.(*guiWidget) w.wtype = widget.Window w.cuiName = fmt.Sprintf("%d %s", pb.Id, "TK") w.labelN = pb.Name return w } */ func initGridPB(pb *guipb.Widget) *guiWidget { var w *guiWidget w = new(guiWidget) w.pb = pb w.wtype = widget.Grid w.cuiName = fmt.Sprintf("%d %s", pb.Id, "TK") w.labelN = pb.Name return w } func showTable(t *guipb.Table) { log.Info("gocui: should show table here") if t == nil { return } log.Info("gocui: table.Title", t.Title) // log.Info("gocui: need to add window here id =", t.Window.Id, t.Window.Name) if t.Grid == nil { log.Info("gocui: missing grid widget. tree plugin error") return } root := me.treeRoot.TK.(*guiWidget) parent := root.findWidgetById(int(t.Parent.Id)) if parent == nil { log.Info("gocui: show table error. parent.Id not found", t.Parent.Id) return } log.Info("gocui: need to add grid here id =", t.Grid.Id) grid := initGridPB(t.Grid) grid.parent = parent } func enableWidget(n *tree.Node) { tk := n.TK.(*guiWidget) tk.Enable() } func disableWidget(n *tree.Node) { tk := n.TK.(*guiWidget) tk.Disable() } func showWidget(n *tree.Node) { tk := n.TK.(*guiWidget) tk.Show() } func hideWidget(n *tree.Node) { tk := n.TK.(*guiWidget) if n.WidgetType == widget.Window { tk.windowFrame.Hide() tk.hideWidgets() } tk.Hide() tk.deleteWidget() } func (tk *guiWidget) deleteWidget() { log.Log(INFO, "gocui deleteWidget() looking for child to delete:", tk.cuiName) p := tk.parent for i, child := range p.children { if tk == child { log.Log(INFO, "deleteWidget() found parent with child to delete:", i, child.cuiName, child.WidgetId()) p.children = slices.Delete(p.children, i, i+1) } } tk.deleteTree() } func (tk *guiWidget) deleteTree() { for _, child := range tk.children { child.deleteTree() } tk.Hide() }