updates for v0.22 gui changes

This commit is contained in:
Jeff Carr 2024-11-05 01:41:44 -06:00
parent 87b53978f0
commit 067b28b7e7
4 changed files with 41 additions and 21 deletions

View File

@ -6,6 +6,7 @@ all:
@echo It creates a binary tree of widgets @echo It creates a binary tree of widgets
@echo The widgets are things like Windows, Buttons, Labels, etc @echo The widgets are things like Windows, Buttons, Labels, etc
@echo @echo
@go vet
note-about-golang: note-about-golang:
ifeq ($(GO111MODULE),) ifeq ($(GO111MODULE),)

View File

@ -201,6 +201,12 @@ myButton = myGroup.NewButton("hit ball", nil).SetName("HIT")
myButton.GetName() should return "HIT" myButton.GetName() should return "HIT"
n = Find("HIT") should return myButton 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 { func (n *Node) SetProgName(s string) *Node {
if !n.Ready() { if !n.Ready() {
return n return n
@ -335,7 +341,6 @@ func (n *Node) Ready() bool {
panic("ready got nil") panic("ready got nil")
// TODO: figure out if you can identify the code trace // TODO: figure out if you can identify the code trace
// to help find the root cause // to help find the root cause
return false
} }
return true return true
} }

37
main.go
View File

@ -262,22 +262,47 @@ func New() *Node {
// try to load andlabs, if that doesn't work, fall back to the console // try to load andlabs, if that doesn't work, fall back to the console
func (n *Node) Default() *Node { func (n *Node) Default() *Node {
var err error
if argGui.GuiPlugin != "" { if argGui.GuiPlugin != "" {
log.Log(WARN, "New.Default() try toolkit =", 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 // if DISPLAY isn't set, return since gtk can't load
// TODO: figure out how to check what to do in macos and mswindows // TODO: figure out how to check what to do in macos and mswindows
if os.Getenv("DISPLAY") == "" { if os.Getenv("DISPLAY") == "" {
if n.LoadToolkit("gocui") == nil { if n, err = n.LoadToolkit("gocui"); err == nil {
log.Log(WARN, "New() failed to load gocui")
}
return n return n
} }
if n.LoadToolkit("andlabs") != nil { log.Log(WARN, "LoadToolkit() failed to load gocui")
}
if n, err = n.LoadToolkit("andlabs"); err == nil {
return n return n
} }
n.LoadToolkit("gocui") log.Log(WARN, "LoadToolkit() failed to load andlabs")
if n, err = n.LoadToolkit("gocui"); err == nil {
return n
}
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
}
log.Log(WARN, "LoadToolkit() failed to load nocui")
return n return n
} }

View File

@ -7,6 +7,7 @@ package gui
import ( import (
"embed" "embed"
"errors"
"os" "os"
"plugin" "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) log.Log(PLUG, "LoadToolkit() START for name =", name)
plug := initPlugin(name) plug := initPlugin(name)
if plug == nil { if plug == nil {
log.Log(WARN, "LoadToolkit() FAILED name =", name) return n, errors.New("initPlugin(" + name + ") failed")
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
} }
plug.dead = false 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 // TODO: find a new way to do this that is locking, safe and accurate
me.rootNode.redraw(plug) me.rootNode.redraw(plug)
log.Log(PLUG, "LoadToolkit() END for name =", name) log.Log(PLUG, "LoadToolkit() END for name =", name)
return n return n, nil
} }
func (n *Node) CloseToolkit(name string) bool { func (n *Node) CloseToolkit(name string) bool {