rename dropdown related variables
Signed-off-by: Jeff Carr <jcarr@wit.com>
This commit is contained in:
parent
dddef229dc
commit
d6f1a45c77
4
add.go
4
add.go
|
@ -51,8 +51,8 @@ func addWidget(n *tree.Node) {
|
||||||
wRoot.redoWindows(0, 0)
|
wRoot.redoWindows(0, 0)
|
||||||
// TODO: record the first window here?
|
// TODO: record the first window here?
|
||||||
// do initial setup of helper widgets here:
|
// do initial setup of helper widgets here:
|
||||||
if me.ddview == nil {
|
if me.dropdownV == nil {
|
||||||
me.ddview = makeDropdownView("addWidget() ddview")
|
me.dropdownV = makeDropdownView("addWidget() ddview")
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
case widget.Tab:
|
case widget.Tab:
|
||||||
|
|
115
click.go
115
click.go
|
@ -1,9 +1,10 @@
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"errors"
|
||||||
|
|
||||||
"github.com/awesome-gocui/gocui"
|
"github.com/awesome-gocui/gocui"
|
||||||
"go.wit.com/log"
|
"go.wit.com/log"
|
||||||
"go.wit.com/toolkits/tree"
|
|
||||||
"go.wit.com/widget"
|
"go.wit.com/widget"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -178,53 +179,13 @@ func (w *guiWidget) doWidgetClick() {
|
||||||
w.toggleTree()
|
w.toggleTree()
|
||||||
case widget.Button:
|
case widget.Button:
|
||||||
// doUserEvent(n)
|
// doUserEvent(n)
|
||||||
me.myTree.SendUserEvent(w.node)
|
me.myTree.SendFromUser(w.node)
|
||||||
case widget.Combobox:
|
case widget.Combobox:
|
||||||
log.Log(NOW, "do the combobox here")
|
log.Log(NOW, "do the combobox here")
|
||||||
var ddItems string
|
w.showDropdown()
|
||||||
for i, s := range w.vals {
|
|
||||||
log.Log(NOW, "ddItem:", w.String(), i, s)
|
|
||||||
ddItems += s + "\n"
|
|
||||||
}
|
|
||||||
if me.ddview == nil {
|
|
||||||
me.ddview = makeDropdownView(ddItems)
|
|
||||||
}
|
|
||||||
showDropdownItems(ddItems)
|
|
||||||
me.ddNode = w.node
|
|
||||||
case widget.Dropdown:
|
case widget.Dropdown:
|
||||||
log.Log(NOW, "do the dropdown here")
|
log.Log(NOW, "do the dropdown here")
|
||||||
var ddItems string
|
w.showDropdown()
|
||||||
for i, s := range w.vals {
|
|
||||||
log.Log(NOW, "ddItem:", w.String(), i, s)
|
|
||||||
ddItems += s + "\n"
|
|
||||||
}
|
|
||||||
/*
|
|
||||||
if me.ddview == nil {
|
|
||||||
me.ddview = makeDropdownView(ddItems)
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
showDropdownItems(ddItems)
|
|
||||||
me.ddNode = w.node
|
|
||||||
/*
|
|
||||||
var tk *guiWidget
|
|
||||||
tk = me.ddview.TK.(*guiWidget)
|
|
||||||
log.Log(NOW, "doWidgetClick() visible =", tk.Visible())
|
|
||||||
if tk.Visible() {
|
|
||||||
tk.SetVisible(false)
|
|
||||||
me.baseGui.DeleteView("ddview")
|
|
||||||
tk.v = nil
|
|
||||||
} else {
|
|
||||||
me.ddNode = w.node
|
|
||||||
log.Log(NOW, "new dns list should be set to:", ddItems)
|
|
||||||
tk.labelN = ddItems
|
|
||||||
tk.SetText(ddItems)
|
|
||||||
tk.SetVisible(true)
|
|
||||||
fmt.Fprint(tk.v, ddItems)
|
|
||||||
}
|
|
||||||
for i, s := range tk.vals {
|
|
||||||
log.Log(NOW, "AddText()", tk.String(), i, s)
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
default:
|
default:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -263,21 +224,18 @@ func click(g *gocui.Gui, v *gocui.View) error {
|
||||||
// var l string
|
// var l string
|
||||||
// var err error
|
// var err error
|
||||||
|
|
||||||
log.Log(INFO, "click() START", v.Name())
|
log.Log(NOW, "click() START gocui name:", v.Name())
|
||||||
// n := me.rootNode.findWidgetName(v.Name())
|
// n := me.rootNode.findWidgetName(v.Name())
|
||||||
n := findUnderMouse()
|
w := findUnderMouse()
|
||||||
var w *guiWidget
|
if w == nil {
|
||||||
w = n.TK.(*guiWidget)
|
log.Error(errors.New("click() could not find widget for view =" + v.Name()))
|
||||||
if w != nil {
|
} else {
|
||||||
log.Log(NOW, "click() Found widget =", w.node.WidgetId, w.String(), ",", w.labelN)
|
log.Log(NOW, "click() Found widget =", w.node.WidgetId, w.String(), ",", w.labelN)
|
||||||
if w.String() == "DropBox" {
|
if w.String() == "DropBox" {
|
||||||
log.Log(NOW, "click() this is the dropdown menu. set a flag here what did I click? where is the mouse?")
|
log.Log(NOW, "click() this is the dropdown menu. set a flag here what did I click? where is the mouse?")
|
||||||
log.Log(NOW, "click() set a global dropdown clicked flag=true here")
|
log.Log(NOW, "click() set a global dropdown clicked flag=true here")
|
||||||
me.ddClicked = true
|
|
||||||
}
|
}
|
||||||
w.doWidgetClick()
|
w.doWidgetClick()
|
||||||
} else {
|
|
||||||
log.Log(NOW, "click() could not find node name =", v.Name())
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if _, err := g.SetCurrentView(v.Name()); err != nil {
|
if _, err := g.SetCurrentView(v.Name()); err != nil {
|
||||||
|
@ -285,55 +243,57 @@ func click(g *gocui.Gui, v *gocui.View) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Log(NOW, "click() END")
|
log.Log(NOW, "click() END gocui name:", v.Name())
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func findUnderMouse() *tree.Node {
|
func findUnderMouse() *guiWidget {
|
||||||
var found *tree.Node
|
var widgets []*guiWidget
|
||||||
var widgets []*tree.Node
|
var f func(w *guiWidget)
|
||||||
var f func(n *tree.Node)
|
|
||||||
w, h := me.baseGui.MousePosition()
|
w, h := me.baseGui.MousePosition()
|
||||||
|
|
||||||
ddTK := me.ddview.TK.(*guiWidget)
|
|
||||||
// if the dropdown view is visable, close it
|
// if the dropdown view is visable, close it
|
||||||
if ddTK.Visible() {
|
if me.dropdownV.Visible() {
|
||||||
ddTK.dropdownClicked(w, h)
|
me.dropdownV.dropdownClicked(w, h)
|
||||||
return me.ddview
|
return me.dropdownV
|
||||||
}
|
}
|
||||||
|
|
||||||
// find buttons that are below where the mouse button click
|
// find buttons that are below where the mouse button click
|
||||||
f = func(n *tree.Node) {
|
f = func(widget *guiWidget) {
|
||||||
var widget *guiWidget
|
|
||||||
widget = n.TK.(*guiWidget)
|
|
||||||
|
|
||||||
// ignore widgets that are not visible
|
// ignore widgets that are not visible
|
||||||
if widget.Visible() {
|
if widget.Visible() {
|
||||||
if (widget.gocuiSize.w0 <= w) && (w <= widget.gocuiSize.w1) &&
|
if (widget.gocuiSize.w0 <= w) && (w <= widget.gocuiSize.w1) &&
|
||||||
(widget.gocuiSize.h0 <= h) && (h <= widget.gocuiSize.h1) {
|
(widget.gocuiSize.h0 <= h) && (h <= widget.gocuiSize.h1) {
|
||||||
widgets = append(widgets, n)
|
widgets = append(widgets, widget)
|
||||||
found = n
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, child := range widget.children {
|
for _, child := range widget.children {
|
||||||
f(child.node)
|
f(child)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
f(me.treeRoot)
|
rootW := me.treeRoot.TK.(*guiWidget)
|
||||||
|
f(rootW)
|
||||||
|
|
||||||
|
var found *guiWidget
|
||||||
// widgets has everything that matches
|
// widgets has everything that matches
|
||||||
// TODO: pop up menu with a list of them
|
for _, w := range widgets {
|
||||||
for _, n := range widgets {
|
w.showWidgetPlacement("findUnderMouse() FOUND")
|
||||||
//log(logNow, "ctrlDown() FOUND widget", widget.id, widget.name)
|
// prioritize window buttons. This means if some code covers
|
||||||
widget := n.TK.(*guiWidget)
|
// up the window widgets, then it will ignore everything else
|
||||||
widget.showWidgetPlacement("findUnderMouse() FOUND")
|
// and allow the user (hopefully) to redraw or switch windows
|
||||||
|
// TODO: display the window widgets on top
|
||||||
|
if w.WidgetType == widget.Window {
|
||||||
|
return w
|
||||||
|
}
|
||||||
|
found = w
|
||||||
}
|
}
|
||||||
return found
|
return found
|
||||||
}
|
}
|
||||||
|
|
||||||
// find the widget under the mouse click
|
// find the widget under the mouse click
|
||||||
func ctrlDown(g *gocui.Gui, v *gocui.View) error {
|
func ctrlDown(g *gocui.Gui, v *gocui.View) error {
|
||||||
var found *tree.Node
|
var found *guiWidget
|
||||||
// var widgets []*node
|
// var widgets []*node
|
||||||
// var f func (n *node)
|
// var f func (n *node)
|
||||||
found = findUnderMouse()
|
found = findUnderMouse()
|
||||||
|
@ -349,11 +309,10 @@ func ctrlDown(g *gocui.Gui, v *gocui.View) error {
|
||||||
var tk *guiWidget
|
var tk *guiWidget
|
||||||
tk = me.ctrlDown.TK.(*guiWidget)
|
tk = me.ctrlDown.TK.(*guiWidget)
|
||||||
if found == nil {
|
if found == nil {
|
||||||
found = me.treeRoot
|
found = me.treeRoot.TK.(*guiWidget)
|
||||||
}
|
}
|
||||||
tk.labelN = found.String()
|
tk.labelN = found.String()
|
||||||
foundtk := found.TK.(*guiWidget)
|
newR := found.realGocuiSize()
|
||||||
newR := foundtk.realGocuiSize()
|
|
||||||
tk.gocuiSize.w0 = newR.w0
|
tk.gocuiSize.w0 = newR.w0
|
||||||
tk.gocuiSize.h0 = newR.h0
|
tk.gocuiSize.h0 = newR.h0
|
||||||
tk.gocuiSize.w1 = newR.w1
|
tk.gocuiSize.w1 = newR.w1
|
||||||
|
|
92
dropdown.go
92
dropdown.go
|
@ -2,7 +2,6 @@ package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"strings"
|
|
||||||
|
|
||||||
"github.com/awesome-gocui/gocui"
|
"github.com/awesome-gocui/gocui"
|
||||||
log "go.wit.com/log"
|
log "go.wit.com/log"
|
||||||
|
@ -10,7 +9,7 @@ import (
|
||||||
"go.wit.com/widget"
|
"go.wit.com/widget"
|
||||||
)
|
)
|
||||||
|
|
||||||
func makeDropdownView(ddItems string) *tree.Node {
|
func makeDropdownView(ddItems string) *guiWidget {
|
||||||
newNode := addDropdown()
|
newNode := addDropdown()
|
||||||
tk := newNode.TK.(*guiWidget)
|
tk := newNode.TK.(*guiWidget)
|
||||||
tk.labelN = ddItems
|
tk.labelN = ddItems
|
||||||
|
@ -25,40 +24,14 @@ func makeDropdownView(ddItems string) *tree.Node {
|
||||||
tk.gocuiSize.w1,
|
tk.gocuiSize.w1,
|
||||||
tk.gocuiSize.h1, 0)
|
tk.gocuiSize.h1, 0)
|
||||||
if tk.v == nil {
|
if tk.v == nil {
|
||||||
return newNode
|
return tk
|
||||||
}
|
}
|
||||||
tk.v.Wrap = true
|
tk.v.Wrap = true
|
||||||
tk.v.Frame = true
|
tk.v.Frame = true
|
||||||
tk.v.Clear()
|
tk.v.Clear()
|
||||||
fmt.Fprint(tk.v, ddItems)
|
fmt.Fprint(tk.v, ddItems)
|
||||||
tk.SetVisible(true)
|
tk.SetVisible(true)
|
||||||
return newNode
|
return tk
|
||||||
}
|
|
||||||
|
|
||||||
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)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func addDropdown() *tree.Node {
|
func addDropdown() *tree.Node {
|
||||||
|
@ -93,13 +66,14 @@ func addDropdown() *tree.Node {
|
||||||
return n
|
return n
|
||||||
}
|
}
|
||||||
|
|
||||||
func showDropdownItems(ddItems string) {
|
func (tk *guiWidget) showDropdown() {
|
||||||
for i, s := range strings.Split(ddItems, "\n") {
|
var ddItems string
|
||||||
log.Log(NOW, "showDropdownItems() found =", i, s)
|
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, "showDropdown() visible =", tk.Visible())
|
||||||
log.Log(NOW, "doWidgetClick() visible =", tk.Visible())
|
|
||||||
if tk.Visible() {
|
if tk.Visible() {
|
||||||
tk.SetVisible(false)
|
tk.SetVisible(false)
|
||||||
me.baseGui.DeleteView("ddview")
|
me.baseGui.DeleteView("ddview")
|
||||||
|
@ -115,43 +89,41 @@ func showDropdownItems(ddItems string) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func dropdownClicked(mouseX, mouseH int) {
|
func dropdownClicked(mouseX, mouseH int) {
|
||||||
tk := me.ddview.TK.(*guiWidget)
|
tk := me.dropdownV
|
||||||
if tk.Visible() {
|
if tk.Visible() {
|
||||||
log.Log(NOW, "hide DDview() Mouse really down at:", mouseX, mouseH)
|
log.Log(NOW, "hide DDview() Mouse really down at:", mouseX, mouseH)
|
||||||
hideDDview()
|
hideDDview()
|
||||||
} else {
|
} else {
|
||||||
log.Log(NOW, "show DDview() Mouse really down at:", mouseX, mouseH)
|
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()
|
showDDview()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func hideDDview() error {
|
func hideDDview() error {
|
||||||
var tk *guiWidget
|
|
||||||
tk = me.ddview.TK.(*guiWidget)
|
|
||||||
w, h := me.baseGui.MousePosition()
|
w, h := me.baseGui.MousePosition()
|
||||||
log.Log(NOW, "hide dropdown menu() view msgMouseDown (w,h) =", w, h)
|
log.Log(NOW, "hide dropdown menu() view msgMouseDown (w,h) =", w, h)
|
||||||
if me.ddview == nil {
|
if me.dropdownV == nil {
|
||||||
return gocui.ErrUnknownView
|
return gocui.ErrUnknownView
|
||||||
}
|
}
|
||||||
if tk.v == nil {
|
if me.dropdownV.v == nil {
|
||||||
return gocui.ErrUnknownView
|
return gocui.ErrUnknownView
|
||||||
}
|
}
|
||||||
tk.SetVisible(false)
|
me.dropdownV.SetVisible(false)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func showDDview() error {
|
func showDDview() error {
|
||||||
w, h := me.baseGui.MousePosition()
|
w, h := me.baseGui.MousePosition()
|
||||||
log.Log(NOW, "show dropdown menu() view msgMouseDown (w,h) =", w, h)
|
log.Log(NOW, "show dropdown menu() view msgMouseDown (w,h) =", w, h)
|
||||||
if me.ddview == nil {
|
if me.dropdownV == nil {
|
||||||
return gocui.ErrUnknownView
|
return gocui.ErrUnknownView
|
||||||
}
|
}
|
||||||
var tk *guiWidget
|
if me.dropdownV.v == nil {
|
||||||
tk = me.ddview.TK.(*guiWidget)
|
|
||||||
if tk.v == nil {
|
|
||||||
return gocui.ErrUnknownView
|
return gocui.ErrUnknownView
|
||||||
}
|
}
|
||||||
tk.SetVisible(true)
|
me.dropdownV.SetVisible(true)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -168,15 +140,17 @@ func (w *guiWidget) dropdownClicked(mouseW, mouseH int) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func dropdownUnclicked(mouseX, 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)
|
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() 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() find out what the string is here", mouseX, mouseH, tk.gocuiSize.h1)
|
||||||
|
|
||||||
var newZone string = ""
|
var newZone string = ""
|
||||||
if me.ddNode != nil {
|
if me.dropdownW == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
// try to compute the line item clicked here
|
||||||
|
/*
|
||||||
var ddtk *guiWidget
|
var ddtk *guiWidget
|
||||||
ddtk = me.ddview.TK.(*guiWidget)
|
ddtk = me.ddview.TK.(*guiWidget)
|
||||||
value := mouseH - tk.gocuiSize.h0 - 1
|
value := mouseH - tk.gocuiSize.h0 - 1
|
||||||
|
@ -189,17 +163,9 @@ func dropdownUnclicked(mouseX, mouseH int) {
|
||||||
newZone = ddtk.vals[value]
|
newZone = ddtk.vals[value]
|
||||||
log.Log(NOW, "mouseUp() value =", value, "newZone =", newZone)
|
log.Log(NOW, "mouseUp() value =", value, "newZone =", newZone)
|
||||||
}
|
}
|
||||||
}
|
*/
|
||||||
|
// send the event the user selected something from the dropdown
|
||||||
hideDDview()
|
hideDDview()
|
||||||
if newZone != "" {
|
me.dropdownW.SetText(newZone)
|
||||||
if me.ddNode != nil {
|
me.myTree.SendUserEvent(me.dropdownW.node)
|
||||||
var ddtk *guiWidget
|
|
||||||
ddtk = me.ddview.TK.(*guiWidget)
|
|
||||||
ddtk.SetText(newZone)
|
|
||||||
ddtk.value = newZone
|
|
||||||
// me.ddNode.doUserEvent()
|
|
||||||
me.myTree.SendUserEvent(me.ddNode)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
11
mouse.go
11
mouse.go
|
@ -37,10 +37,6 @@ func msgDown(g *gocui.Gui, v *gocui.View) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
func mouseUp(g *gocui.Gui, v *gocui.View) error {
|
func mouseUp(g *gocui.Gui, v *gocui.View) error {
|
||||||
if me.ddview == nil {
|
|
||||||
me.ddview = makeDropdownView("mouseUp unclick")
|
|
||||||
}
|
|
||||||
|
|
||||||
w, h := g.MousePosition()
|
w, h := g.MousePosition()
|
||||||
|
|
||||||
dropdownUnclicked(w, h)
|
dropdownUnclicked(w, h)
|
||||||
|
@ -68,12 +64,9 @@ func mouseDown(g *gocui.Gui, v *gocui.View) error {
|
||||||
}
|
}
|
||||||
globalMouseDown = true
|
globalMouseDown = true
|
||||||
maxX, _ := g.Size()
|
maxX, _ := g.Size()
|
||||||
test := findUnderMouse()
|
findUnderMouse()
|
||||||
msg := fmt.Sprintf("Mouse really down at: %d,%d", mx, my) + "foobar"
|
msg := fmt.Sprintf("mouseDown() Mouse really down at: %d,%d", mx, my)
|
||||||
if test == me.ddview {
|
|
||||||
dropdownClicked(mx, my)
|
dropdownClicked(mx, my)
|
||||||
return nil
|
|
||||||
}
|
|
||||||
x := mx - len(msg)/2
|
x := mx - len(msg)/2
|
||||||
if x < 0 {
|
if x < 0 {
|
||||||
x = 0
|
x = 0
|
||||||
|
|
16
structs.go
16
structs.go
|
@ -43,18 +43,12 @@ type config struct {
|
||||||
currentWindow *tree.Node // this is the current tab or window to show
|
currentWindow *tree.Node // this is the current tab or window to show
|
||||||
logStdout *tree.Node // where to show STDOUT
|
logStdout *tree.Node // where to show STDOUT
|
||||||
helpLabel *gocui.View
|
helpLabel *gocui.View
|
||||||
ddview *tree.Node // the gocui view to select dropdrown lists
|
|
||||||
ddClicked bool // the dropdown menu view was clicked
|
|
||||||
ddNode *tree.Node // the dropdown menu is for this widget
|
|
||||||
|
|
||||||
/*
|
// this is a floating widget that we show whenever the user clicks on a
|
||||||
// this is the channel we send user events like
|
// dropdown menu or combobox
|
||||||
// mouse clicks or keyboard events back to the program
|
// the dropdown widget to select dropdrown lists
|
||||||
callback chan toolkit.Action
|
dropdownV *guiWidget
|
||||||
|
dropdownW *guiWidget // grab the dropdown choices from this widget
|
||||||
// this is the channel we get requests to make widgets
|
|
||||||
pluginChan chan toolkit.Action
|
|
||||||
*/
|
|
||||||
|
|
||||||
// When the widget has a frame, like a button, it adds 2 lines runes on each side
|
// When the widget has a frame, like a button, it adds 2 lines runes on each side
|
||||||
// so you need 3 char spacing in each direction to not have them overlap
|
// so you need 3 char spacing in each direction to not have them overlap
|
||||||
|
|
Loading…
Reference in New Issue