diff options
| -rw-r--r-- | init.go | 28 | ||||
| -rw-r--r-- | plugin.go | 20 |
2 files changed, 36 insertions, 12 deletions
@@ -341,7 +341,7 @@ func NoGui() bool { } // try to load andlabs, if that doesn't work, fall back to the console -func (n *Node) Default() *Node { +func (n *Node) Default() (string, error) { var err error // used to check if plugins load or not if argGui.GuiPluginHack != "" { @@ -352,19 +352,21 @@ func (n *Node) Default() *Node { if argGui.NoGui { log.Log(WARN, "--no-gui chill Winston. I don't need no gui") - return n + return "", nil } if argGui.GuiPlugin != "" { log.Log(WARN, "New.Default() try toolkit =", argGui.GuiPlugin) if n, err = n.LoadToolkit(argGui.GuiPlugin); err == nil { - return n + return argGui.GuiPlugin, nil } - log.Log(WARN, "LoadToolkit() failed for =", argGui.GuiPlugin) - return nil + log.Log(WARN, "") + log.Log(WARN, "The GUI golang plugins did not load for the", argGui.GuiPlugin) + log.Log(WARN, "GO Plugin error:", err) + return argGui.GuiPlugin, err } if me.appPlugin != "" { if n, err = n.LoadToolkit(me.appPlugin); err == nil { - return n + return me.appPlugin, nil } } @@ -374,17 +376,18 @@ func (n *Node) Default() *Node { log.Log(WARN, "gui.Default() DISPLAY not set") log.Log(WARN, "gui.Default() attempting ncurses gui") if n, err = n.LoadToolkit("gocui"); err == nil { - return n + return "gocui", nil } - return nil + log.Log(WARN, "DISPLAY is not set so GTK GUI plugin can not run and gocui also failed") + return "gocui", log.Errorf("no plugins worked. You will have to build them") } if n, err = n.LoadToolkit("andlabs"); err == nil { - return n + return "andlabs", nil } log.Log(WARN, "LoadToolkit() failed to load andlabs") if n, err = n.LoadToolkit("gocui"); err == nil { - return n + return "gocui", nil } log.Log(WARN, "LoadToolkit() failed to load gocui") @@ -401,10 +404,11 @@ func (n *Node) Default() *Node { log.Sleep(2) if n, err = n.LoadToolkit("nocui"); err == nil { - return n + return "nocui", nil } log.Log(WARN, "LoadToolkit() failed to load nocui") - return n + // if everything fails to load, try "gocui" and "nocui" since they are easy to build + return "gocui", log.Errorf("no plugins worked. You will have to build them") } // The window is destroyed but the application does not quit @@ -59,6 +59,26 @@ type aplug struct { var allPlugins []*aplug +func (n *Node) LoadToolkitNew(name string) error { + log.Log(PLUG, "LoadToolkit() START for name =", name) + plug := initPlugin(name) + if plug == nil { + return errors.New("initPlugin(" + name + ") failed") + } + plug.dead = false + + log.Log(PLUG, "LoadToolkit() sending Toolkit Init action to the plugin channel") + var a widget.Action + a.ActionType = widget.ToolkitInit + plug.pluginChan <- a + // sleep(.5) // temp hack until chan communication is setup + + // 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 nil +} + func (n *Node) LoadToolkit(name string) (*Node, error) { log.Log(PLUG, "LoadToolkit() START for name =", name) plug := initPlugin(name) |
