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)  */ -  | 
