both gocui and andlabs worked with buttondemo
Signed-off-by: Jeff Carr <jcarr@wit.com>
This commit is contained in:
parent
56f8246bca
commit
a235371d1a
|
@ -127,7 +127,7 @@ Creates a window helpful for debugging this package
|
||||||
|
|
||||||
`func Indent(b bool, a ...interface{})`
|
`func Indent(b bool, a ...interface{})`
|
||||||
|
|
||||||
### func [LoadPlugin](/main.go#L172)
|
### func [LoadPlugin](/main.go#L114)
|
||||||
|
|
||||||
`func LoadPlugin(name string) bool`
|
`func LoadPlugin(name string) bool`
|
||||||
|
|
||||||
|
@ -149,7 +149,7 @@ loads and initializes a toolkit (andlabs/ui, gocui, etc)
|
||||||
|
|
||||||
`func ShowDebugValues()`
|
`func ShowDebugValues()`
|
||||||
|
|
||||||
### func [StandardExit](/main.go#L261)
|
### func [StandardExit](/main.go#L155)
|
||||||
|
|
||||||
`func StandardExit()`
|
`func StandardExit()`
|
||||||
|
|
||||||
|
@ -190,7 +190,7 @@ var Config GuiConfig
|
||||||
The Node is a binary tree. This is how all GUI elements are stored
|
The Node is a binary tree. This is how all GUI elements are stored
|
||||||
simply the name and the size of whatever GUI element exists
|
simply the name and the size of whatever GUI element exists
|
||||||
|
|
||||||
#### func [New](/main.go#L190)
|
#### func [New](/main.go#L132)
|
||||||
|
|
||||||
`func New() *Node`
|
`func New() *Node`
|
||||||
|
|
||||||
|
|
112
main.go
112
main.go
|
@ -44,64 +44,6 @@ func init() {
|
||||||
go watchCallback()
|
go watchCallback()
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
func doGuiChan() {
|
|
||||||
for {
|
|
||||||
select {
|
|
||||||
case <-Config.ActionCh1:
|
|
||||||
log(true, "CHANNEL ACTION 1 !!!!!")
|
|
||||||
return
|
|
||||||
case <-Config.ActionCh2:
|
|
||||||
log(true, "CHANNEL ACTION 2 !!!!!")
|
|
||||||
return
|
|
||||||
default:
|
|
||||||
log(true, "doGuiChan() nothing")
|
|
||||||
}
|
|
||||||
log(true, "doGuiChan() for()")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
// TODO: add logic to just load the 1st 'most common' gui toolkit
|
|
||||||
// and allow the 'go-arg' command line args to override the defaults
|
|
||||||
func InitPlugins(names []string) []string {
|
|
||||||
log(debugGui, "Starting gui.Init()")
|
|
||||||
|
|
||||||
for _, aplug := range allPlugins {
|
|
||||||
log(debugGui, "LoadToolkit() already loaded toolkit plugin =", aplug.name)
|
|
||||||
for _, name := range names {
|
|
||||||
if (name == aplug.name) {
|
|
||||||
return []string{name}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// try to load each plugin in the order passed to this function
|
|
||||||
for _, name := range names {
|
|
||||||
aPlug := LoadToolkit(name)
|
|
||||||
if (aPlug != nil) {
|
|
||||||
// exit because it worked!
|
|
||||||
return []string{name}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// the program didn't specify a plugin. Try to load one
|
|
||||||
// TODO: detect the OS & user preferences to load the best one
|
|
||||||
// TODO: commented out Init() on 02/26/2023 because I'm not sure how to run it correctly
|
|
||||||
andlabsPlug := LoadToolkit("andlabs")
|
|
||||||
if (andlabsPlug != nil) {
|
|
||||||
return []string{}
|
|
||||||
}
|
|
||||||
|
|
||||||
gocuiPlug := LoadToolkit("andlabs")
|
|
||||||
if (gocuiPlug != nil) {
|
|
||||||
return []string{}
|
|
||||||
}
|
|
||||||
return []string{}
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
func watchCallback() {
|
func watchCallback() {
|
||||||
log(logInfo, "watchCallback() START")
|
log(logInfo, "watchCallback() START")
|
||||||
for {
|
for {
|
||||||
|
@ -196,60 +138,12 @@ func New() *Node {
|
||||||
if (os.Getenv("DISPLAY") == "") {
|
if (os.Getenv("DISPLAY") == "") {
|
||||||
return Config.rootNode
|
return Config.rootNode
|
||||||
}
|
}
|
||||||
// if (LoadPlugin("andlabs")) {
|
if (LoadPlugin("andlabs")) {
|
||||||
// log(logError, "New() failed to load andlabs")
|
log(logError, "New() failed to load andlabs")
|
||||||
// }
|
}
|
||||||
return Config.rootNode
|
return Config.rootNode
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
// This should not pass a function
|
|
||||||
func Main(f func()) {
|
|
||||||
log(debugGui, "Starting gui.Main() (using gtk via andlabs/ui)")
|
|
||||||
|
|
||||||
// TODO: this is linux only
|
|
||||||
// TODO: detect if this was run from the command line (parent == bash?)
|
|
||||||
// if DISPLAY is not set, don't even bother with loading andlabs
|
|
||||||
if (os.Getenv("DISPLAY") == "") {
|
|
||||||
InitPlugins([]string{"gocui"})
|
|
||||||
} else {
|
|
||||||
// InitPlugins([]string{"andlabs", "gocui"})
|
|
||||||
InitPlugins([]string{"gocui", "andlabs"})
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, aplug := range allPlugins {
|
|
||||||
log(debugGui, "NewButton() toolkit plugin =", aplug.name)
|
|
||||||
if (aplug.MainOk) {
|
|
||||||
log(debugGui, "Main() Already Ran Main()", aplug.name)
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
if (aplug.Main == nil) {
|
|
||||||
log(debugGui, "Main() Main == nil", aplug.name)
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
aplug.MainOk = true
|
|
||||||
if (aplug.Callback == nil) {
|
|
||||||
// TODO: don't load the module if this failed ?
|
|
||||||
// if Callback() isn't set in the plugin, no information can be sent to it!
|
|
||||||
log(debugError, "SERIOUS ERROR: plugin Callback() == nil. nothing will work for toolkit", aplug.name)
|
|
||||||
} else {
|
|
||||||
aplug.Callback(Config.guiChan)
|
|
||||||
}
|
|
||||||
|
|
||||||
if (aplug.PluginChannel == nil) {
|
|
||||||
// TODO: don't load the module if this failed ?
|
|
||||||
// if Callback() isn't set in the plugin, no information can be sent to it!
|
|
||||||
log(debugError, "ERROR: plugin does not implement a send channel. toolkit =", aplug.name)
|
|
||||||
} else {
|
|
||||||
aplug.pluginChan = aplug.PluginChannel()
|
|
||||||
}
|
|
||||||
|
|
||||||
aplug.Main(f)
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
// The window is destroyed but the application does not quit
|
// The window is destroyed but the application does not quit
|
||||||
func (n *Node) StandardClose() {
|
func (n *Node) StandardClose() {
|
||||||
log(debugGui, "wit/gui Standard Window Close. name =", n.Name)
|
log(debugGui, "wit/gui Standard Window Close. name =", n.Name)
|
||||||
|
|
|
@ -34,10 +34,10 @@ func catchActionChannel() {
|
||||||
log(logError,"catchActionChannel() ui.Main() START")
|
log(logError,"catchActionChannel() ui.Main() START")
|
||||||
log(logError,"catchActionChannel() ui.Main() START")
|
log(logError,"catchActionChannel() ui.Main() START")
|
||||||
sleep(1)
|
sleep(1)
|
||||||
// ui.Main(demoUI)
|
go ui.Main(demoUI)
|
||||||
ui.Main( func() {
|
// go ui.Main( func() {
|
||||||
rawAction(a)
|
// rawAction(a)
|
||||||
})
|
// })
|
||||||
// probably not needed, but in here for now under development
|
// probably not needed, but in here for now under development
|
||||||
uiMainUndef = false
|
uiMainUndef = false
|
||||||
sleep(1)
|
sleep(1)
|
||||||
|
|
|
@ -23,6 +23,12 @@ func Watchdog() {
|
||||||
Config.rootNode.ListChildren(true)
|
Config.rootNode.ListChildren(true)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (i == 2) {
|
||||||
|
LoadPlugin("gocui")
|
||||||
|
}
|
||||||
|
// if (i == 3) {
|
||||||
|
// LoadPlugin("andlabs")
|
||||||
|
// }
|
||||||
i += 1
|
i += 1
|
||||||
time.Sleep(watchtime * time.Second / 10)
|
time.Sleep(watchtime * time.Second / 10)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue