summaryrefslogtreecommitdiff
path: root/toolkit/andlabs/widget.go
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2023-03-01 11:35:36 -0600
committerJeff Carr <[email protected]>2023-03-01 11:35:36 -0600
commit8dbf5a09097b7868e9218bf98716c57eac998a10 (patch)
treeab3bdfeaf5a59a55de9d2a6661d2d824090491e5 /toolkit/andlabs/widget.go
parentf3bb68396afa7452ecf1c8d4744c825a9d81057c (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.go67
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)
+}