diff options
Diffstat (limited to 'addText.go')
| -rw-r--r-- | addText.go | 50 |
1 files changed, 50 insertions, 0 deletions
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 +} |
