summaryrefslogtreecommitdiff
path: root/tree/init.go
diff options
context:
space:
mode:
Diffstat (limited to 'tree/init.go')
-rw-r--r--tree/init.go58
1 files changed, 58 insertions, 0 deletions
diff --git a/tree/init.go b/tree/init.go
new file mode 100644
index 0000000..cdbd62a
--- /dev/null
+++ b/tree/init.go
@@ -0,0 +1,58 @@
+package tree
+
+import (
+ "sync"
+ "errors"
+
+ "go.wit.com/log"
+ "go.wit.com/gui/widget"
+)
+
+var muAction sync.Mutex
+
+func (me *TreeInfo) toolkit(a widget.Action) {
+ if me.ActionFromChannel == nil {
+ log.Error(errors.New("toolkit ActionFromChannel == nil"), a.WidgetId, a.ActionType, a.WidgetType)
+ return
+ }
+ me.ActionFromChannel(a)
+}
+
+func (me *TreeInfo) catchActionChannel() {
+ defer func() {
+ if r := recover(); r != nil {
+ log.Warn("nocui YAHOOOO Recovered in simpleStdin()", r)
+ me.DoToolkitPanic()
+ panic(-1)
+ }
+ }()
+ log.Info("catchActionChannel() START")
+ for {
+ log.Info("catchActionChannel() for loop")
+ select {
+ case a := <-me.pluginChan:
+ log.Info("catchActionChannel() SELECT widget id =", a.WidgetId, a.ProgName)
+ log.Warn("catchActionChannel() STUFF", a.WidgetId, a.ActionType, a.WidgetType)
+ if a.WidgetType == widget.Dropdown {
+ log.Warn("Found dropdown", a.WidgetId, a.ActionType, a.WidgetType)
+ for i, s := range a.State.Strings {
+ log.Warn("a.State.Strings =", i, s)
+ }
+ }
+ muAction.Lock()
+ me.toolkit(a)
+ muAction.Unlock()
+ log.Info("catchActionChannel() STUFF END", a.WidgetId, a.ActionType, a.WidgetType)
+ }
+ }
+}
+
+func New() *TreeInfo {
+ me := new(TreeInfo)
+ me.pluginChan = make(chan widget.Action, 1)
+
+ log.Info("Init() start channel reciever")
+ go me.catchActionChannel()
+ log.Info("Init() END")
+ return me
+}