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/log"
	"go.wit.com/widget"
)

// var me *TreeInfo

type TreeInfo struct {
	// this is the channel we send user events like
	// mouse clicks or keyboard events back to the program
	callback chan widget.Action

	// this is the channel we get requests to make widgets
	pluginChan chan widget.Action

	treeRoot          *Node
	NodeI             interface{}
	ActionFromChannel func(widget.Action)
	PluginName        string
}

type Node struct {
	Parent   *Node
	children []*Node

	WidgetId   int // widget ID
	WidgetType widget.WidgetType
	ParentId   int // parent ID

	State widget.State

	Strings map[string]int

	// 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
}