summaryrefslogtreecommitdiff
path: root/andlabs/dropdown.go
diff options
context:
space:
mode:
Diffstat (limited to 'andlabs/dropdown.go')
-rw-r--r--andlabs/dropdown.go79
1 files changed, 79 insertions, 0 deletions
diff --git a/andlabs/dropdown.go b/andlabs/dropdown.go
new file mode 100644
index 0000000..89cbf1a
--- /dev/null
+++ b/andlabs/dropdown.go
@@ -0,0 +1,79 @@
+package main
+
+import (
+ "github.com/andlabs/ui"
+ _ "github.com/andlabs/ui/winmanifest"
+
+ "go.wit.com/gui/gui/toolkit"
+)
+
+func (p *node) newDropdown(n *node) {
+ newt := new(guiWidget)
+ log(debugToolkit, "gui.Toolbox.newDropdown() START", n.Name)
+
+ cb := ui.NewCombobox()
+ newt.uiCombobox = cb
+ newt.uiControl = cb
+
+ // initialize the index
+ newt.c = 0
+ newt.val = make(map[int]string)
+
+ cb.OnSelected(func(spin *ui.Combobox) {
+ i := spin.Selected()
+ if (newt.val == nil) {
+ log(logError, "make map didn't work")
+ n.S = "map did not work. ui.Combobox error"
+ } else {
+ n.S = newt.val[i]
+ }
+ n.doUserEvent()
+ })
+
+ n.tk = newt
+ p.place(n)
+}
+
+func (t *guiWidget) addDropdownName(title string) {
+ t.uiCombobox.Append(title)
+ if (t.val == nil) {
+ log(debugToolkit, "make map didn't work")
+ return
+ }
+ t.val[t.c] = title
+
+ // If this is the first menu added, set the dropdown to it
+ if (t.c == 0) {
+ log(debugChange, "THIS IS THE FIRST Dropdown", title)
+ t.uiCombobox.SetSelected(0)
+ }
+ t.c = t.c + 1
+}
+
+func (t *guiWidget) SetDropdown(i int) {
+ t.uiCombobox.SetSelected(i)
+}
+
+func (n *node) AddDropdownName(s string) {
+ log(logInfo, "AddDropdownName()", n.WidgetId, "add:", s)
+
+ t := n.tk
+ if (t == nil) {
+ log(logInfo, "AddDropdownName() toolkit struct == nil. name=", n.Name, s)
+ return
+ }
+ t.addDropdownName(s)
+}
+
+func (n *node) SetDropdownName(a *toolkit.Action, s string) {
+ log(logInfo, "SetDropdown()", n.WidgetId, ",", s)
+
+ t := n.tk
+ if (t == nil) {
+ log(debugError, "SetDropdown() FAILED mapToolkits[w] == nil. name=", n.WidgetId, s)
+ return
+ }
+ t.SetDropdown(1)
+ // TODO: send back to wit/gui goroutine with the chan
+ n.S = s
+}