summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--action.go2
-rw-r--r--addNode.go6
-rw-r--r--table.go51
3 files changed, 43 insertions, 16 deletions
diff --git a/action.go b/action.go
index 484ba94..f2ef7e3 100644
--- a/action.go
+++ b/action.go
@@ -134,7 +134,7 @@ func (me *TreeInfo) doAction(a widget.Action) {
me.Hide(n)
}
log.Info("tree: todo: remove child from parent")
- n.DeleteNode()
+ me.DeleteNode(n)
// now remove the child from the parent
default:
log.Log(TREEWARN, "tree.Action() unknown action", a.ActionType, "on wId", a.WidgetId)
diff --git a/addNode.go b/addNode.go
index 981cc62..416dd3c 100644
--- a/addNode.go
+++ b/addNode.go
@@ -6,6 +6,8 @@ import (
)
func (me *TreeInfo) AddNode(a *widget.Action) *Node {
+ // me.Lock()
+ // defer me.Unlock()
return AddNode(a)
}
@@ -54,7 +56,9 @@ func AddNode(a *widget.Action) *Node {
return n
}
-func (n *Node) DeleteNode() {
+func (me *TreeInfo) DeleteNode(n *Node) {
+ me.Lock()
+ defer me.Unlock()
p := n.Parent
for i, child := range p.children {
log.Log(TREE, "parent has child:", i, child.WidgetId, child.GetProgName())
diff --git a/table.go b/table.go
index d6d07a4..50e32f2 100644
--- a/table.go
+++ b/table.go
@@ -47,12 +47,29 @@ func (me *TreeInfo) doTable(a widget.Action) {
// log.Info("TREE already has UUID", i, ot.Uuid)
if t.Uuid == ot.Uuid {
log.Info("TREE found UUID! update table here", i, ot.Uuid)
+ if ot.Grid == nil {
+ log.Info("TREE found UUID! ot.grid.Id = nil. need to find grid id here")
+ return
+ } else {
+ log.Info("TREE found UUID! grid.Id =", ot.Grid.Id)
+ t.Grid = ot.Grid
+ }
+ if t.Grid == nil {
+ log.Info("TREE found UUID! grid.Id = nil. need to find grid id here")
+ return
+ }
+ log.Info("TREE found UUID! update table here", i, ot.Uuid, "grid.Id =", t.Grid.Id)
me.updateTable(t)
return
}
}
me.currentTables = append(me.currentTables, t)
+ if t.Grid == nil {
+ log.Info("NEW TREE ERROR: grid.Id = nil need to set grid id here")
+ } else {
+ log.Info("NEW TREE: grid.Id =", t.Grid.Id)
+ }
me.makeTable(t)
}
}
@@ -73,9 +90,27 @@ func (grid *Node) makeGridLabel(pb *guipb.Widget, w int, h int) *Node {
}
func (me *TreeInfo) updateTable(t *guipb.Table) {
- // log.Info("todo: compare table here...")
+ grid := FindWidgetId(int(t.Grid.Id))
+ if grid == nil {
+ log.Info("tree: updateTable() failed to make grid")
+ return
+ }
+ // delete the existing table
+ me.DeleteNode(grid)
+
+ // remake the table
+ me.Add(grid)
+ var h int = 0
+ var w int = 0
for _, name := range t.Order {
- me.updateRow(t, name)
+ // 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)
+ }
+
+ w += 1
}
}
@@ -169,18 +204,6 @@ func (me *TreeInfo) makeTable(t *guipb.Table) {
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 {