summaryrefslogtreecommitdiff
path: root/dropdown.go
diff options
context:
space:
mode:
Diffstat (limited to 'dropdown.go')
-rw-r--r--dropdown.go71
1 files changed, 23 insertions, 48 deletions
diff --git a/dropdown.go b/dropdown.go
index 6c3a9ff..328f7ff 100644
--- a/dropdown.go
+++ b/dropdown.go
@@ -90,54 +90,29 @@ func addDropdownNew(wId int) *tree.Node {
func (tk *guiWidget) showDropdown() {
// todo: fix this after switching to protobuf
- // var items []string
- // items = tk.node.State.Strings
- //for i, s := range items {
- /*
- var ddItems string
- for i, s := range tk.node.Strings() {
- // log.Log(GOCUI, "showDropdown()", tk.String(), i, s)
- ddItems += s + "\n"
- }
- */
-
- // log.Log(GOCUI, "new dropdown items should be set to:", ddItems)
- // sizeW, sizeH := tk.Size()
- // log.Log(GOCUI, "showDropdown() size W,H=", sizeW, sizeH)
- startW, startH := tk.Position()
- log.Log(GOCUI, "showDropdown() IS BROKEN W,H=", startW, startH)
- // me.dropdownV.MoveToOffset(startW+3, startH+2)
- // me.dropdownV.labelN = ddItems
- // me.dropdownV.Show()
-}
-
-/*
-func hideDDview() error {
- w, h := me.baseGui.MousePosition()
- log.Log(GOCUI, "hide dropdown menu() view (w,h) =", w, h)
- if me.dropdownV == nil {
- return gocui.ErrUnknownView
- }
- if me.dropdownV.v == nil {
- return gocui.ErrUnknownView
+ me.dropdown.items = []string{} // zero out whatever was there before
+ for i, s := range tk.node.Strings() {
+ log.Log(GOCUI, "showDropdown()", tk.String(), i, s)
+ me.dropdown.items = append(me.dropdown.items, s)
}
- me.dropdownV.SetVisible(false)
- return nil
-}
-func showDDview() error {
- w, h := me.baseGui.MousePosition()
- log.Log(GOCUI, "show dropdown menu() view (w,h) =", w, h)
- if me.dropdownV == nil {
- return gocui.ErrUnknownView
+ log.Log(GOCUI, "new dropdown items should be set to:", me.dropdown.items)
+
+ if me.dropdown.tk == nil {
+ me.dropdown.tk = addDropdownTK(-77)
}
- if me.dropdownV.v == nil {
- return gocui.ErrUnknownView
+ if me.dropdown.tk == nil {
+ log.Log(GOCUI, "showDropdown() IS BROKEN")
+ return
}
- me.dropdownV.SetVisible(true)
- return nil
+ startW, startH := tk.Position()
+ log.Log(GOCUI, "showDropdown() SHOWING AT W,H=", startW, startH)
+ me.dropdown.tk.MoveToOffset(startW+3, startH+2)
+ me.dropdown.tk.labelN = strings.Join(me.dropdown.items, "\n")
+ me.dropdown.tk.Show()
+ me.dropdown.active = true
+ me.dropdown.callerTK = tk
}
-*/
// if there is a drop down view active, treat it like a dialog box and close it
func (w *guiWidget) dropdownClicked(mouseW, mouseH int) string {
@@ -150,7 +125,7 @@ func (w *guiWidget) dropdownClicked(mouseW, mouseH int) string {
// log.Log(GOCUI, "dropdownClicked() at (w,h) =", mouseW, mouseH)
itemNumber := mouseH - startH
- items := strings.Split(w.labelN, "\n")
+ items := me.dropdown.items
// log.Log(GOCUI, "dropdownClicked() look for item", itemNumber, "len(items) =", len(items))
if itemNumber < 1 {
return ""
@@ -159,11 +134,11 @@ func (w *guiWidget) dropdownClicked(mouseW, mouseH int) string {
if len(items) >= itemNumber {
// log.Log(GOCUI, "dropdownClicked() found", items[itemNumber-1])
if items[itemNumber-1] != "" {
- if me.dropdownW != nil {
+ if me.dropdown.tk != nil {
// log.Log(GOCUI, "dropdownClicked() send event for", me.dropdownW.cuiName, me.dropdownW.node.WidgetType)
- me.dropdownW.SetText(items[itemNumber-1])
- me.dropdownW.node.SetCurrentS(items[itemNumber-1])
- me.myTree.SendUserEvent(me.dropdownW.node)
+ me.dropdown.callerTK.SetText(items[itemNumber-1])
+ me.dropdown.callerTK.node.SetCurrentS(items[itemNumber-1])
+ me.myTree.SendUserEvent(me.dropdown.callerTK.node)
}
}
return items[itemNumber-1]