51 lines
1.1 KiB
Go
51 lines
1.1 KiB
Go
package tree
|
|
|
|
/*
|
|
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 (
|
|
"go.wit.com/widget"
|
|
)
|
|
|
|
// searches the binary tree for a WidgetId
|
|
func (n *Node) FindWidgetId(id int) *Node {
|
|
if n == nil {
|
|
return nil
|
|
}
|
|
|
|
if n.WidgetId == id {
|
|
return n
|
|
}
|
|
|
|
for _, child := range n.children {
|
|
newN := child.FindWidgetId(id)
|
|
if newN != nil {
|
|
return newN
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// Other goroutines must use this to access the GUI
|
|
//
|
|
// You can not acess / process the GUI thread directly from
|
|
// other goroutines. This is due to the nature of how
|
|
// Linux, MacOS and Windows work (they all work differently. suprise. surprise.)
|
|
//
|
|
// this sets the channel to send user events back from the plugin
|
|
func (me *TreeInfo) Callback(guiCallback chan widget.Action) {
|
|
me.callback = guiCallback
|
|
}
|
|
|
|
func (me *TreeInfo) PluginChannel() chan widget.Action {
|
|
return me.pluginChan
|
|
}
|