summaryrefslogtreecommitdiff
path: root/tree/event.go
diff options
context:
space:
mode:
Diffstat (limited to 'tree/event.go')
-rw-r--r--tree/event.go88
1 files changed, 88 insertions, 0 deletions
diff --git a/tree/event.go b/tree/event.go
new file mode 100644
index 0000000..ee74138
--- /dev/null
+++ b/tree/event.go
@@ -0,0 +1,88 @@
+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/gui/widget"
+)
+
+func (me *TreeInfo) DoEnableDebugger() {
+ if (me.callback == nil) {
+ log.Warn("DoUserEvent() toolkit panic() callback == nil")
+ return
+ }
+ var a widget.Action
+ a.ActionType = widget.EnableDebug
+ a.ProgName = me.PluginName
+ me.callback <- a
+ return
+}
+
+func (me *TreeInfo) DoToolkitLoad(s string) {
+ if (me.callback == nil) {
+ log.Warn("DoUserEvent() toolkit load callback == nil")
+ return
+ }
+ var a widget.Action
+ a.ActionType = widget.ToolkitLoad
+ a.ProgName = me.PluginName
+ a.Value = s
+ log.Warn("DoUserEvent() START: toolkit load", s)
+ me.callback <- a
+ log.Warn("DoUserEvent() END: toolkit load", s)
+ return
+}
+
+func (me *TreeInfo) DoToolkitPanic() {
+ if (me.callback == nil) {
+ log.Warn("DoUserEvent() toolkit panic() callback == nil")
+ return
+ }
+ var a widget.Action
+ a.ActionType = widget.ToolkitPanic
+ a.ProgName = me.PluginName
+ log.Info("DoUserEvent() START: toolkit panic()")
+ me.callback <- a
+ log.Info("DoUserEvent() END: toolkit panic()")
+ return
+}
+
+func (me *TreeInfo) DoWindowCloseEvent(n *Node) {
+ if (me.callback == nil) {
+ log.Warn("DoUserEvent() callback == nil", n.WidgetId)
+ return
+ }
+ var a widget.Action
+ a.WidgetId = n.WidgetId
+ a.ActionType = widget.CloseWindow
+ log.Info("DoUserEvent() START: user closed the window", n.GetProgName())
+ me.callback <- a
+ log.Info("DoUserEvent() END: user closed the window", n.GetProgName())
+ return
+}
+
+// Other goroutines must use this to access the GUI
+func (me *TreeInfo) DoUserEvent(n *Node) {
+ if (me.callback == nil) {
+ log.Warn("DoUserEvent() callback == nil", n.WidgetId)
+ return
+ }
+ var a widget.Action
+ a.WidgetId = n.WidgetId
+ a.Value = n.State.Value
+ a.ActionType = widget.User
+ log.Info("DoUserEvent() START: send a user event to the callback channel")
+ me.callback <- a
+ log.Info("DoUserEvent() END: sent a user event to the callback channel")
+ return
+}