summaryrefslogtreecommitdiff
path: root/dropdown.go
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2024-02-02 14:49:17 -0600
committerJeff Carr <[email protected]>2024-02-02 14:49:17 -0600
commitee0f84fd8ef5993a6c374c8ee4e22c837ca39d97 (patch)
tree6b3f2800ddeb92c32d08c537cf1b0c1692b4a166 /dropdown.go
parent4800fe662002c1e0192614f60c179b6d46c43cae (diff)
finds the item chosen from the dropdown list
Signed-off-by: Jeff Carr <[email protected]>
Diffstat (limited to 'dropdown.go')
-rw-r--r--dropdown.go58
1 files changed, 30 insertions, 28 deletions
diff --git a/dropdown.go b/dropdown.go
index 872bc22..b9d6266 100644
--- a/dropdown.go
+++ b/dropdown.go
@@ -2,6 +2,7 @@ package main
import (
"fmt"
+ "strings"
"github.com/awesome-gocui/gocui"
log "go.wit.com/log"
@@ -68,24 +69,23 @@ func addDropdown() *tree.Node {
func (tk *guiWidget) showDropdown() {
var ddItems string
+ // todo: fix this after switching to protobuf
+ // var items []string
+ // items = tk.node.State.Strings
+ //for i, s := range items {
for i, s := range tk.vals {
log.Log(NOW, "showDropdown()", tk.String(), i, s)
ddItems += s + "\n"
}
- log.Log(NOW, "showDropdown() visible =", tk.Visible())
- if tk.Visible() {
- tk.SetVisible(false)
- me.baseGui.DeleteView("ddview")
- tk.v = nil
- } else {
- log.Log(NOW, "new dns list should be set to:", ddItems)
- tk.labelN = ddItems
- tk.SetText(ddItems)
- tk.SetVisible(true)
- tk.v.Clear()
- fmt.Fprint(tk.v, ddItems)
- }
+ log.Log(NOW, "new dropdown items should be set to:", ddItems)
+ sizeW, sizeH := tk.Size()
+ log.Log(NOW, "showDropdown() size W,H=", sizeW, sizeH)
+ startW, startH := tk.Position()
+ log.Log(NOW, "showDropdown() location W,H=", startW, startH)
+ me.dropdownV.MoveToOffset(startW+3, startH+2)
+ me.dropdownV.labelN = ddItems
+ me.dropdownV.Show()
}
func hideDDview() error {
@@ -115,24 +115,26 @@ func showDDview() error {
}
// if there is a drop down view active, treat it like a dialog box and close it
-func (w *guiWidget) dropdownClicked(mouseW, mouseH int) {
- log.Log(NOW, "dropdownClicked() (w,h) =", mouseW, mouseH)
- w.deleteView()
+func (w *guiWidget) dropdownClicked(mouseW, mouseH int) string {
+ w.Hide()
- /*
- tk := me.dropdownV
- if tk.Visible() {
- log.Log(NOW, "hide DDview() Mouse really down at:", mouseX, mouseH)
- // hideDDview()
- } else {
- log.Log(NOW, "show DDview() Mouse really down at:", mouseX, mouseH)
- log.Log(NOW, "can you see the dropdown menu right now?")
- log.Log(NOW, "if so, something is wrong. I think you can't see it")
- showDDview()
+ startW, startH := w.Position()
+ log.Log(NOW, "dropdownClicked() start (w,h) =", startW, startH)
+ log.Log(NOW, "dropdownClicked() at (w,h) =", mouseW, mouseH)
+
+ itemNumber := mouseH - startH
+ log.Log(NOW, "dropdownClicked() look for item", itemNumber)
+ if itemNumber < 1 {
+ return ""
}
- */
-}
+ items := strings.Split(w.labelN, "\n")
+ if len(items) >= itemNumber-1 {
+ log.Log(NOW, "dropdownClicked() found", items[itemNumber-1])
+ return items[itemNumber-1]
+ }
+ return ""
+}
func dropdownUnclicked(mouseX, mouseH int) {
tk := me.dropdownV