From aa93809facd61407c80e0d4472b02fb68edc41be Mon Sep 17 00:00:00 2001 From: Jeff Carr Date: Mon, 17 Oct 2022 11:56:43 -0500 Subject: DEMO: add andlabs/ui demo window Signed-off-by: Jeff Carr --- debug-window.go | 3 ++ demo-window-andlabs-ui.go | 84 --------------------------------------- toolkit/andlabs/entry.go | 23 +++++++++++ toolkit/andlabs/spinbox.go | 49 ----------------------- toolkit/andlabs/structs.go | 89 +++++++++++++++++++++++++++++++++++++++++ window-demo-andlabs-ui.go | 99 ++++++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 214 insertions(+), 133 deletions(-) delete mode 100644 demo-window-andlabs-ui.go create mode 100644 toolkit/andlabs/entry.go create mode 100644 toolkit/andlabs/structs.go create mode 100644 window-demo-andlabs-ui.go diff --git a/debug-window.go b/debug-window.go index b8f2d8f..e555cfa 100644 --- a/debug-window.go +++ b/debug-window.go @@ -15,6 +15,9 @@ var nodeNames = make([]string, 100) func DebugWindow() { Config.Title = "git.wit.org/wit/gui debug" + Config.Width = 640 + Config.Height = 480 + Config.Exit = StandardClose node := NewWindow() node.DebugTab("WIT GUI Debug Tab") } diff --git a/demo-window-andlabs-ui.go b/demo-window-andlabs-ui.go deleted file mode 100644 index e11ffe9..0000000 --- a/demo-window-andlabs-ui.go +++ /dev/null @@ -1,84 +0,0 @@ -package gui - -import "log" -import "github.com/andlabs/ui" -import _ "github.com/andlabs/ui/winmanifest" - -// This will create a tab in a window using direct -// calls to andlabs/ui. This can be used to bypass -// the obvuscation added in this package if it is desired -// or needed. -func (n *Node) DemoAndlabsUiTab(title string) { - newNode := n.AddTab(title, makeAndlabsUiTab()) - if (Config.DebugNode) { - newNode.Dump() - } - tabSetMargined(newNode.uiTab) -} - -func makeAndlabsUiTab() *ui.Box { - hbox := ui.NewHorizontalBox() - hbox.SetPadded(true) - - group := ui.NewGroup("Numbers") - group.SetMargined(true) - hbox.Append(group, true) - - vbox := ui.NewVerticalBox() - vbox.SetPadded(true) - group.SetChild(vbox) - - spinbox := ui.NewSpinbox(47, 100) - slider := ui.NewSlider(21, 100) - pbar := ui.NewProgressBar() - - spinbox.OnChanged(func(*ui.Spinbox) { - slider.SetValue(spinbox.Value()) - pbar.SetValue(spinbox.Value()) - }) - slider.OnChanged(func(*ui.Slider) { - spinbox.SetValue(slider.Value()) - pbar.SetValue(slider.Value()) - }) - vbox.Append(spinbox, false) - vbox.Append(slider, false) - vbox.Append(pbar, false) - - ip := ui.NewProgressBar() - ip.SetValue(-1) - vbox.Append(ip, false) - - group = ui.NewGroup("Lists") - group.SetMargined(true) - hbox.Append(group, true) - - vbox = ui.NewVerticalBox() - vbox.SetPadded(true) - group.SetChild(vbox) - - cbox := ui.NewCombobox() - cbox.Append("Combobox Item 1") - cbox.Append("Combobox Item 2") - cbox.Append("Combobox Item 3") - vbox.Append(cbox, false) - - ecbox := ui.NewEditableCombobox() - ecbox.Append("Editable Item 1") - ecbox.Append("Editable Item 2") - ecbox.Append("Editable Item 3") - vbox.Append(ecbox, false) - - ecbox.OnChanged(func(*ui.EditableCombobox) { - log.Println("test") - test := ecbox.Text() - log.Println("test=", test) - }) - - rb := ui.NewRadioButtons() - rb.Append("Radio Button 1") - rb.Append("Radio Button 2") - rb.Append("Radio Button 3") - vbox.Append(rb, false) - - return hbox -} diff --git a/toolkit/andlabs/entry.go b/toolkit/andlabs/entry.go new file mode 100644 index 0000000..c981732 --- /dev/null +++ b/toolkit/andlabs/entry.go @@ -0,0 +1,23 @@ +package toolkit + +import "log" + +import "github.com/andlabs/ui" +import _ "github.com/andlabs/ui/winmanifest" + +func NewEntry(b *ui.Box, name string) *Toolkit { + // make new node here + log.Println("gui.Toolbox.NewEntry", name) + var t Toolkit + + if (b == nil) { + log.Println("gui.ToolboxNode.NewEntry() node.UiBox == nil. I can't add a range UI element without a place to put it") + return &t + } + l := ui.NewEntry() + t.uiEntry = l + t.uiBox = b + t.uiBox.Append(l, false) + + return &t +} diff --git a/toolkit/andlabs/spinbox.go b/toolkit/andlabs/spinbox.go index ec268f1..d3d7bfe 100644 --- a/toolkit/andlabs/spinbox.go +++ b/toolkit/andlabs/spinbox.go @@ -7,55 +7,6 @@ import _ "github.com/andlabs/ui/winmanifest" import "github.com/davecgh/go-spew/spew" -var DebugToolkit bool = false - -// stores the raw toolkit internals -type Toolkit struct { - id string - - Name string - Width int - Height int - - OnChanged func(*Toolkit) - - uiBox *ui.Box - uiButton *ui.Button - uiControl *ui.Control - uiLabel *ui.Label - uiSlider *ui.Slider - uiSpinbox *ui.Spinbox - uiTab *ui.Tab - uiText *ui.EditableCombobox - uiWindow *ui.Window -} - -func (t *Toolkit) Value() int { - if (DebugToolkit) { - log.Println("gui.Toolkit.Value() Enter") - scs := spew.ConfigState{MaxDepth: 1} - scs.Dump(t) - } - if (t == nil) { - log.Println("gui.Toolkit.Value() can not get value t == nil") - return 0 - } - if (t.uiSlider != nil) { - if (DebugToolkit) { - log.Println("gui.Toolkit.Value() =", t.uiSlider.Value) - } - return t.uiSlider.Value() - } - if (t.uiSpinbox != nil) { - if (DebugToolkit) { - log.Println("gui.Toolkit.Value() =", t.uiSpinbox.Value) - } - return t.uiSpinbox.Value() - } - log.Println("gui.Toolkit.Value() Could not find a ui element to get a value from") - return 0 -} - func NewSpinbox(b *ui.Box, name string, x int, y int) *Toolkit { // make new node here log.Println("gui.Toolbox.NewSpinbox()", x, y) diff --git a/toolkit/andlabs/structs.go b/toolkit/andlabs/structs.go new file mode 100644 index 0000000..50dc144 --- /dev/null +++ b/toolkit/andlabs/structs.go @@ -0,0 +1,89 @@ +package toolkit + +import "log" + +import "github.com/andlabs/ui" +import _ "github.com/andlabs/ui/winmanifest" + +import "github.com/davecgh/go-spew/spew" + +var DebugToolkit bool = false + +// stores the raw toolkit internals +type Toolkit struct { + id string + + Name string + Width int + Height int + + OnChanged func(*Toolkit) + + uiBox *ui.Box + uiButton *ui.Button + uiControl *ui.Control + uiEntry *ui.Entry + uiLabel *ui.Label + uiSlider *ui.Slider + uiSpinbox *ui.Spinbox + uiTab *ui.Tab + uiText *ui.EditableCombobox + uiWindow *ui.Window +} + +func (t *Toolkit) GetText() string { + if (DebugToolkit) { + log.Println("gui.Toolkit.Text() Enter") + scs := spew.ConfigState{MaxDepth: 1} + scs.Dump(t) + } + if (t.uiEntry != nil) { + if (DebugToolkit) { + log.Println("gui.Toolkit.Value() =", t.uiEntry.Text) + } + return t.uiEntry.Text() + } + return "" +} + +func (t *Toolkit) SetText(s string) bool { + if (DebugToolkit) { + log.Println("gui.Toolkit.Text() Enter") + scs := spew.ConfigState{MaxDepth: 1} + scs.Dump(t) + } + if (t.uiEntry != nil) { + if (DebugToolkit) { + log.Println("gui.Toolkit.Value() =", t.uiEntry.Text) + } + t.uiEntry.SetText(s) + return true + } + return false +} + +func (t *Toolkit) Value() int { + if (DebugToolkit) { + log.Println("gui.Toolkit.Value() Enter") + scs := spew.ConfigState{MaxDepth: 1} + scs.Dump(t) + } + if (t == nil) { + log.Println("gui.Toolkit.Value() can not get value t == nil") + return 0 + } + if (t.uiSlider != nil) { + if (DebugToolkit) { + log.Println("gui.Toolkit.Value() =", t.uiSlider.Value) + } + return t.uiSlider.Value() + } + if (t.uiSpinbox != nil) { + if (DebugToolkit) { + log.Println("gui.Toolkit.Value() =", t.uiSpinbox.Value) + } + return t.uiSpinbox.Value() + } + log.Println("gui.Toolkit.Value() Could not find a ui element to get a value from") + return 0 +} diff --git a/window-demo-andlabs-ui.go b/window-demo-andlabs-ui.go new file mode 100644 index 0000000..1c72603 --- /dev/null +++ b/window-demo-andlabs-ui.go @@ -0,0 +1,99 @@ +package gui + +import "log" +import "github.com/andlabs/ui" +import _ "github.com/andlabs/ui/winmanifest" + +func ToolkitDemoWindow() { + var w *Node + log.Println("ToolkitDemoWindow() START") + + Config.Title = "Demo the GUI Toolkit" + Config.Width = 640 + Config.Height = 480 + Config.Exit = StandardClose + w = NewWindow() + + w.DemoAndlabsUiTab("ran AddDemoAndlabsUiTab()") + + log.Println("ToolkitDemoWindow() END") +} + +// This will create a tab in a window using direct +// calls to andlabs/ui. This can be used to bypass +// the obvuscation added in this package if it is desired +// or needed. +func (n *Node) DemoAndlabsUiTab(title string) { + newNode := n.AddTab(title, makeAndlabsUiTab()) + if (Config.DebugNode) { + newNode.Dump() + } + tabSetMargined(newNode.uiTab) +} + +func makeAndlabsUiTab() *ui.Box { + hbox := ui.NewHorizontalBox() + hbox.SetPadded(true) + + group := ui.NewGroup("Numbers") + group.SetMargined(true) + hbox.Append(group, true) + + vbox := ui.NewVerticalBox() + vbox.SetPadded(true) + group.SetChild(vbox) + + spinbox := ui.NewSpinbox(47, 100) + slider := ui.NewSlider(21, 100) + pbar := ui.NewProgressBar() + + spinbox.OnChanged(func(*ui.Spinbox) { + slider.SetValue(spinbox.Value()) + pbar.SetValue(spinbox.Value()) + }) + slider.OnChanged(func(*ui.Slider) { + spinbox.SetValue(slider.Value()) + pbar.SetValue(slider.Value()) + }) + vbox.Append(spinbox, false) + vbox.Append(slider, false) + vbox.Append(pbar, false) + + ip := ui.NewProgressBar() + ip.SetValue(-1) + vbox.Append(ip, false) + + group = ui.NewGroup("Lists") + group.SetMargined(true) + hbox.Append(group, true) + + vbox = ui.NewVerticalBox() + vbox.SetPadded(true) + group.SetChild(vbox) + + cbox := ui.NewCombobox() + cbox.Append("Combobox Item 1") + cbox.Append("Combobox Item 2") + cbox.Append("Combobox Item 3") + vbox.Append(cbox, false) + + ecbox := ui.NewEditableCombobox() + ecbox.Append("Editable Item 1") + ecbox.Append("Editable Item 2") + ecbox.Append("Editable Item 3") + vbox.Append(ecbox, false) + + ecbox.OnChanged(func(*ui.EditableCombobox) { + log.Println("test") + test := ecbox.Text() + log.Println("test=", test) + }) + + rb := ui.NewRadioButtons() + rb.Append("Radio Button 1") + rb.Append("Radio Button 2") + rb.Append("Radio Button 3") + vbox.Append(rb, false) + + return hbox +} -- cgit v1.2.3