summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile1
-rw-r--r--common.go7
-rw-r--r--main.go35
-rw-r--r--plugin.go19
4 files changed, 41 insertions, 21 deletions
diff --git a/Makefile b/Makefile
index ebefe43..f46e907 100644
--- a/Makefile
+++ b/Makefile
@@ -6,6 +6,7 @@ all:
@echo It creates a binary tree of widgets
@echo The widgets are things like Windows, Buttons, Labels, etc
@echo
+ @go vet
note-about-golang:
ifeq ($(GO111MODULE),)
diff --git a/common.go b/common.go
index 8d7f8c6..6241b12 100644
--- a/common.go
+++ b/common.go
@@ -201,6 +201,12 @@ myButton = myGroup.NewButton("hit ball", nil).SetName("HIT")
myButton.GetName() should return "HIT"
n = Find("HIT") should return myButton
*/
+// switch to this
+// todo: there are better ways than any of this once protobuf
+func (n *Node) SetRefName(s string) *Node {
+ return n.SetProgName(s)
+}
+
func (n *Node) SetProgName(s string) *Node {
if !n.Ready() {
return n
@@ -335,7 +341,6 @@ func (n *Node) Ready() bool {
panic("ready got nil")
// TODO: figure out if you can identify the code trace
// to help find the root cause
- return false
}
return true
}
diff --git a/main.go b/main.go
index e2b4249..bf88c2c 100644
--- a/main.go
+++ b/main.go
@@ -262,22 +262,47 @@ func New() *Node {
// try to load andlabs, if that doesn't work, fall back to the console
func (n *Node) Default() *Node {
+ var err error
if argGui.GuiPlugin != "" {
log.Log(WARN, "New.Default() try toolkit =", argGui.GuiPlugin)
- return n.LoadToolkit(argGui.GuiPlugin)
+ if n, err = n.LoadToolkit(argGui.GuiPlugin); err == nil {
+ return n
+ }
+ log.Log(WARN, "LoadToolkit() failed for =", argGui.GuiPlugin)
}
// if DISPLAY isn't set, return since gtk can't load
// TODO: figure out how to check what to do in macos and mswindows
if os.Getenv("DISPLAY") == "" {
- if n.LoadToolkit("gocui") == nil {
- log.Log(WARN, "New() failed to load gocui")
+ if n, err = n.LoadToolkit("gocui"); err == nil {
+ return n
}
+ log.Log(WARN, "LoadToolkit() failed to load gocui")
+ }
+ if n, err = n.LoadToolkit("andlabs"); err == nil {
+ return n
+ }
+ log.Log(WARN, "LoadToolkit() failed to load andlabs")
+
+ if n, err = n.LoadToolkit("gocui"); err == nil {
return n
}
- if n.LoadToolkit("andlabs") != nil {
+ log.Log(WARN, "LoadToolkit() failed to load gocui")
+
+ log.Log(WARN, "")
+ log.Log(WARN, "### Error ####")
+ log.Log(WARN, "The GUI golang plugins did not load.")
+ log.Log(WARN, "You will have to rebuild them")
+ log.Log(WARN, "go-clone go.wit.com/toolkits/<pick one>/")
+ log.Log(WARN, "TODO: try to rebuild them here")
+ log.Log(WARN, "TODO: falling back to STDIN interface")
+ log.Log(WARN, "### Error ####")
+ log.Log(WARN, "")
+ log.Sleep(7)
+
+ if n, err = n.LoadToolkit("nocui"); err == nil {
return n
}
- n.LoadToolkit("gocui")
+ log.Log(WARN, "LoadToolkit() failed to load nocui")
return n
}
diff --git a/plugin.go b/plugin.go
index e99f943..2c0e778 100644
--- a/plugin.go
+++ b/plugin.go
@@ -7,6 +7,7 @@ package gui
import (
"embed"
+ "errors"
"os"
"plugin"
@@ -279,23 +280,11 @@ func (n *Node) ListToolkits() {
}
}
-func (n *Node) LoadToolkit(name string) *Node {
+func (n *Node) LoadToolkit(name string) (*Node, error) {
log.Log(PLUG, "LoadToolkit() START for name =", name)
plug := initPlugin(name)
if plug == nil {
- log.Log(WARN, "LoadToolkit() FAILED name =", name)
- log.Log(WARN, "")
- log.Log(WARN, "### Error ####")
- log.Log(WARN, "The GUI golang plugins did not load.")
- log.Log(WARN, "You will have to rebuild them")
- log.Log(WARN, "go-clone go.wit.com/toolkits/<pick one>/")
- log.Log(WARN, "TODO: try to rebuild them here")
- log.Log(WARN, "TODO: fall back to STDIN interface")
- log.Log(WARN, "### Error ####")
- log.Log(WARN, "")
- log.Log(WARN, "")
- log.Sleep(7)
- return n
+ return n, errors.New("initPlugin(" + name + ") failed")
}
plug.dead = false
@@ -308,7 +297,7 @@ func (n *Node) LoadToolkit(name string) *Node {
// TODO: find a new way to do this that is locking, safe and accurate
me.rootNode.redraw(plug)
log.Log(PLUG, "LoadToolkit() END for name =", name)
- return n
+ return n, nil
}
func (n *Node) CloseToolkit(name string) bool {