diff --git a/action.go b/action.go index cfd629f..94a48f3 100644 --- a/action.go +++ b/action.go @@ -5,6 +5,8 @@ package tree import ( + "os" + "go.wit.com/lib/protobuf/guipb" "go.wit.com/log" "go.wit.com/widget" @@ -27,6 +29,35 @@ func (me *TreeInfo) doAction(a widget.Action) { me.ToolkitInit() return } + if a.WidgetPB != nil { + log.Log(TREEWARN, "tree: got a WidgetPB") + widgetpb := new(guipb.Widgets) + err := widgetpb.Unmarshal(a.WidgetPB) + if err != nil { + log.Log(TREEWARN, "WidgetPB unmarshal err", err) + return + } + log.Log(TREEWARN, "tree: unmarshal worked!") + var wind *Node + newa := new(widget.Action) + newa.WidgetType = widget.Window + newa.WidgetId = -234 + newa.ParentId = -1234 + newa.State.Enable = true + wind = addNode(newa) + if wind == nil { + log.Log(TREEWARN, "tree: addNode() failed to add win") + return + } + wind.State.ProgName = "WinPB" + wind.State.Label = "WinPB" + me.Add(wind) + me.doWidgetsPB(widgetpb.Tree) + me.ToolkitClose() + os.Exit(0) + // me.doTable(a) + return + } if a.TablePB != nil { log.Log(TREE, "tree: got a TablePB") me.doTable(a) diff --git a/table.go b/table.go index 5d13d5a..8f981e9 100644 --- a/table.go +++ b/table.go @@ -18,6 +18,14 @@ import ( "google.golang.org/protobuf/types/known/wrapperspb" ) +func (me *TreeInfo) doWidgetsPB(w *guipb.Widget) { + log.Log(TREEWARN, "tree:", w.Id, w.Name) + + for _, child := range w.Children { + me.doWidgetsPB(child) + } +} + func (me *TreeInfo) doTable(a widget.Action) { if a.TablePB == nil { log.Log(TREE, "tree: action didn't have a Table PB")