s/Config/me/ to remove direct access to anything

since most everything needs to be passed to the toolkits
everything should be accessed via func()'s

Signed-off-by: Jeff Carr <jcarr@wit.com>
This commit is contained in:
Jeff Carr 2023-04-28 10:35:57 -05:00
parent a132b48ada
commit 14f69c4a40
12 changed files with 39 additions and 43 deletions

View File

@ -107,12 +107,6 @@ external things which might be useful
* [GO Style Guide] * [GO Style Guide]
``` ```
## Variables
```golang
var Config guiConfig
```
## Functions ## Functions
### func [DebugWidgetWindow](/debugWidget.go#L52) ### func [DebugWidgetWindow](/debugWidget.go#L52)
@ -152,12 +146,13 @@ Creates a window helpful for debugging this package
The window is destroyed and the application exits The window is destroyed and the application exits
TODO: properly exit the plugin since Quit() doesn't do it TODO: properly exit the plugin since Quit() doesn't do it
### func [Watchdog](/watchdog.go#L15) ### func [Watchdog](/watchdog.go#L16)
`func Watchdog()` `func Watchdog()`
This program sits here. This program sits here.
If you exit here, the whole thing will os.Exit() If you exit here, the whole thing will os.Exit()
TODO: use Ticker
This goroutine can be used like a watchdog timer This goroutine can be used like a watchdog timer

View File

