now should work without needed to actually display

a nice improvement. actual toolkit widgets
       arent' actually needed. It's faster
       and can run in the dark
    autotypist compiles and runs

Signed-off-by: Jeff Carr <jcarr@wit.com>
This commit is contained in:
Jeff Carr 2024-01-17 21:46:50 -06:00
parent 751b6059c0
commit 32fe455bb5
9 changed files with 70 additions and 125 deletions

View File

@ -12,32 +12,29 @@
package gadgets package gadgets
import ( import (
"reflect"
"strconv"
"go.wit.com/log" "go.wit.com/log"
"go.wit.com/gui/gui" "go.wit.com/gui/gui"
) )
type BasicCombobox struct { type BasicCombobox struct {
ready bool ready bool
name string progname string
parent *gui.Node // parent widget parent *gui.Node // parent widget
l *gui.Node // label widget l *gui.Node // label widget
d *gui.Node // dropdown widget d *gui.Node // dropdown widget
value string
label string
values map[string]string
Custom func() Custom func()
} }
func (d *BasicCombobox) Get() string { func (d *BasicCombobox) String() string {
if ! d.Ready() {return ""} if ! d.Ready() {return ""}
return d.value return d.d.String()
}
func (d *BasicCombobox) SetText(s string) {
if ! d.Ready() {return}
d.d.SetText(s)
} }
// Returns true if the status is valid // Returns true if the status is valid
@ -64,95 +61,28 @@ func (d *BasicCombobox) SetTitle(name string) {
d.d.SetText(name) d.d.SetText(name)
} }
func (d *BasicCombobox) Add(value any) { func (d *BasicCombobox) AddText(s string) {
if ! d.Ready() {return} if ! d.Ready() {return}
log.Log(INFO, "BasicCombobox.Add() =", value) log.Log(INFO, "BasicCombobox.Add() =", s)
d.d.AddText(s)
var b reflect.Kind
b = reflect.TypeOf(value).Kind()
switch b {
case reflect.Int:
var i int
i = value.(int)
s := strconv.Itoa(i)
if d.values[s] != "added" {
d.values[s] = "added"
d.d.AddDropdownName(s)
}
case reflect.String:
s := value.(string)
if d.values[s] != "added" {
d.values[s] = "added"
d.d.AddDropdownName(s)
}
case reflect.Bool:
if value.(bool) == true {
s := "true"
if d.values[s] != "added" {
d.values[s] = "added"
d.d.AddDropdownName(s)
}
} else {
s := "false"
if d.values[s] != "added" {
d.values[s] = "added"
d.d.AddDropdownName(s)
}
}
default:
}
} }
func (d *BasicCombobox) Set(value any) bool { func NewBasicCombobox(p *gui.Node, label string) *BasicCombobox {
if ! d.Ready() {return false}
log.Log(INFO, "BasicCombobox.Set() =", value)
var b reflect.Kind
b = reflect.TypeOf(value).Kind()
switch b {
case reflect.Int:
var i int
i = value.(int)
s := strconv.Itoa(i)
d.d.SetText(s)
d.value = s
case reflect.String:
d.d.SetText(value.(string))
d.value = value.(string)
case reflect.Bool:
if value.(bool) == true {
d.d.SetText("true")
d.value = "true"
} else {
d.d.SetText("false")
d.value = "false"
}
default:
return false
}
return true
}
func NewBasicCombobox(p *gui.Node, name string) *BasicCombobox {
d := BasicCombobox { d := BasicCombobox {
parent: p, parent: p,
name: name, progname: label,
ready: false, ready: false,
} }
// various timeout settings // various timeout settings
d.l = p.NewLabel(name) d.l = p.NewLabel(label)
d.d = p.NewCombobox("") d.d = p.NewCombobox()
d.d.Custom = func() { d.d.Custom = func() {
d.value = d.d.GetText() log.Warn("BasicCombobox.Custom() user changed value to =", d.d.String())
log.Warn("BasicCombobox.Custom() user changed value to =", d.value)
if d.Custom != nil { if d.Custom != nil {
d.Custom() d.Custom()
} }
} }
d.values = make(map[string]string)
d.ready = true d.ready = true
return &d return &d
} }

View File

