summaryrefslogtreecommitdiff
path: root/dropdown.go
diff options
context:
space:
mode:
Diffstat (limited to 'dropdown.go')
-rw-r--r--dropdown.go122
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)
}