From 067b28b7e71af12843d1b1a1968b63a37bc4ad86 Mon Sep 17 00:00:00 2001 From: Jeff Carr Date: Tue, 5 Nov 2024 01:41:44 -0600 Subject: updates for v0.22 gui changes --- Makefile | 1 + common.go | 7 ++++++- main.go | 35 ++++++++++++++++++++++++++++++----- plugin.go | 19 ++++--------------- 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//") + 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//") - 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 { -- cgit v1.2.3