// Although most code from WIT.COM Inc is under the GPL // This code is more generic because it must be able // to be used in any GUI plugin package tree import ( "go.wit.com/lib/protobuf/guipb" "go.wit.com/log" "go.wit.com/widget" ) // repeated string order = 1; // // repeated StringRow StringRows = 2; // repeated IntRow IntRows = 3; // repeated TimeRow TimeRows = 4; // repeated BoolRow BoolRows = 5; func (me *TreeInfo) doTable(a widget.Action) { if a.TablePB == nil { log.Log(TREE, "tree: action didn't have a Table PB") return } pb := guipb.NewTables() if err := pb.Unmarshal(a.TablePB); err != nil { log.Info("unmarshal error", err, "data len =", len(a.TablePB)) return } log.Info("dumpTables:") all := pb.All() for all.Scan() { t := all.Next() for i, o := range t.Order { log.Info("got order:", t.Title, i, o) } me.ShowTable(t) dumpTable(t) } } func makeTable(t *guipb.Table) { } func dumpTable(t *guipb.Table) { for i, o := range t.Order { log.Info("got order:", t.Title, i, o) } for i, r := range t.StringRows { log.Info("got string row:", t.Title, i, r.Header, r.Vals) for _, v := range r.Widgets { log.Info("tree: got string widget:", v.Id, v.Name) } } for i, r := range t.IntRows { log.Info("got int row:", t.Title, i, r.Header, r.Vals) for _, v := range r.Widgets { log.Info("tree: got int widget:", v.Id, v.Size) } } } type TreeTable struct { PB *guipb.Table /* hostnames []string columns []*gui.NodeColumn order []*gui.NodeColumn */ }