diff options
| author | Jeff Carr <[email protected]> | 2024-02-22 19:27:49 -0600 |
|---|---|---|
| committer | Jeff Carr <[email protected]> | 2024-02-22 19:27:49 -0600 |
| commit | 42048ba99741827972a60a88b8ad03c6a0e4e801 (patch) | |
| tree | b9df811e910233e45c1e5af7c8b7303d46002b52 | |
| parent | 2de5864fff19e2f794e85385d075aa8e4049d709 (diff) | |
| -rw-r--r-- | label.go | 67 | ||||
| -rw-r--r-- | mirror.go | 74 | ||||
| -rw-r--r-- | node.go | 7 | ||||
| -rw-r--r-- | table.go | 3 |
4 files changed, 82 insertions, 69 deletions
@@ -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) + } + } +} @@ -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() @@ -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) */ - |
