From 42048ba99741827972a60a88b8ad03c6a0e4e801 Mon Sep 17 00:00:00 2001 From: Jeff Carr Date: Thu, 22 Feb 2024 19:27:49 -0600 Subject: seperate mirror code --- label.go | 67 --------------------------------------------------------- mirror.go | 74 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ node.go | 7 ++++++ table.go | 3 +-- 4 files changed, 82 insertions(+), 69 deletions(-) create mode 100644 mirror.go diff --git a/label.go b/label.go index df33a5a..23e2de4 100644 --- a/label.go +++ b/label.go @@ -1,7 +1,6 @@ package gui import ( - "go.wit.com/log" "go.wit.com/widget" ) @@ -14,69 +13,3 @@ func (parent *Node) NewLabel(text string) *Node { sendAction(newNode, widget.Add) return newNode } - -// 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) - } - } -} 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) + } + } +} diff --git a/node.go b/node.go index 7c314e9..3fdea60 100644 --- a/node.go +++ b/node.go @@ -71,6 +71,13 @@ func (parent *Node) Append(n *Node) { parent.children = append(parent.children, n) n.parent = parent + if n.IsMirror() { + m := n.isMirror + text := m.label + n.label = text + n.progname = text + } + // if the parent is a grid, add it to the next cell if parent.WidgetType == widget.Grid { parent.gridIncrement() diff --git a/table.go b/table.go index 292bdd1..52a4fee 100644 --- a/table.go +++ b/table.go @@ -18,7 +18,7 @@ type mytable struct { func (t *Table) NewRow() *TableRow { r := new(myRow) - r.first = + r.first = r.Cell1 = whatever widget type first is r.Cell2 = whatever widget type song is @@ -32,4 +32,3 @@ type songTable TableDef { func makeSongTable() { tb := NewTable(5) */ - -- cgit v1.2.3