package tree /* 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 */ import ( "go.wit.com/lib/protobuf/guipb" "go.wit.com/widget" ) // TODO: use protocol buffers // this is the root node of the binary tree // There is only one of these per application var treeRoot *Node type TreeInfo struct { ok bool // indicates the plugin actually initialized PluginName string // used to identify the plugin config *ToolkitConfigs // protobuf of plugin settings callback chan widget.Action // mouse clicks or keyboard events back to the program pluginChan chan widget.Action // this is the channel we get requests to make widgets Add func(*Node) // add a new widget AddText func(*Node, string) // add a string to a dropdown widget SetText func(*Node, string) // set the text of a widget SetTitle func(*Node, string) // update the title of a window or tab SetLabel func(*Node, string) // update the "label" (aka "Name") for a widget SetChecked func(*Node, bool) // set the state of a checkbox ToolkitClose func() // shutdown and unload the plugin Show func(*Node) // show a widget Hide func(*Node) // hide a widget Enable func(*Node) // enable a widget Disable func(*Node) // disable a widget ShowTable func(*guipb.Table) // attempt at sending a whole table // NodeI interface{} // is an interface useful here? // NodeAction func(*Node, widget.ActionType) // deprecate } type Node struct { Parent *Node children []*Node WidgetId int // widget ID WidgetType widget.WidgetType ParentId int // parent ID State widget.State ddStrings []string // the internal plugin toolkit structure // in the gtk plugin, it has gtk things like margin & border settings // in the text console one, it has text console things like colors for menus & buttons TK any }