summaryrefslogtreecommitdiff
path: root/common/addNode.go
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2024-01-16 12:55:20 -0600
committerJeff Carr <[email protected]>2024-01-16 12:55:20 -0600
commitba95c13799740b5f55541fc5e8ab9f1d34f7e421 (patch)
tree1e04c62ea4ac6a133978e14c4d33babe46f8fe1e /common/addNode.go
parent29c39d7a1cbc1f071fa819e589fa6ed93fcb7d80 (diff)
use widget.GetString()
Signed-off-by: Jeff Carr <[email protected]>
Diffstat (limited to 'common/addNode.go')
-rw-r--r--common/addNode.go68
1 files changed, 68 insertions, 0 deletions
diff --git a/common/addNode.go b/common/addNode.go
new file mode 100644
index 0000000..be769fc
--- /dev/null
+++ b/common/addNode.go
@@ -0,0 +1,68 @@
+package main
+
+/*
+ These code should be common to all gui plugins
+
+ There are some helper functions that are probably going to be
+ the same everywhere. Mostly due to handling the binary tree structure
+ and the channel communication
+
+ For now, it's just a symlink to the 'master' version in
+ ./toolkit/nocui/common.go
+*/
+
+import (
+ "reflect"
+ "strconv"
+
+ "go.wit.com/log"
+ "go.wit.com/gui/widget"
+)
+
+// this is in common.go, do not move it
+func addNode(a *widget.Action) *node {
+ n := new(node)
+ n.WidgetType = a.WidgetType
+ n.WidgetId = a.WidgetId
+ n.ParentId = a.ParentId
+
+ n.state = a.State
+
+ // copy the data from the action message
+ n.progname = a.ProgName
+ n.value = a.Value
+ n.direction = a.Direction
+ n.strings = a.Strings
+
+ // TODO: these need to be rethought
+ n.X = a.X
+ n.Y = a.Y
+ n.W = a.W
+ n.H = a.H
+ n.AtW = a.AtW
+ n.AtH = a.AtH
+
+ // store the internal toolkit information
+ n.tk = initWidget(n)
+ // n.tk = new(guiWidget)
+
+ if (a.WidgetType == widget.Root) {
+ log.Log(INFO, "addNode() Root")
+ return n
+ }
+
+ if (me.rootNode.findWidgetId(a.WidgetId) != nil) {
+ log.Log(ERROR, "addNode() WidgetId already exists", a.WidgetId)
+ return me.rootNode.findWidgetId(a.WidgetId)
+ }
+
+ // add this new widget on the binary tree
+ n.parent = me.rootNode.findWidgetId(a.ParentId)
+ if n.parent != nil {
+ n.parent.children = append(n.parent.children, n)
+ //w := n.tk
+ //w.parent = n.parent.tk
+ //w.parent.children = append(w.parent.children, w)
+ }
+ return n
+}