@ -30,10 +30,12 @@ type BasicDropdown struct {
Custom func() Custom func()
} }
/*
func (d *BasicDropdown) Get() string { func (d *BasicDropdown) Get() string {
if ! d.Ready() {return ""} if ! d.Ready() {return ""}
return d.d.GetText() return d.d.GetText()
} }
*/
// Returns true if the status is valid // Returns true if the status is valid
func (d *BasicDropdown) Ready() bool { func (d *BasicDropdown) Ready() bool {
@ -41,19 +43,33 @@ func (d *BasicDropdown) Ready() bool {
return d.ready return d.ready
} }
func (d *BasicDropdown) Add(value string) { func (d *BasicDropdown) AddText(s string) {
if ! d.Ready() {return} if ! d.Ready() {return}
log.Log(INFO, "BasicDropdown.Set() =", value) log.Log(INFO, "BasicDropdown.AddText() =", s)
d.d.AddDropdownName(value) d.d.AddText(s)
return return
} }
func (d *BasicDropdown) SetText(s string) {
if ! d.Ready() {return}
log.Log(INFO, "BasicDropdown.SetText() =", s)
d.d.SetText(s)
return
}
func (d *BasicDropdown) String() string {
if ! d.Ready() {return ""}
log.Log(INFO, "BasicDropdown.String()", d.d.String())
return d.d.String()
}
func (d *BasicDropdown) SetLabel(value string) bool { func (d *BasicDropdown) SetLabel(value string) bool {
if ! d.Ready() {return false} if ! d.Ready() {return false}
log.Log(INFO, "BasicDropdown.SetLabel() =", value) log.Log(INFO, "BasicDropdown.SetLabel() =", value)
d.l.SetText(value) d.l.SetText(value)
return true return true
} }
/*
func (d *BasicDropdown) Set(value string) bool { func (d *BasicDropdown) Set(value string) bool {
if ! d.Ready() {return false} if ! d.Ready() {return false}
log.Log(INFO, "BasicDropdown.Set() =", value) log.Log(INFO, "BasicDropdown.Set() =", value)
@ -61,6 +77,7 @@ func (d *BasicDropdown) Set(value string) bool {
d.value = value d.value = value
return true return true
} }
*/
func NewBasicDropdown(p *gui.Node, name string) *BasicDropdown { func NewBasicDropdown(p *gui.Node, name string) *BasicDropdown {
d := BasicDropdown { d := BasicDropdown {
@ -71,9 +88,9 @@ func NewBasicDropdown(p *gui.Node, name string) *BasicDropdown {
// various timeout settings // various timeout settings
d.l = p.NewLabel(name) d.l = p.NewLabel(name)
d.d = p.NewDropdown("") d.d = p.NewDropdown()
d.d.Custom = func() { d.d.Custom = func() {
d.value = d.Get() d.value = d.d.String()
log.Log(INFO, "BasicDropdown.Custom() user changed value to =", d.value) log.Log(INFO, "BasicDropdown.Custom() user changed value to =", d.value)
if d.Custom != nil { if d.Custom != nil {
d.Custom() d.Custom()

View File

@ -25,6 +25,7 @@ type BasicEntry struct {
Custom func() Custom func()
} }
/*
func (n *BasicEntry) Get() string { func (n *BasicEntry) Get() string {
return n.value return n.value
} }
@ -37,6 +38,7 @@ func (n *BasicEntry) Set(value string) *BasicEntry {
n.value = value n.value = value
return n return n
} }
*/
func (n *BasicEntry) Enable() { func (n *BasicEntry) Enable() {
log.Log(INFO, "BasicEntry.Enable()") log.Log(INFO, "BasicEntry.Enable()")
@ -52,11 +54,13 @@ func (n *BasicEntry) Disable() {
} }
} }
func (n *BasicEntry) SetLabel(value string) *BasicEntry { func (n *BasicEntry) String() string {
log.Log(INFO, "BasicEntry.SetLabel() =", value) log.Log(INFO, "BasicEntry.SetLabel() =", n.v.String())
if (n.l != nil) { return n.v.String()
n.l.Set(value)
} }
func (n *BasicEntry) SetLabel(s string) *BasicEntry {
n.l.SetText(s)
return n return n
} }
@ -70,7 +74,7 @@ func NewBasicEntry(p *gui.Node, name string) *BasicEntry {
d.l = p.NewLabel(name) d.l = p.NewLabel(name)
d.v = p.NewEntryLine("") d.v = p.NewEntryLine("")
d.v.Custom = func() { d.v.Custom = func() {
d.value = d.v.GetText() d.value = d.v.String()
log.Log(INFO, "BasicEntry.Custom() user changed value to =", d.value) log.Log(INFO, "BasicEntry.Custom() user changed value to =", d.value)
if d.Custom != nil { if d.Custom != nil {
d.Custom() d.Custom()

View File

@ -27,6 +27,7 @@ type BasicLabel struct {
Custom func() Custom func()
} }
/*
func (n *BasicLabel) Get() string { func (n *BasicLabel) Get() string {
return n.value return n.value
} }
@ -39,6 +40,7 @@ func (n *BasicLabel) Set(value string) *BasicLabel {
n.value = value n.value = value
return n return n
} }
*/
func (ngui *Node) NewBasicLabel(name string) *BasicLabel { func (ngui *Node) NewBasicLabel(name string) *BasicLabel {
var n *gui.Node var n *gui.Node
@ -52,7 +54,7 @@ func (ngui *Node) NewBasicLabel(name string) *BasicLabel {
d.l = n.NewLabel(name) d.l = n.NewLabel(name)
d.v = n.NewLabel("") d.v = n.NewLabel("")
d.v.Custom = func() { d.v.Custom = func() {
d.value = d.v.GetText() d.value = d.v.String()
log.Log(INFO, "BasicLabel.Custom() user changed value to =", d.value) log.Log(INFO, "BasicLabel.Custom() user changed value to =", d.value)
} }

View File

@ -66,7 +66,7 @@ func NewDurationSlider(n *gui.Node, label string, low time.Duration, high time.D
d.l = n.NewLabel(label) d.l = n.NewLabel(label)
d.s = n.NewSlider(label, 0, 1000) d.s = n.NewSlider(label, 0, 1000)
d.s.Custom = func () { d.s.Custom = func () {
d.Duration = low + (high - low) * time.Duration(d.s.GetInt()) / 1000 d.Duration = low + (high - low) * time.Duration(d.s.Int()) / 1000
log.Println("d.Duration =", d.Duration) log.Println("d.Duration =", d.Duration)
s := fmt.Sprintf("%s (%v)", d.Label, d.Duration) s := fmt.Sprintf("%s (%v)", d.Label, d.Duration)
d.l.SetText(s) d.l.SetText(s)

6
go.mod
View File

@ -3,13 +3,13 @@ module go.wit.com/gui/gadgets
go 1.21.4 go 1.21.4
require ( require (
go.wit.com/gui/gui v0.12.8 go.wit.com/gui/gui v0.12.10
go.wit.com/log v0.5.3 go.wit.com/log v0.5.5
) )
require ( require (
go.wit.com/dev/alexflint/arg v1.4.5 // indirect go.wit.com/dev/alexflint/arg v1.4.5 // indirect
go.wit.com/dev/alexflint/scalar v1.2.1 // indirect go.wit.com/dev/alexflint/scalar v1.2.1 // indirect
go.wit.com/dev/davecgh/spew v1.1.3 // indirect go.wit.com/dev/davecgh/spew v1.1.4 // indirect
go.wit.com/gui/widget v1.1.3 // indirect go.wit.com/gui/widget v1.1.3 // indirect
) )

12
go.sum
View File

@ -2,11 +2,11 @@ go.wit.com/dev/alexflint/arg v1.4.5 h1:asDx5f9IlfpknKjPBqqb2qndE91Pbo7ZDkWUgddfM
go.wit.com/dev/alexflint/arg v1.4.5/go.mod h1:wnWc+c6z8kSdDKYriMf6RpM+FiXmo5RYp/t4FNi0MU0= go.wit.com/dev/alexflint/arg v1.4.5/go.mod h1:wnWc+c6z8kSdDKYriMf6RpM+FiXmo5RYp/t4FNi0MU0=
go.wit.com/dev/alexflint/scalar v1.2.1 h1:loXOcbVnd+8YeJRLey+XXidecBiedMDO00zQ26TvKNs= go.wit.com/dev/alexflint/scalar v1.2.1 h1:loXOcbVnd+8YeJRLey+XXidecBiedMDO00zQ26TvKNs=
go.wit.com/dev/alexflint/scalar v1.2.1/go.mod h1:+rYsfxqdI2cwA8kJ7GCMwWbNJvfvWUurOCXLiwdTtSs= go.wit.com/dev/alexflint/scalar v1.2.1/go.mod h1:+rYsfxqdI2cwA8kJ7GCMwWbNJvfvWUurOCXLiwdTtSs=
go.wit.com/dev/davecgh/spew v1.1.3 h1:hqnB5qsPgC2cLZaJXqQJspQ5n/Ugry9kyL3tLk0hVzQ= go.wit.com/dev/davecgh/spew v1.1.4 h1:C9hj/rjlUpdK+E6aroyLjCbS5MFcyNUOuP1ICLWdNek=
go.wit.com/dev/davecgh/spew v1.1.3/go.mod h1:sihvWmnQ/09FWplnEmozt90CCVqBtGuPXM811tgfhFA= go.wit.com/dev/davecgh/spew v1.1.4/go.mod h1:sihvWmnQ/09FWplnEmozt90CCVqBtGuPXM811tgfhFA=
go.wit.com/gui/gui v0.12.8 h1:YJ7YjdP9+vwWYVvMakaJPPpfPt9g33Iw0xfuwNQZkmA= go.wit.com/gui/gui v0.12.10 h1:52wFdTqB/GpsFKYFTUvSbHQWNEXz114lhvTfMVrXpYM=
go.wit.com/gui/gui v0.12.8/go.mod h1:iALRA0qw7mn82MX21wrU0FOq/vR9l27If7ObNdOSlNE= go.wit.com/gui/gui v0.12.10/go.mod h1:YgbFWxsGqZb45oLGaHim2GukPzPgMLQcVRRI0QkrGS8=
go.wit.com/gui/widget v1.1.3 h1:GvLzGSOF9tfmoh6HNbFdN+NSlBo2qeS/Ba2TnQQ1A1U= go.wit.com/gui/widget v1.1.3 h1:GvLzGSOF9tfmoh6HNbFdN+NSlBo2qeS/Ba2TnQQ1A1U=
go.wit.com/gui/widget v1.1.3/go.mod h1:A6/FaiFQtAHTjgo7c4FrokXe6bXX1Cowo35b2Lgi31E= go.wit.com/gui/widget v1.1.3/go.mod h1:A6/FaiFQtAHTjgo7c4FrokXe6bXX1Cowo35b2Lgi31E=
go.wit.com/log v0.5.3 h1:/zHkniOPusPEuX1R401rMny9uwSO/nSU/QOMx6qoEnE= go.wit.com/log v0.5.5 h1:bK3b94uVKgev4jB5wg06FnvCFBEapQICTSH2YW+CWr4=
go.wit.com/log v0.5.3/go.mod h1:LzIzVxc2xJQxWQBtV9VbV605P4TOxmYDCl+BZF38yGE= go.wit.com/log v0.5.5/go.mod h1:BaJBfHFqcJSJLXGQ9RHi3XVhPgsStxSMZRlaRxW4kAo=

View File

@ -55,7 +55,7 @@ func NewLogFlag(n *gui.Node, lf *log.LogFlag) *LogFlag {
// various timeout settings // various timeout settings
f.c = n.NewCheckbox(f.Name + ": " + f.Desc) f.c = n.NewCheckbox(f.Name + ": " + f.Desc)
f.c.Custom = func() { f.c.Custom = func() {
f.lf.Set(f.c.GetBool()) f.lf.Set(f.c.Bool())
log.Info("LogFlag.Custom() user changed value to =", f.lf.Get()) log.Info("LogFlag.Custom() user changed value to =", f.lf.Get())
} }
f.c.Set(lf.Get()) f.c.Set(lf.Get())

View File

@ -19,22 +19,16 @@ type OneLiner struct {
l *gui.Node // label widget l *gui.Node // label widget
v *gui.Node // value widget v *gui.Node // value widget
value string
label string
Custom func() Custom func()
} }
func (n *OneLiner) Get() string { func (n *OneLiner) String() string {
return n.value return n.v.String()
} }
func (n *OneLiner) Set(value string) *OneLiner { func (n *OneLiner) SetText(s string) *OneLiner {
log.Log(INFO, "OneLiner.Set() =", value) log.Log(INFO, "OneLiner.Set() =", s)
if (n.v != nil) { n.v.SetText(s)
n.v.Set(value)
}
n.value = value
return n return n
} }
@ -60,18 +54,16 @@ func (n *OneLiner) Disable() {
} }
} }
func NewOneLiner(n *gui.Node, name string) *OneLiner { func NewOneLiner(n *gui.Node, label string) *OneLiner {
d := OneLiner { d := OneLiner {
p: n, p: n,
value: "",
} }
// various timeout settings // various timeout settings
d.l = n.NewLabel(name) d.l = n.NewLabel(label)
d.v = n.NewLabel("") d.v = n.NewLabel("")
d.v.Custom = func() { d.v.Custom = func() {
d.value = d.v.GetText() log.Log(INFO, "OneLiner.Custom() user changed value to =", d.v.String())
log.Log(INFO, "OneLiner.Custom() user changed value to =", d.value)
} }
return &d return &d