diff options
| author | Jeff Carr <[email protected]> | 2023-03-01 11:35:36 -0600 |
|---|---|---|
| committer | Jeff Carr <[email protected]> | 2023-03-01 11:35:36 -0600 |
| commit | 8dbf5a09097b7868e9218bf98716c57eac998a10 (patch) | |
| tree | ab3bdfeaf5a59a55de9d2a6661d2d824090491e5 /toolkit/andlabs/widget.go | |
| parent | f3bb68396afa7452ecf1c8d4744c825a9d81057c (diff) | |
lots cleaner code between the pluginv0.6.1
Queue() around SetText is helping userspace crashing
merge forceDump(bool) into Dump()
debugging output configuration is pretty clean
keep cutting down duplicate things
--gui-verbose flag works
make label "standard" code
add debug.FreeOSMemory()
move the GO language internals to display in the GUI
update push to do tags and go to github.com/wit-go/
remove the other license file
it might be confusing golang.org and github
proper WidgetType
added a Quit() button
Signed-off-by: Jeff Carr <[email protected]>
Diffstat (limited to 'toolkit/andlabs/widget.go')
| -rw-r--r-- | toolkit/andlabs/widget.go | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/toolkit/andlabs/widget.go b/toolkit/andlabs/widget.go new file mode 100644 index 0000000..58f8514 --- /dev/null +++ b/toolkit/andlabs/widget.go @@ -0,0 +1,67 @@ +package main + +import ( + "git.wit.org/wit/gui/toolkit" +) + +// This is a map between the widgets in wit/gui and the internal structures of gocui + +var mapWidgets map[*andlabsT]*toolkit.Widget +var mapToolkits map[*toolkit.Widget]*andlabsT + +// This lists out the know mappings +func listMap(b bool) { + log(b, "listMap() HERE") + log(b, "listMap() HERE") + for t, w := range mapWidgets { + log(b, "andlabs =", t.Name, "widget =", w.Name) + } + log(debugToolkit, "listMap() HERE mapToolkits()") + for w, t := range mapToolkits { + log(b, "andlabs =", t, "widget =", w.Name) + t.Dump(b) + } + log(b, "listMap() HERE mapWidgets()") + log(b, "listMap() HERE FIXME. output too big") +} + +func mapWidgetsToolkits(w *toolkit.Widget, t *andlabsT) { + if ((mapToolkits[w] == nil) && (mapWidgets[t] == nil)) { + log(debugToolkit, "map a new widget", w, t) + mapToolkits[w] = t + mapWidgets[t] = w + return + } + + if (mapToolkits[w] != nil) { + tw := mapToolkits[w] + if (tw == nil) { + // logic corruption somewhere? Have you been deleting things recently? + log(true, "mapToolkits[w] is set, but mapWidgets[t] is nil") + panic("WTF mapWidgets[t] == nil") + } + log(true, "mapToolkits[w] is", tw) + if (tw == nil) { + log(true, "BAD map? mapWidgets[w] tw == nil") + } else { + log(true, "BAD map? mapWidgets[w] is", tw) + tw.Dump(true) + } + } + + if (mapWidgets[t] != nil) { + wt := mapWidgets[t] + if (mapToolkits[w] == nil) { + // logic corruption somewhere? Have you been deleting things recently? + log(true, "mapWidgets[t] is set, but mapToolkits[w] is nil") + panic("WTF mapToolkits[w] == nil") + } + if (wt == nil) { + log(true, "BAD map? mapWidgets[t] wt == nil") + } else { + log(true, "BAD map? mapWidgets[t] is", wt) + widgetDump(true, wt) + } + } + log(debugToolkit, "map of widget worked", w.Type, ",", w.Name, ",", w.Action) +} |
