/* A Labeled Dropdown widget: ----------------------------- | | | | Food: | | | | | ----------------------------- This being a 'Basic Dropdown', the dropdown names must be unique */ package gadgets import ( "go.wit.com/gui" "go.wit.com/log" ) 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) AddText(s string) { if !d.Ready() { return } log.Log(GADGETS, "BasicDropdown.AddText() =", s) d.d.AddText(s) return } func (d *BasicDropdown) SetText(s string) { if !d.Ready() { return } log.Log(GADGETS, "BasicDropdown.SetText() =", s) d.d.SetText(s) return } func (d *BasicDropdown) String() string { if !d.Ready() { return "" } log.Log(GADGETS, "BasicDropdown.String()", d.d.String()) return d.d.String() } func (d *BasicDropdown) SetLabel(value string) bool { if !d.Ready() { return false } log.Log(GADGETS, "BasicDropdown.SetLabel() =", value) d.l.SetText(value) return true } /* func (d *BasicDropdown) Set(value string) bool { if ! d.Ready() {return false} log.Log(GADGETS, "BasicDropdown.Set() =", value) d.d.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.d.String() log.Log(GADGETS, "BasicDropdown.Custom() user changed value to =", d.value) if d.Custom != nil { d.Custom() } } d.ready = true return &d }