summaryrefslogtreecommitdiff
path: root/mirror.go
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2024-02-22 19:27:49 -0600
committerJeff Carr <[email protected]>2024-02-22 19:27:49 -0600
commit42048ba99741827972a60a88b8ad03c6a0e4e801 (patch)
treeb9df811e910233e45c1e5af7c8b7303d46002b52 /mirror.go
parent2de5864fff19e2f794e85385d075aa8e4049d709 (diff)
seperate mirror codev0.21.0v0.20.9
Diffstat (limited to 'mirror.go')
-rw-r--r--mirror.go74
1 files changed, 74 insertions, 0 deletions
diff --git a/mirror.go b/mirror.go
new file mode 100644
index 0000000..a89b186
--- /dev/null
+++ b/mirror.go
@@ -0,0 +1,74 @@
+package gui
+
+// an experiemental idea
+
+import (
+ "go.wit.com/log"
+ "go.wit.com/widget"
+)
+
+// an experiemental idea
+// basically, this is like a cell in a spreadsheet that is viable
+// in one place but also exists sonewhere else
+func (parent *Node) Mirror(m *Node) *Node {
+ switch m.WidgetType {
+ case widget.Label:
+ text := m.label
+ newNode := parent.newNode(text, widget.Label)
+ newNode.label = text
+ newNode.progname = text
+ newNode.isMirror = m
+ m.hasMirrors = append(m.hasMirrors, newNode)
+
+ // inform the toolkits
+ sendAction(newNode, widget.Add)
+ return newNode
+ default:
+ return nil
+ }
+}
+
+// make a mirror widget without a parent
+func RawMirror(m *Node) *Node {
+ switch m.WidgetType {
+ case widget.Label:
+ newNode := rawNode("MIRROR", widget.Label)
+ newNode.isMirror = m
+ m.hasMirrors = append(m.hasMirrors, newNode)
+ return newNode
+ default:
+ return nil
+ }
+}
+
+func (n *Node) IsMirror() bool {
+ if n.isMirror == nil {
+ return false
+ }
+ return true
+}
+
+func (n *Node) hasMirror() bool {
+ if len(n.hasMirrors) == 0 {
+ return false
+ }
+ return true
+}
+
+func (n *Node) updateMirrors() {
+ if n.IsMirror() {
+ // n is a mirror of something else
+ return
+ }
+ for _, m := range n.hasMirrors {
+ switch m.WidgetType {
+ case widget.Label:
+ m.label = n.label
+ m.changed = true
+ // inform the toolkits
+ sendAction(m, widget.SetText)
+ default:
+ log.Log(WARN, "can not mirror widget type", m.WidgetType)
+ }
+ }
+}