diff options
Diffstat (limited to 'table.go')
| -rw-r--r-- | table.go | 96 |
1 files changed, 85 insertions, 11 deletions
@@ -5,6 +5,8 @@ package tree import ( + "fmt" + "go.wit.com/lib/protobuf/guipb" "go.wit.com/log" "go.wit.com/widget" @@ -26,15 +28,15 @@ func (me *TreeInfo) doTable(a widget.Action) { log.Info("unmarshal error", err, "data len =", len(a.TablePB)) return } - log.Info("dumpTables:") + log.Info("tree.doTables() start. # of tables:", len(pb.Tables)) all := pb.All() for all.Scan() { t := all.Next() - for i, o := range t.Order { - log.Info("got order:", t.Title, i, o) - } - dumpTable(t) - me.ShowTable(t) + // for i, o := range t.Order { + // log.Info("got order:", t.Title, i, o) + // } + // dumpTable(t) + // me.ShowTable(t) me.makeTable(t) } } @@ -59,19 +61,91 @@ func (win *Node) makeWindowGrid(pb *guipb.Widget) *Node { return AddNode(a) } +func (grid *Node) makeGridLabel(pb *guipb.Widget, w int, h int) *Node { + a := new(widget.Action) + a.WidgetType = widget.Label + a.WidgetId = int(pb.Id) + a.ParentId = grid.WidgetId + a.State.Enable = true + a.State.Label = pb.Name + a.State.AtW = w + a.State.AtH = h + + return AddNode(a) +} + func (me *TreeInfo) makeTable(t *guipb.Table) { win := makeTableWindow(t.Window) grid := win.makeWindowGrid(t.Grid) me.Add(win) me.Add(grid) log.Info("tree: makeTable() finished add win & grid") + var h int = 0 + var w int = 0 + for _, name := range t.Order { + // log.Info("got order:", t.Title, name) + if me.addTableRow(t, grid, name, w) { + log.Info("tree:row() COLUMN GOOD", t.Title, name, w, h) + } else { + log.Info("tree:row() COLOMN FAIL", t.Title, name, w, h) + } - for i, r := range t.StringRows { - log.Info("got string row:", t.Title, i, r.Header, r.Vals) + w += 1 + } + + /* + 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: add to grid here", v.Id, v.Name) + lab := grid.makeGridLabel(v, w, h) + me.Add(lab) + h += 1 + } + } + */ +} + +func (me *TreeInfo) addTableRow(t *guipb.Table, grid *Node, name string, w int) bool { + var h int = 0 + for _, r := range t.StringRows { + if name != r.Header.Name { + // log.Info("skip string row:", r.Header.Name, "!=", name) + continue + } + log.Info("tree: Add()ing to grid here", r.Header.Id, r.Header.Name, w, h) + head := grid.makeGridLabel(r.Header, w, h) + me.Add(head) + h += 1 for _, v := range r.Widgets { - log.Info("tree: add to grid here", v.Id, v.Name) + log.Info("tree: Add()ing to grid here", v.Id, v.Name, w, h) + lab := grid.makeGridLabel(v, w, h) + me.Add(lab) + h += 1 } + return true } + + for _, r := range t.IntRows { + if name != r.Header.Name { + // log.Info("skip sint row:", r.Header.Name, "!=", name) + continue + } + log.Info("tree: Add()ing to grid here", r.Header.Id, r.Header.Name, w, h) + head := grid.makeGridLabel(r.Header, w, h) + me.Add(head) + h += 1 + for _, v := range r.Widgets { + v.Name = fmt.Sprintf("%d", v.Size) + log.Info("tree: Add()ing to grid here", v.Id, v.Name, w, h) + lab := grid.makeGridLabel(v, w, h) + me.Add(lab) + h += 1 + } + return true + } + + return false } func dumpTable(t *guipb.Table) { @@ -79,13 +153,13 @@ func dumpTable(t *guipb.Table) { 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) + log.Info("got string row:", t.Title, i, r.Header.Name, 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) + log.Info("got int row:", t.Title, i, r.Header.Name, r.Vals) for _, v := range r.Widgets { log.Info("tree: got int widget:", v.Id, v.Size) } |
