From a6a3e1193fa7c77165f3ed2eb0031f319b4abdd0 Mon Sep 17 00:00:00 2001 From: Jeff Carr Date: Wed, 17 Jan 2024 21:21:29 -0600 Subject: work around a toolkit panic() things should work when GUI is not really there Int() and Bool() helloworld works compiles and runs RawWindow shouldn't auto exit add StandardExit() Signed-off-by: Jeff Carr Signed-off-by: Jeff Carr --- addText.go | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 addText.go (limited to 'addText.go') diff --git a/addText.go b/addText.go new file mode 100644 index 0000000..7f98c63 --- /dev/null +++ b/addText.go @@ -0,0 +1,50 @@ +package gui + +import ( + "go.wit.com/log" + "go.wit.com/gui/widget" +) + +// tracks dropdown and combobox entries. Makes sure they are unique +func (n *Node) addText(newS string) { + var highest int + for s, i := range n.strings { + if i > highest { highest = i } + if s == newS { + return + } + } + n.strings[newS] = highest + 1 // TODO: use the int's for the order + n.value = newS + /* + // time.Sleep(time.Duration(1000 * time.Nanosecond)) // doesn't work + // maybe this stupid chipset is defective. TODO: try on different hardware + // tried with go 1.21.4 debian sid + mylock.Lock() + n.mu.Lock() + // time.Sleep(time.Duration(10 * time.Microsecond)) // doesn't work + time.Sleep(time.Duration(100 * time.Microsecond)) // does work + n.strings = append(n.strings, newS) + n.mu.Unlock() + mylock.Unlock() + log.Warn("addText() has strings:", n.strings) + */ + + // inform the toolkits + sendAction(n, widget.AddText) +} + +// add a new text string to widgets that support +// multiple string values +// These must be unique. return false if the string already exists +func (n *Node) AddText(str string) bool { + if ! n.Ready() { return false } + log.Warn("AddText() value =", str) + log.Warn("AddText() value =", str) + log.Warn("AddText() value =", str) + + // for some reason, the n.mu.Lock() doesn't seem to protect the append() function on strings + // switched to a map. I suspect that is what maps are for because they are safer + n.addText(str) + return true +} -- cgit v1.2.3