@ -17,7 +17,7 @@ func (n *Node) NewButton(name string, custom func()) *Node {
// deprecate this once andlabs is refactored // deprecate this once andlabs is refactored
func callback(i int) bool { func callback(i int) bool {
log(debugError, "callback() for widget id =", i) log(debugError, "callback() for widget id =", i)
n := Config.rootNode.FindId(i) n := me.rootNode.FindId(i)
log(debugError, "callback() found node =", n) log(debugError, "callback() found node =", n)
// running custom here means the button get's clicked twice // running custom here means the button get's clicked twice
if (n.Custom == nil) { if (n.Custom == nil) {

View File

@ -9,7 +9,7 @@ func (n *Node) DebugFlags(makeWindow bool) {
// make a new window // make a new window
// make a new tab in the existing window // make a new tab in the existing window
if (makeWindow) { if (makeWindow) {
w = Config.rootNode.NewWindow("Debug Flags") w = me.rootNode.NewWindow("Debug Flags")
w.Custom = w.StandardClose w.Custom = w.StandardClose
} else { } else {
w = n.NewTab("Flags") w = n.NewTab("Flags")

View File

@ -18,7 +18,7 @@ func (n *Node) DebugGoChannels(makeWindow bool) {
// make a new window // make a new window
// make a new tab in the existing window // make a new tab in the existing window
if (makeWindow) { if (makeWindow) {
w = Config.rootNode.NewWindow("Debug GO Channels") w = me.rootNode.NewWindow("Debug GO Channels")
w.Custom = w.StandardClose w.Custom = w.StandardClose
} else { } else {
w = n.NewTab("Chan") w = n.NewTab("Chan")

View File

@ -16,7 +16,7 @@ func (n *Node) DebugGolangWindow(makeWindow bool) {
// make a new window // make a new window
// make a new tab in the existing window // make a new tab in the existing window
if (makeWindow) { if (makeWindow) {
w = Config.rootNode.NewWindow("GO") w = me.rootNode.NewWindow("GO")
w.Custom = w.StandardClose w.Custom = w.StandardClose
} else { } else {
w = n.NewTab("GOLANG") w = n.NewTab("GOLANG")

View File

@ -60,7 +60,7 @@ func DebugWidgetWindow(w *Node) {
// make a new window // make a new window
// make a new tab in the existing window // make a new tab in the existing window
if (makeTabs) { if (makeTabs) {
bugWidget = Config.rootNode.NewWindow("Widgets") bugWidget = me.rootNode.NewWindow("Widgets")
bugWidget.Custom = bugWidget.StandardClose bugWidget.Custom = bugWidget.StandardClose
} else { } else {
bugWidget = bugWin.NewTab("Widgets") bugWidget = bugWin.NewTab("Widgets")
@ -162,7 +162,7 @@ func DebugWidgetWindow(w *Node) {
activeJunk.NewLabel("test junk") activeJunk.NewLabel("test junk")
if (activeWidget == nil) { if (activeWidget == nil) {
setActiveWidget(Config.rootNode) setActiveWidget(me.rootNode)
} }
} }

View File

@ -19,7 +19,7 @@ var myButton *Node
Creates a window helpful for debugging this package Creates a window helpful for debugging this package
*/ */
func DebugWindow() { func DebugWindow() {
bugWin = Config.rootNode.NewWindow("go.wit.com/gui debug window").DebugTab("Debug Tab") bugWin = me.rootNode.NewWindow("go.wit.com/gui debug window").DebugTab("Debug Tab")
bugWin.Custom = bugWin.StandardClose bugWin.Custom = bugWin.StandardClose
// bugWin.DebugTab("Debug Tab") // bugWin.DebugTab("Debug Tab")
} }
@ -66,7 +66,7 @@ func (n *Node) DebugTab(title string) *Node {
g1.NewButton("List toolkits", func () { g1.NewButton("List toolkits", func () {
dropdownWindow(g1) dropdownWindow(g1)
Config.rootNode.ListToolkits() me.rootNode.ListToolkits()
}) })
g1.NewButton("List Windows", func () { g1.NewButton("List Windows", func () {
dropdownWindow(g1) dropdownWindow(g1)
@ -79,7 +79,7 @@ func (n *Node) DebugTab(title string) *Node {
g2.NewButton("Node.ListChildren(true)", func () { g2.NewButton("Node.ListChildren(true)", func () {
if (activeWidget == nil) { if (activeWidget == nil) {
activeWidget = Config.rootNode activeWidget = me.rootNode
} }
activeWidget.ListChildren(true) activeWidget.ListChildren(true)
}) })
@ -95,7 +95,7 @@ func (n *Node) DebugTab(title string) *Node {
}) })
g2.NewButton("load toolkit 'gocui'", func () { g2.NewButton("load toolkit 'gocui'", func () {
Config.rootNode.LoadToolkit("gocui") me.rootNode.LoadToolkit("gocui")
}) })
return newN return newN
@ -120,7 +120,7 @@ func dropdownWindow(p *Node) {
} }
// var last = "" // var last = ""
for _, child := range Config.rootNode.children { for _, child := range me.rootNode.children {
log(logInfo, "\t\t", child.id, child.Name) log(logInfo, "\t\t", child.id, child.Name)
dd.AddDropdownName(child.Name) dd.AddDropdownName(child.Name)
// last = child.Name // last = child.Name
@ -160,5 +160,5 @@ func dropdownWindowWidgets(p *Node) {
} }
// list everything in the binary tree // list everything in the binary tree
addDropdowns(Config.rootNode) addDropdowns(me.rootNode)
} }

30
main.go
View File

@ -17,21 +17,21 @@ const Yaxis = 1 // stack things vertically
func init() { func init() {
log("init() has been run") log("init() has been run")
Config.counter = 0 me.counter = 0
Config.prefix = "wit" me.prefix = "wit"
// Populates the top of the binary tree // Populates the top of the binary tree
Config.rootNode = addNode("guiBinaryTree") me.rootNode = addNode("guiBinaryTree")
Config.rootNode.WidgetType = toolkit.Root me.rootNode.WidgetType = toolkit.Root
// used to pass debugging flags to the toolkit plugins // used to pass debugging flags to the toolkit plugins
Config.flag = Config.rootNode.newNode("flag", 0, nil) me.flag = me.rootNode.newNode("flag", 0, nil)
Config.flag.WidgetType = toolkit.Flag me.flag.WidgetType = toolkit.Flag
Config.flag = Config.rootNode.newNode("stdout", 0, nil) me.flag = me.rootNode.newNode("stdout", 0, nil)
Config.flag.WidgetType = toolkit.Stdout me.flag.WidgetType = toolkit.Stdout
Config.guiChan = make(chan toolkit.Action, 1) me.guiChan = make(chan toolkit.Action, 1)
go watchCallback() go watchCallback()
} }
@ -40,10 +40,10 @@ func watchCallback() {
for { for {
log(logNow, "watchCallback() restarted select for toolkit user events") log(logNow, "watchCallback() restarted select for toolkit user events")
select { select {
case a := <-Config.guiChan: case a := <-me.guiChan:
if (a.ActionType == toolkit.UserQuit) { if (a.ActionType == toolkit.UserQuit) {
log(logNow, "doUserEvent() User sent Quit()") log(logNow, "doUserEvent() User sent Quit()")
Config.rootNode.doCustom() me.rootNode.doCustom()
exit("wit/gui toolkit.UserQuit") exit("wit/gui toolkit.UserQuit")
break break
} }
@ -53,7 +53,7 @@ func watchCallback() {
break break
} }
n := Config.rootNode.FindId(a.WidgetId) n := me.rootNode.FindId(a.WidgetId)
if (n == nil) { if (n == nil) {
log(logError, "watchCallback() UNKNOWN widget id =", a.WidgetId, a.Name) log(logError, "watchCallback() UNKNOWN widget id =", a.WidgetId, a.Name)
} else { } else {
@ -115,7 +115,7 @@ func (n *Node) doUserEvent(a toolkit.Action) {
} }
func (n *Node) InitEmbed(resFS embed.FS) *Node { func (n *Node) InitEmbed(resFS embed.FS) *Node {
Config.resFS = resFS me.resFS = resFS
return n return n
} }
@ -162,7 +162,7 @@ func (n *Node) LoadToolkit(name string) *Node {
sleep(.5) // temp hack until chan communication is setup sleep(.5) // temp hack until chan communication is setup
// 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
Config.rootNode.redraw(plug) me.rootNode.redraw(plug)
log(logInfo, "LoadToolkit() END for name =", name) log(logInfo, "LoadToolkit() END for name =", name)
return n return n
} }
@ -188,7 +188,7 @@ func (n *Node) CloseToolkit(name string) bool {
// some toolkit's on some operating systems don't support more than one // some toolkit's on some operating systems don't support more than one
// Keep things simple. Do the default expected thing whenever possible // Keep things simple. Do the default expected thing whenever possible
func New() *Node { func New() *Node {
return Config.rootNode return me.rootNode
} }
// 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

View File

@ -24,10 +24,10 @@ func addNode(title string) *Node {
n := new(Node) n := new(Node)
n.Name = title n.Name = title
n.Text = title n.Text = title
n.id = Config.counter n.id = me.counter
log(debugNode, "addNode = widget setid =", n.id) log(debugNode, "addNode = widget setid =", n.id)
Config.counter += 1 me.counter += 1
return n return n
} }

View File

@ -120,7 +120,7 @@ func searchPaths(name string) *aplug {
// first try to load the embedded plugin file // first try to load the embedded plugin file
filename = "plugins/" + name + ".so" filename = "plugins/" + name + ".so"
pfile, err = Config.resFS.ReadFile(filename) pfile, err = me.resFS.ReadFile(filename)
if (err == nil) { if (err == nil) {
log(logError, "write out file here", name, filename, len(pfile)) log(logError, "write out file here", name, filename, len(pfile))
exit() exit()
@ -195,7 +195,7 @@ func initToolkit(name string, filename string) *aplug {
log(debugError, "initToolkit() ERROR PluginChannel() returned nil for plugin:", newPlug.name, filename) log(debugError, "initToolkit() ERROR PluginChannel() returned nil for plugin:", newPlug.name, filename)
return nil return nil
} }
newPlug.Callback(Config.guiChan) newPlug.Callback(me.guiChan)
newPlug.InitOk = true newPlug.InitOk = true
log(debugPlugin, "initToolkit() END", newPlug.name, filename) log(debugPlugin, "initToolkit() END", newPlug.name, filename)

View File

@ -21,7 +21,7 @@ import (
// For example, a "Mouse Control Panel" not the GIMP or blender. // For example, a "Mouse Control Panel" not the GIMP or blender.
// //
var Config guiConfig var me guiConfig
// This struct can be used with the go-arg package // This struct can be used with the go-arg package
type GuiArgs struct { type GuiArgs struct {

View File

@ -9,18 +9,19 @@ var watchtime time.Duration = 100 // in tenths of seconds
/* /*
This program sits here. This program sits here.
If you exit here, the whole thing will os.Exit() If you exit here, the whole thing will os.Exit()
TODO: use Ticker
This goroutine can be used like a watchdog timer This goroutine can be used like a watchdog timer
*/ */
func Watchdog() { func Watchdog() {
var i = 1 var i = 1
for { for {
log(logInfo, "watchdog timer is alive. give me something to do.", i) log(logInfo, "gui.Watchdog() is alive. give me something to do.", i)
if (Config.rootNode == nil) { if (me.rootNode == nil) {
log(logInfo, "Config.rootNode == nil", i) log(logInfo, "me.rootNode == nil", i)
} else { } else {
if (logVerbose) { if (logVerbose) {
Config.rootNode.ListChildren(true) me.rootNode.ListChildren(true)
} }
} }
i += 1 i += 1