From 4ad47a5d1b506bceebedbbbf12562e260fc4afd5 Mon Sep 17 00:00:00 2001 From: Jeff Carr Date: Wed, 5 Mar 2025 20:14:23 -0600 Subject: start passing guipb.Widget --- init.go | 16 ++++++++++------ table.go | 35 ++++++++++++++++++----------------- 2 files changed, 28 insertions(+), 23 deletions(-) diff --git a/init.go b/init.go index 5a71eda..6605bc4 100644 --- a/init.go +++ b/init.go @@ -234,14 +234,18 @@ func (n *Node) gotUserEvent(a widget.Action) { return } - if ok, pb := n.isWidgetInTable(); ok { - log.Log(WARN, "widget is in pb table", n.id, n.progname, a.Value) - if pb != nil { - log.Log(WARN, "found pb table", pb.GetUuid()) - pb.Custom(n.id) + if ok, pb, w := n.isWidgetInTable(a.WidgetId); ok { + log.Log(WARN, "gui.gotUserEvent() action =", a) + log.Log(WARN, "gui.gotUserEvent() widget is in pb table", n.id, n.progname, a.Value) + if w == nil { + log.Log(WARN, "gui.gotUserEvent() widget == nil", n.id, n.progname, a.Value) + return } + log.Log(WARN, "gui.gotUserEvent() found pb table", pb.GetUuid()) + pb.Custom(w) + return } else { - log.Log(WARN, "widget is not in pb table", n.id, n.progname, a.Value) + log.Log(WARN, "gui.gotUserEvent() widget is not in pb table", n.id, n.progname, a.Value) } switch n.WidgetType { diff --git a/table.go b/table.go index 6210680..7b0a7e3 100644 --- a/table.go +++ b/table.go @@ -40,18 +40,18 @@ func (parent *Node) ShowTableCallback(pb *guipb.Table, f func(id int)) { } */ -func (n *Node) findInTablePB(pb *guipb.Table) *guipb.Widget { +func (n *Node) findInTablePB(pb *guipb.Table, id int) *guipb.Widget { if n.tablepb == nil { - log.Info("SOMETHING WAS WRONG. gui.findInTablePB() n.tablepb == nil for widget id", n.id) + log.Info("SOMETHING WAS WRONG. gui.findInTablePB() n.tablepb == nil for widget id", id) return nil } for _, r := range pb.StringRows { - if r.Header.Id == int64(n.id) { + if r.Header.Id == int64(id) { log.Info("gui.findInTablePB() found widget", r.Header) return r.Header } for _, w := range r.Widgets { - if w.Id == int64(n.id) { + if w.Id == int64(id) { log.Info("gui.findInTablePB() found widget", w) return w } @@ -59,12 +59,13 @@ func (n *Node) findInTablePB(pb *guipb.Table) *guipb.Widget { } for _, r := range pb.ButtonRows { - if r.Header.Id == int64(n.id) { + if r.Header.Id == int64(id) { log.Info("gui.findInTablePB() found widget", r.Header) return r.Header } for _, w := range r.Widgets { - if w.Id == int64(n.id) { + log.Info("gui.findInTablePB() checking widget", w) + if w.Id == int64(id) { log.Info("gui.findInTablePB() found widget", w) return w } @@ -72,12 +73,12 @@ func (n *Node) findInTablePB(pb *guipb.Table) *guipb.Widget { } for _, r := range pb.IntRows { - if r.Header.Id == int64(n.id) { + if r.Header.Id == int64(id) { log.Info("gui.findInTablePB() found widget", r.Header) return r.Header } for _, w := range r.Widgets { - if w.Id == int64(n.id) { + if w.Id == int64(id) { log.Info("gui.findInTablePB() found widget", w) return w } @@ -85,33 +86,33 @@ func (n *Node) findInTablePB(pb *guipb.Table) *guipb.Widget { } for _, r := range pb.TimeRows { - if r.Header.Id == int64(n.id) { + if r.Header.Id == int64(id) { log.Info("gui.findInTablePB() found widget", r.Header) return r.Header } for _, w := range r.Widgets { - if w.Id == int64(n.id) { + if w.Id == int64(id) { log.Info("gui.findInTablePB() found widget", w) return w } } } - log.Info("SOMETHING WAS WRONG. gui.findInTablePB() didn't find widget id", n.id) + log.Info("SOMETHING WAS WRONG. gui.findInTablePB() didn't find widget id", id) return nil } -func (n *Node) isWidgetInTable() (bool, *guipb.Table) { +func (n *Node) isWidgetInTable(id int) (bool, *guipb.Table, *guipb.Widget) { if n.id == 0 { - return false, nil + return false, nil, nil } if n.progname == "gridtablePB" { - n.findInTablePB(n.tablepb) - return true, n.tablepb + w := n.findInTablePB(n.tablepb, id) + return true, n.tablepb, w } if n.parent == nil { - return false, nil + return false, nil, nil } - return n.parent.isWidgetInTable() + return n.parent.isWidgetInTable(id) } func (parent *Node) ShowTable(pb *guipb.Table) { -- cgit v1.2.3