summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--args.go8
-rw-r--r--gadgets/basicCombobox.go79
2 files changed, 87 insertions, 0 deletions
diff --git a/args.go b/args.go
index cc973b1..fbcfe3d 100644
--- a/args.go
+++ b/args.go
@@ -2,6 +2,8 @@ package gui
import (
arg "github.com/alexflint/go-arg"
+
+ newlog "go.wit.com/log"
)
var argGui ArgsGui
@@ -15,6 +17,12 @@ type ArgsGui struct {
func init() {
arg.Register(&argGui)
+
+ newlog.Register("gui", "debugGui", &debugGui)
+
+ for _, s := range newlog.ListAll() {
+ newlog.Info("go.wit.org/gui ListAll() returned:", s)
+ }
}
// returns the toolkit
diff --git a/gadgets/basicCombobox.go b/gadgets/basicCombobox.go
new file mode 100644
index 0000000..f008eb0
--- /dev/null
+++ b/gadgets/basicCombobox.go
@@ -0,0 +1,79 @@
+/*
+ A Labeled Combobox widget:
+
+ -----------------------------
+ | | |
+ | Food: | <dropdown> |
+ | | |
+ -----------------------------
+
+ The user can then edit the dropdown field and type anything into it
+*/
+package gadgets
+
+import (
+ "go.wit.com/log"
+ "go.wit.com/gui"
+)
+
+type BasicCombobox struct {
+ ready bool
+ name string
+
+ parent *gui.Node // parent widget
+ l *gui.Node // label widget
+ d *gui.Node // dropdown widget
+
+ value string
+ label string
+
+ Custom func()
+}
+
+func (d *BasicCombobox) Get() string {
+ if ! d.Ready() {return ""}
+ return d.value
+}
+
+// Returns true if the status is valid
+func (d *BasicCombobox) Ready() bool {
+ if d == nil {return false}
+ return d.ready
+}
+
+func (d *BasicCombobox) Add(value string) {
+ if ! d.Ready() {return}
+ log.Println("BasicCombobox.Add() =", value)
+ d.d.AddDropdownName(value)
+ return
+}
+
+func (d *BasicCombobox) Set(value string) bool {
+ if ! d.Ready() {return false}
+ log.Println("BasicCombobox.Set() =", value)
+ d.d.SetText(value)
+ d.value = value
+ return true
+}
+
+func NewBasicCombobox(p *gui.Node, name string) *BasicCombobox {
+ d := BasicCombobox {
+ parent: p,
+ name: name,
+ ready: false,
+ }
+
+ // various timeout settings
+ d.l = p.NewLabel(name)
+ d.d = p.NewCombobox("")
+ d.d.Custom = func() {
+ d.value = d.Get()
+ log.Println("BasicCombobox.Custom() user changed value to =", d.value)
+ if d.Custom != nil {
+ d.Custom()
+ }
+ }
+
+ d.ready = true
+ return &d
+}