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