diff options
Diffstat (limited to 'dropdown.go')
| -rw-r--r-- | dropdown.go | 122 |
1 files changed, 44 insertions, 78 deletions
diff --git a/dropdown.go b/dropdown.go index a12a929..cb0f38d 100644 --- a/dropdown.go +++ b/dropdown.go @@ -2,7 +2,6 @@ package main import ( "fmt" - "strings" "github.com/awesome-gocui/gocui" log "go.wit.com/log" @@ -10,7 +9,7 @@ import ( "go.wit.com/widget" ) -func makeDropdownView(ddItems string) *tree.Node { +func makeDropdownView(ddItems string) *guiWidget { newNode := addDropdown() tk := newNode.TK.(*guiWidget) tk.labelN = ddItems @@ -25,40 +24,14 @@ func makeDropdownView(ddItems string) *tree.Node { tk.gocuiSize.w1, tk.gocuiSize.h1, 0) if tk.v == nil { - return newNode + return tk } tk.v.Wrap = true tk.v.Frame = true tk.v.Clear() fmt.Fprint(tk.v, ddItems) tk.SetVisible(true) - return newNode -} - -func makeDropdownViewOrig() { - if me.ddview != nil { - return - } - me.ddview = addDropdown() - // n.TK = initWidget(n) - var tk *guiWidget - tk = me.ddview.TK.(*guiWidget) - tk.gocuiSize.w0 = 20 - tk.gocuiSize.w1 = 40 - tk.gocuiSize.h0 = 10 - tk.gocuiSize.h1 = 25 - tk.v, _ = me.baseGui.SetView("ddview", - tk.gocuiSize.w0, - tk.gocuiSize.h0, - tk.gocuiSize.w1, - tk.gocuiSize.h1, 0) - if tk.v == nil { - return - } - tk.v.Wrap = true - tk.v.Frame = true - tk.v.Clear() - fmt.Fprint(tk.v, tk.labelN) + return tk } func addDropdown() *tree.Node { @@ -93,13 +66,14 @@ func addDropdown() *tree.Node { return n } -func showDropdownItems(ddItems string) { - for i, s := range strings.Split(ddItems, "\n") { - log.Log(NOW, "showDropdownItems() found =", i, s) +func (tk *guiWidget) showDropdown() { + var ddItems string + for i, s := range tk.vals { + log.Log(NOW, "showDropdown()", tk.String(), i, s) + ddItems += s + "\n" } - var tk *guiWidget - tk = me.ddview.TK.(*guiWidget) - log.Log(NOW, "doWidgetClick() visible =", tk.Visible()) + + log.Log(NOW, "showDropdown() visible =", tk.Visible()) if tk.Visible() { tk.SetVisible(false) me.baseGui.DeleteView("ddview") @@ -115,43 +89,41 @@ func showDropdownItems(ddItems string) { } func dropdownClicked(mouseX, mouseH int) { - tk := me.ddview.TK.(*guiWidget) + 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() } } func hideDDview() error { - var tk *guiWidget - tk = me.ddview.TK.(*guiWidget) w, h := me.baseGui.MousePosition() log.Log(NOW, "hide dropdown menu() view msgMouseDown (w,h) =", w, h) - if me.ddview == nil { + if me.dropdownV == nil { return gocui.ErrUnknownView } - if tk.v == nil { + if me.dropdownV.v == nil { return gocui.ErrUnknownView } - tk.SetVisible(false) + me.dropdownV.SetVisible(false) return nil } func showDDview() error { w, h := me.baseGui.MousePosition() log.Log(NOW, "show dropdown menu() view msgMouseDown (w,h) =", w, h) - if me.ddview == nil { + if me.dropdownV == nil { return gocui.ErrUnknownView } - var tk *guiWidget - tk = me.ddview.TK.(*guiWidget) - if tk.v == nil { + if me.dropdownV.v == nil { return gocui.ErrUnknownView } - tk.SetVisible(true) + me.dropdownV.SetVisible(true) return nil } @@ -168,38 +140,32 @@ func (w *guiWidget) dropdownClicked(mouseW, mouseH int) { } func dropdownUnclicked(mouseX, mouseH int) { - tk := me.ddview.TK.(*guiWidget) + tk := me.dropdownV log.Log(NOW, "mouseUp() view msgMouseDown (check here for dropdown menu click) (w,h) =", mouseX, mouseH) - if me.ddClicked { - me.ddClicked = false - log.Log(NOW, "mouseUp() ddview is the thing that was clicked", mouseX, mouseH) - log.Log(NOW, "mouseUp() find out what the string is here", mouseX, mouseH, tk.gocuiSize.h1) + log.Log(NOW, "mouseUp() ddview is the thing that was clicked", mouseX, mouseH) + log.Log(NOW, "mouseUp() find out what the string is here", mouseX, mouseH, tk.gocuiSize.h1) - var newZone string = "" - if me.ddNode != nil { - var ddtk *guiWidget - ddtk = me.ddview.TK.(*guiWidget) - value := mouseH - tk.gocuiSize.h0 - 1 - log.Log(NOW, "mouseUp() me.ddview.tk.gocuiSize.h1 =", tk.gocuiSize.h1) - log.Log(NOW, "mouseUp() me.ddNode.vals =", ddtk.vals) - valsLen := len(ddtk.vals) - log.Log(NOW, "mouseUp() value =", value, "valsLen =", valsLen) - log.Log(NOW, "mouseUp() me.ddNode.vals =", ddtk.vals) - if (value >= 0) && (value < valsLen) { - newZone = ddtk.vals[value] - log.Log(NOW, "mouseUp() value =", value, "newZone =", newZone) - } - } - hideDDview() - if newZone != "" { - if me.ddNode != nil { - var ddtk *guiWidget - ddtk = me.ddview.TK.(*guiWidget) - ddtk.SetText(newZone) - ddtk.value = newZone - // me.ddNode.doUserEvent() - me.myTree.SendUserEvent(me.ddNode) - } - } + var newZone string = "" + if me.dropdownW == nil { + return } + // try to compute the line item clicked here + /* + var ddtk *guiWidget + ddtk = me.ddview.TK.(*guiWidget) + value := mouseH - tk.gocuiSize.h0 - 1 + log.Log(NOW, "mouseUp() me.ddview.tk.gocuiSize.h1 =", tk.gocuiSize.h1) + log.Log(NOW, "mouseUp() me.ddNode.vals =", ddtk.vals) + valsLen := len(ddtk.vals) + log.Log(NOW, "mouseUp() value =", value, "valsLen =", valsLen) + log.Log(NOW, "mouseUp() me.ddNode.vals =", ddtk.vals) + if (value >= 0) && (value < valsLen) { + newZone = ddtk.vals[value] + log.Log(NOW, "mouseUp() value =", value, "newZone =", newZone) + } + */ + // send the event the user selected something from the dropdown + hideDDview() + me.dropdownW.SetText(newZone) + me.myTree.SendUserEvent(me.dropdownW.node) } |
