diff options
Diffstat (limited to 'dropdown.go')
| -rw-r--r-- | dropdown.go | 58 |
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 |
