diff options
| author | Jeff Carr <[email protected]> | 2024-01-01 16:19:40 -0600 |
|---|---|---|
| committer | Jeff Carr <[email protected]> | 2024-01-01 16:19:40 -0600 |
| commit | 7f6059a8e0f83bb4b450c1264195f08fe1280f05 (patch) | |
| tree | 0c75d2bbbab93c8611bc7ab466a6389485c645b5 /basicDropdown.go | |
initial commit
Diffstat (limited to 'basicDropdown.go')
| -rw-r--r-- | basicDropdown.go | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/basicDropdown.go b/basicDropdown.go new file mode 100644 index 0000000..2279ee3 --- /dev/null +++ b/basicDropdown.go @@ -0,0 +1,79 @@ +/* + A Labeled Dropdown widget: + + ----------------------------- + | | | + | Food: | <dropdown> | + | | | + ----------------------------- + + This being a 'Basic Dropdown', the dropdown names must be unique +*/ +package gadgets + +import ( + "go.wit.com/log" + "go.wit.com/gui/gui" +) + +type BasicDropdown 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 *BasicDropdown) Get() string { + if ! d.Ready() {return ""} + return d.d.GetText() +} + +// Returns true if the status is valid +func (d *BasicDropdown) Ready() bool { + if d == nil {return false} + return d.ready +} + +func (d *BasicDropdown) Add(value string) { + if ! d.Ready() {return} + log.Println("BasicDropdown.Set() =", value) + d.d.AddDropdownName(value) + return +} + +func (d *BasicDropdown) Set(value string) bool { + if ! d.Ready() {return false} + log.Println("BasicDropdown.Set() =", value) + d.l.SetText(value) + d.value = value + return true +} + +func NewBasicDropdown(p *gui.Node, name string) *BasicDropdown { + d := BasicDropdown { + parent: p, + name: name, + ready: false, + } + + // various timeout settings + d.l = p.NewLabel(name) + d.d = p.NewDropdown("") + d.d.Custom = func() { + d.value = d.Get() + log.Println("BasicDropdown.Custom() user changed value to =", d.value) + if d.Custom != nil { + d.Custom() + } + } + + d.ready = true + return &d +} |
