diff options
| author | Jeff Carr <[email protected]> | 2023-02-25 14:05:25 -0600 |
|---|---|---|
| committer | Jeff Carr <[email protected]> | 2023-02-25 14:05:25 -0600 |
| commit | f3bb68396afa7452ecf1c8d4744c825a9d81057c (patch) | |
| tree | 00b55a17cee7a8e2f795c479a84a844779993c1c /toolkit/andlabs | |
| parent | 355e5ec968427c2b07b78fec12224f31a65df740 (diff) | |
The debugging window is finally useful
the gui enabled debugging works
--gui-debug works from the command line
The debug window can now select things
debugging now includes widget types
all the debug flags work
finally working debugging flags via gui checkboxes
add debian packaging rules
use log() in the toolkit
use a standard log() to simplify debugging flags
add reference to 'GO Style Guide'
use the same LICENSE from the GO developers.
TODO: make this threadsafe
TODO: fix plugin stuff
Signed-off-by: Jeff Carr <[email protected]>
Diffstat (limited to 'toolkit/andlabs')
| -rw-r--r-- | toolkit/andlabs/box.go | 22 | ||||
| -rw-r--r-- | toolkit/andlabs/button.go | 52 | ||||
| -rw-r--r-- | toolkit/andlabs/checkbox.go | 41 | ||||
| -rw-r--r-- | toolkit/andlabs/common.go | 72 | ||||
| -rw-r--r-- | toolkit/andlabs/debug.go | 193 | ||||
| -rw-r--r-- | toolkit/andlabs/demo.go | 4 | ||||
| -rw-r--r-- | toolkit/andlabs/dropdown.go | 26 | ||||
| -rw-r--r-- | toolkit/andlabs/group.go | 16 | ||||
| -rw-r--r-- | toolkit/andlabs/label.go | 66 | ||||
| -rw-r--r-- | toolkit/andlabs/log.go | 136 | ||||
| -rw-r--r-- | toolkit/andlabs/main.go | 32 | ||||
| -rw-r--r-- | toolkit/andlabs/plugin.go | 30 | ||||
| -rw-r--r-- | toolkit/andlabs/slider.go | 15 | ||||
| -rw-r--r-- | toolkit/andlabs/spinner.go | 9 | ||||
| -rw-r--r-- | toolkit/andlabs/structs.go | 208 | ||||
| -rw-r--r-- | toolkit/andlabs/tab.go | 55 | ||||
| -rw-r--r-- | toolkit/andlabs/textbox.go | 23 | ||||
| -rw-r--r-- | toolkit/andlabs/window.go | 34 |
18 files changed, 591 insertions, 443 deletions
diff --git a/toolkit/andlabs/box.go b/toolkit/andlabs/box.go index bb9945e..463b89a 100644 --- a/toolkit/andlabs/box.go +++ b/toolkit/andlabs/box.go @@ -1,7 +1,5 @@ package main -import "log" - import "github.com/andlabs/ui" import _ "github.com/andlabs/ui/winmanifest" @@ -12,14 +10,10 @@ func (t *andlabsT) GetBox() *ui.Box { // create a new box func (t *andlabsT) NewBox() *andlabsT { - if (DebugToolkit) { - log.Println("gui.Toolbox.NewBox() START create default") - } + log(debugToolkit, "gui.Toolbox.NewBox() START create default") t.Dump() if (t.uiGroup != nil) { - if (DebugToolkit) { - log.Println("\tgui.Toolbox.NewBox() is a Group") - } + log(debugToolkit, "\tgui.Toolbox.NewBox() is a Group") var newTK andlabsT vbox := ui.NewVerticalBox() @@ -30,9 +24,7 @@ func (t *andlabsT) NewBox() *andlabsT { return &newTK } if (t.uiBox != nil) { - if (DebugToolkit) { - log.Println("\tgui.Toolbox.NewBox() is a Box") - } + log(debugToolkit, "\tgui.Toolbox.NewBox() is a Box") var newTK andlabsT vbox := ui.NewVerticalBox() @@ -44,9 +36,7 @@ func (t *andlabsT) NewBox() *andlabsT { return &newTK } if (t.uiWindow != nil) { - if (DebugToolkit) { - log.Println("\tgui.Toolbox.NewBox() is a Window") - } + log(debugToolkit, "\tgui.Toolbox.NewBox() is a Window") var newT andlabsT vbox := ui.NewVerticalBox() @@ -58,9 +48,7 @@ func (t *andlabsT) NewBox() *andlabsT { // panic("WTF") return &newT } - if (DebugToolkit) { - log.Println("\tgui.Toolbox.NewBox() FAILED. Couldn't figure out where to make a box") - } + log(debugToolkit, "\tgui.Toolbox.NewBox() FAILED. Couldn't figure out where to make a box") t.Dump() return nil } diff --git a/toolkit/andlabs/button.go b/toolkit/andlabs/button.go index bd80683..9933e1f 100644 --- a/toolkit/andlabs/button.go +++ b/toolkit/andlabs/button.go @@ -1,21 +1,20 @@ package main -import "log" -// import "os" +import ( + "github.com/andlabs/ui" + _ "github.com/andlabs/ui/winmanifest" + "git.wit.org/wit/gui/toolkit" +) -import "github.com/andlabs/ui" -import _ "github.com/andlabs/ui/winmanifest" - -import "git.wit.org/wit/gui/toolkit" func NewButton(parentW *toolkit.Widget, w *toolkit.Widget) { var t, newt *andlabsT var b *ui.Button - log.Println("gui.andlabs.NewButton()", w.Name) + log(debugToolkit, "gui.andlabs.NewButton()", w.Name) t = mapToolkits[parentW] if (t == nil) { - log.Println("go.andlabs.NewButton() toolkit struct == nil. name=", parentW.Name, w.Name) + log(debugToolkit, "go.andlabs.NewButton() toolkit struct == nil. name=", parentW.Name, w.Name) return } @@ -28,38 +27,29 @@ func NewButton(parentW *toolkit.Widget, w *toolkit.Widget) { newt.uiButton = b b.OnClicked(func(*ui.Button) { - if (DebugToolkit) { - log.Println("TODO: IN TOOLKIT GOROUTINE. SHOULD LEAVE HERE VIA channels. button name =", w.Name) - log.Println("FOUND WIDGET!", w) - } - if (w.Custom != nil) { - w.Custom() - return - } - if (w.Event != nil) { - w.Event(w) + log(debugChange, "TODO: SHOULD LEAVE Button click HERE VIA channels. button name =", w.Name) + log(debugChange, "FOUND WIDGET =", w) + if (w.Custom == nil) { + log(debugChange, "WIDGET DOES NOT have Custom()") + log(debugChange, "TODO: NOTHING TO DO button name =", w.Name) return } - t.Dump() - newt.Dump() - if (DebugToolkit) { - log.Println("TODO: LEFT TOOLKIT GOROUTINE WITH NOTHING TO DO button name =", w.Name) - } + // t.Dump() + // newt.Dump() + log(debugChange, "Running w.Custom()") + w.Custom() }) - if (DebugToolkit) { - log.Println("gui.Toolbox.NewButton() about to append to Box parent t:", w.Name) - t.Dump() - log.Println("gui.Toolbox.NewButton() about to append to Box new t:", w.Name) - newt.Dump() - } + log(debugToolkit, "gui.Toolbox.NewButton() about to append to Box parent t:", w.Name) + log(debugToolkit, "gui.Toolbox.NewButton() about to append to Box new t:", w.Name) + if (t.uiBox != nil) { t.uiBox.Append(b, stretchy) } else if (t.uiWindow != nil) { t.uiWindow.SetChild(b) } else { - log.Println("ERROR: wit/gui andlabs couldn't place this button in a box or a window") - log.Println("ERROR: wit/gui andlabs couldn't place this button in a box or a window") + log(debugToolkit, "ERROR: wit/gui andlabs couldn't place this button in a box or a window") + log(debugToolkit, "ERROR: wit/gui andlabs couldn't place this button in a box or a window") return } diff --git a/toolkit/andlabs/checkbox.go b/toolkit/andlabs/checkbox.go index b4b1524..5466d17 100644 --- a/toolkit/andlabs/checkbox.go +++ b/toolkit/andlabs/checkbox.go @@ -1,12 +1,12 @@ package main -import "log" +import "git.wit.org/wit/gui/toolkit" import "github.com/andlabs/ui" import _ "github.com/andlabs/ui/winmanifest" -func (t andlabsT) NewCheckbox(name string) *andlabsT { - log.Println("gui.Toolkit.NewCheckbox()", name) +func (t andlabsT) NewCheckbox(name string, f func()) *andlabsT { + log(debugToolkit, "gui.Toolkit.NewCheckbox()", name) var newt andlabsT if t.broken() { @@ -17,9 +17,20 @@ func (t andlabsT) NewCheckbox(name string) *andlabsT { newt.uiCheckbox = c newt.uiBox = t.uiBox t.uiBox.Append(c, stretchy) + // newt.Custom = f c.OnToggled(func(spin *ui.Checkbox) { + // log(debugToolkit, "gui.Toolkit.NewCheckbox() clicked", name) newt.commonChange("Checkbox") + /* + if (f != nil) { + log(debugToolkit, "Run custom() here", f) + log(SPEW, f) + f() + } else { + log(debugToolkit, "No custom() function here") + } + */ }) return &newt @@ -32,3 +43,27 @@ func (t andlabsT) Checked() bool { return t.uiCheckbox.Checked() } + +func NewCheckbox(parentW *toolkit.Widget, w *toolkit.Widget) { + log(debugToolkit, "gui.andlabs.NewCheckbox()", w.Name) + + t := mapToolkits[parentW] + if (t == nil) { + listMap() + } + newt := t.NewCheckbox(w.Name, w.Custom) + newt.Custom = w.Custom + /* + if (w.Custom != nil) { + log(true, "go.andlabs.NewCheckbox() toolkit struct == nil. name=", parentW.Name, w.Name) + log(true, "Run custom() START here", w.Custom) + w.Custom() + log(true, "Run custom() END") + // exit("ran it here") + } else { + log(true, "No custom() function here") + // exit("nothing here") + } + */ + mapWidgetsToolkits(w, newt) +} diff --git a/toolkit/andlabs/common.go b/toolkit/andlabs/common.go index fc6cbe8..94e19e1 100644 --- a/toolkit/andlabs/common.go +++ b/toolkit/andlabs/common.go @@ -1,37 +1,63 @@ package main -import "log" - +// This is important. This sets the defaults for the gui. Without this, there isn't correct padding, etc func init() { - if (DebugToolkit) { - log.Println("gui/toolkit init() Setting defaultBehavior = true") - } + // Can you pass values to a plugin init() ? Otherwise, there is no way to safely print + // log(debugToolkit, "gui/toolkit init() Setting defaultBehavior = true") setDefaultBehavior(true) } func (t andlabsT) commonChange(widget string) { s := t.String() - if (DebugToolkit) { - log.Println("gui.Toolkit.ui.OnChanged() =", s) - } + log(debugChange, "commonChange() START widget =", widget) + log(debugChange, "commonChange() t.String =", s) if (t.OnChanged != nil) { - if (DebugToolkit) { - log.Println("gui.Toolkit.OnChanged() trying to run toolkit.OnChanged() entered val =", s) - } - t.OnChanged(&t) + // log(debugChange, "commonChange() toolkit.OnChanged() START") + // t.OnChanged(&t) + exit("OnChanged is not implemented. TODO: FIX THIS") return } if (t.Custom != nil) { - if (DebugToolkit) { - log.Println("gui.Toolkit.OnChanged() Running toolkit.Custom()") - t.Dump() - } + log(debugChange, "commonChange() START toolkit.Custom()") t.Custom() + log(debugChange, "commonChange() END toolkit.Custom()") + return + } + if (widget == "Checkbox") { + log(debugChange, "commonChange() END Need to read the Checkbox value") + return + } + if (widget == "Dropdown") { + t.getDropdown() + if (t.tw == nil) { + log(debugChange, "commonChange() END tw.Custom == nil") + } + if (t.tw.Custom == nil) { + log(debugChange, "commonChange() END Dropdown (no custom())") + } + t.tw.Custom() + log(debugChange, "commonChange() END Dropdown") + return + } + log(debugChange, "commonChange() t.String =", s) + log(debugChange, "commonChange() ENDED without finding any callback") +} + +func (t *andlabsT) getDropdown() { + log(debugChange, "commonChange() Need to read the dropdown menu") + if (t.uiCombobox == nil) { + log(debugChange, "commonChange() END BAD NEWS. t.uiCombobox == nil") return } - if (DebugToolkit) { - log.Println("gui.Toolkit.OnChanged() ENDED without finding any callback") + i := t.uiCombobox.Selected() + log(debugChange, "commonChange() t.uiCombobox = ", i) + if (t.tw == nil) { + log(debugChange, "commonChange() END tw = nil") + return } + t.tw.S = t.String() + log(debugChange, "commonChange() END tw = ", t.tw) + return } // does some sanity checks on the internal structs of the binary tree @@ -39,21 +65,19 @@ func (t andlabsT) commonChange(widget string) { func (t *andlabsT) broken() bool { if (t.uiBox == nil) { if (t.uiWindow != nil) { - if (DebugToolkit) { - log.Println("gui.Toolkit.UiBox == nil. This is an empty window. Try to add a box") - } + log(debugToolkit, "gui.Toolkit.UiBox == nil. This is an empty window. Try to add a box") t.NewBox() return false } - log.Println("gui.Toolkit.UiBox == nil. I can't add a widget without a place to put it") - // log.Println("probably could just make a box here?") + log(debugToolkit, "gui.Toolkit.UiBox == nil. I can't add a widget without a place to put it") + // log(debugToolkit, "probably could just make a box here?") // corruption or something horrible? panic("wit/gui toolkit/andlabs func broken() invalid goroutine access into this toolkit?") panic("wit/gui toolkit/andlabs func broken() this probably should not cause the app to panic here (?)") return true } if (t.uiWindow == nil) { - log.Println("gui.Toolkit.UiWindow == nil. I can't add a widget without a place to put it (IGNORING FOR NOW)") + log(debugToolkit, "gui.Toolkit.UiWindow == nil. I can't add a widget without a place to put it (IGNORING FOR NOW)") forceDump(t) return false } diff --git a/toolkit/andlabs/debug.go b/toolkit/andlabs/debug.go new file mode 100644 index 0000000..9b7e160 --- /dev/null +++ b/toolkit/andlabs/debug.go @@ -0,0 +1,193 @@ +package main + +// import "git.wit.org/wit/gui/toolkit" + +import "github.com/davecgh/go-spew/spew" + +var defaultBehavior bool = true + +var bookshelf bool // do you want things arranged in the box like a bookshelf or a stack? +var canvas bool // if set to true, the windows are a raw canvas +var menubar bool // for windows +var stretchy bool // expand things like buttons to the maximum size +var padded bool // add space between things like buttons +var margin bool // add space around the frames of windows + +var debugToolkit bool +var debugChange bool +// var DebugToolkit bool + +// This is important. This sets the defaults for the gui. Without this, there isn't correct padding, etc +func setDefaultBehavior(s bool) { + defaultBehavior = s + if (defaultBehavior) { + log(debugToolkit, "Setting this toolkit to use the default behavior.") + log(debugToolkit, "This is the 'guessing' part as defined by the wit/gui 'Principles'. Refer to the docs.") + stretchy = false + padded = true + menubar = true + margin = true + canvas = false + bookshelf = true // 99% of the time, things make a vertical stack of objects + } else { + log(debugToolkit, "This toolkit is set to ignore the default behavior.") + } +} + +func SetDebugToolkit (s bool) { + debugToolkit = s + log(true, "debugToolkit =", debugToolkit) + log(true, "debugChange =", debugChange) +} + +func SetDebugChange (s bool) { + debugChange = s + log(true, "debugToolkit =", debugToolkit) + log(true, "debugChange =", debugChange) +} + +func ShowDebug () { + log(true, "debugToolkit =", debugToolkit) + log(true, "debugChange =", debugChange) +} + +func GetDebugToolkit () bool { + return debugToolkit +} + +func (t *andlabsT) String() string { + return t.GetText() +} + +func forceDump(t *andlabsT) { + tmp := debugToolkit + debugToolkit = true + t.Dump() + debugToolkit = tmp +} + +func (t *andlabsT) GetText() string { + log(debugToolkit, "gui.Toolkit.GetText() Enter debugToolkit=", debugToolkit) + if (t.uiEntry != nil) { + log(debugToolkit, "gui.Toolkit.uiEntry.Text() =", t.uiEntry.Text()) + return t.uiEntry.Text() + } + if (t.uiMultilineEntry != nil) { + log(debugToolkit, "gui.Toolkit.uiMultilineEntry.Text() =", t.uiMultilineEntry.Text()) + text := t.uiMultilineEntry.Text() + log(debugToolkit, "gui.Toolkit.uiMultilineEntry.Text() =", text) + t.text = text + return text + } + if (t.uiCombobox != nil) { + log(debugToolkit, "gui.Toolkit.uiCombobox() =", t.text) + return t.text + } + return "" +} + +func (t *andlabsT) SetText(s string) bool { + log(debugToolkit, "gui.Toolkit.Text() SetText() Enter") + if (t.uiEntry != nil) { + log(debugToolkit, "gui.Toolkit.Value() =", t.uiEntry.Text) + t.uiEntry.SetText(s) + return true + } + if (t.uiMultilineEntry != nil) { + log(debugToolkit, "gui.Toolkit.Value() =", t.uiMultilineEntry.Text) + t.uiMultilineEntry.SetText(s) + return true + } + return false +} + +func sanity(t *andlabsT) bool { + if (debugToolkit) { + log(debugToolkit, "gui.Toolkit.Value() Enter") + scs := spew.ConfigState{MaxDepth: 1} + scs.Dump(t) + } + if (t.uiEntry == nil) { + log(debugToolkit, "gui.Toolkit.Value() =", t.uiEntry.Text) + return false + } + return true +} + +func (t *andlabsT) SetValue(i int) bool { + log(debugToolkit, "gui.Toolkit.SetValue() START") + if (sanity(t)) { + return false + } + t.Dump() + // panic("got to toolkit.SetValue") + return true +} + +func (t *andlabsT) Value() int { + if (debugToolkit) { + log(debugToolkit, "gui.Toolkit.Value() Enter") + scs := spew.ConfigState{MaxDepth: 1} + scs.Dump(t) + } + if (t == nil) { + log(debugToolkit, "gui.Toolkit.Value() can not get value t == nil") + return 0 + } + if (t.uiSlider != nil) { + log(debugToolkit, "gui.Toolkit.Value() =", t.uiSlider.Value) + return t.uiSlider.Value() + } + if (t.uiSpinbox != nil) { + log(debugToolkit, "gui.Toolkit.Value() =", t.uiSpinbox.Value) + return t.uiSpinbox.Value() + } + log(debugToolkit, "gui.Toolkit.Value() Could not find a ui element to get a value from") + return 0 +} + +func (t *andlabsT) Dump() { + if ! debugToolkit { + return + } + log(debugToolkit, "gui.Toolkit.Dump() Name = ", t.Name, t.Width, t.Height) + if (t.uiBox != nil) { + log(debugToolkit, "gui.Toolkit.Dump() uiBox =", t.uiBox) + } + if (t.uiButton != nil) { + log(debugToolkit, "gui.Toolkit.Dump() uiButton =", t.uiButton) + } + if (t.uiCombobox != nil) { + log(debugToolkit, "gui.Toolkit.Dump() uiCombobox =", t.uiCombobox) + } + if (t.uiWindow != nil) { + log(debugToolkit, "gui.Toolkit.Dump() uiWindow =", t.uiWindow) + } + if (t.uiTab != nil) { + log(debugToolkit, "gui.Toolkit.Dump() uiTab =", t.uiTab) + } + if (t.uiGroup != nil) { + log(debugToolkit, "gui.Toolkit.Dump() uiGroup =", t.uiGroup) + } + if (t.uiEntry != nil) { + log(debugToolkit, "gui.Toolkit.Dump() uiEntry =", t.uiEntry) + } + if (t.uiMultilineEntry != nil) { + log(debugToolkit, "gui.Toolkit.Dump() uiMultilineEntry =", t.uiMultilineEntry) + } + if (t.uiSlider != nil) { + log(debugToolkit, "gui.Toolkit.Dump() uiSlider =", t.uiSlider) + } + if (t.uiCheckbox != nil) { + log(debugToolkit, "gui.Toolkit.Dump() uiCheckbox =", t.uiCheckbox) + } + if (t.OnExit != nil) { + log(debugToolkit, "gui.Toolkit.Dump() OnExit =", t.OnExit) + } + if (t.Custom != nil) { + log(debugToolkit, "gui.Toolkit.Dump() Custom =", t.Custom) + } + log(debugToolkit, "gui.Toolkit.Dump() c =", t.c) + log(debugToolkit, "gui.Toolkit.Dump() val =", t.val) + log(debugToolkit, "gui.Toolkit.Dump() text =", t.text) +} diff --git a/toolkit/andlabs/demo.go b/toolkit/andlabs/demo.go index 0781f88..1b9a2b1 100644 --- a/toolkit/andlabs/demo.go +++ b/toolkit/andlabs/demo.go @@ -1,7 +1,5 @@ package main -import "log" - import "github.com/andlabs/ui" import _ "github.com/andlabs/ui/winmanifest" @@ -22,7 +20,7 @@ func BlankWindow(w *ui.Window) *ui.Box { func (t *andlabsT) DemoNumbersPage() { var w *ui.Window - log.Println("Starting wit/gui toolkit andlabs/ui DemoNumbersPage()") + log(debugToolkit, "Starting wit/gui toolkit andlabs/ui DemoNumbersPage()") w = t.uiWindow t.uiBox = makeNumbersPage() diff --git a/toolkit/andlabs/dropdown.go b/toolkit/andlabs/dropdown.go index 1e1886a..2691a62 100644 --- a/toolkit/andlabs/dropdown.go +++ b/toolkit/andlabs/dropdown.go @@ -1,8 +1,5 @@ package main -import "log" -// import "time" - import "github.com/andlabs/ui" import _ "github.com/andlabs/ui/winmanifest" @@ -10,11 +7,10 @@ import "git.wit.org/wit/gui/toolkit" func (t *andlabsT) NewDropdown(title string) *andlabsT { // make new node here - if (DebugToolkit) { - log.Println("gui.Toolbox.NewDropdownCombobox()", title) - } var newt andlabsT + log(debugToolkit, "gui.Toolbox.NewDropdownCombobox()", title) + if t.broken() { return nil } @@ -31,7 +27,7 @@ func (t *andlabsT) NewDropdown(title string) *andlabsT { s.OnSelected(func(spin *ui.Combobox) { i := spin.Selected() if (newt.val == nil) { - log.Println("make map didn't work") + log(debugToolkit, "make map didn't work") newt.text = "error" } newt.text = newt.val[i] @@ -44,7 +40,7 @@ func (t *andlabsT) NewDropdown(title string) *andlabsT { func (t *andlabsT) AddDropdownName(title string) { t.uiCombobox.Append(title) if (t.val == nil) { - log.Println("make map didn't work") + log(debugToolkit, "make map didn't work") return } t.val[t.c] = title @@ -56,34 +52,36 @@ func (t andlabsT) SetDropdown(i int) { } func NewDropdown(parentW *toolkit.Widget, w *toolkit.Widget) { - log.Println("gui.andlabs.NewDropdown()", w.Name) + log(debugToolkit, "gui.andlabs.NewDropdown()", w.Name) t := mapToolkits[parentW] if (t == nil) { - log.Println("go.andlabs.NewDropdown() toolkit struct == nil. name=", parentW.Name, w.Name) + log(debugToolkit, "go.andlabs.NewDropdown() toolkit struct == nil. name=", parentW.Name, w.Name) listMap() } newt := t.NewDropdown(w.Name) + newt.Custom = w.Custom + newt.tw = w mapWidgetsToolkits(w, newt) } func AddDropdownName(w *toolkit.Widget, s string) { - log.Println("gui.andlabs.AddDropdownName()", w.Name, "add:", s) + log(debugToolkit, "gui.andlabs.AddDropdownName()", w.Name, "add:", s) t := mapToolkits[w] if (t == nil) { - log.Println("go.andlabs.AddDropdownName() toolkit struct == nil. name=", w.Name, s) + log(debugToolkit, "go.andlabs.AddDropdownName() toolkit struct == nil. name=", w.Name, s) listMap() } t.AddDropdownName(s) } func SetDropdown(w *toolkit.Widget, i int) { - log.Println("gui.andlabs.SetDropdown()", i) + log(debugToolkit, "gui.andlabs.SetDropdown()", i) t := mapToolkits[w] if (t == nil) { - log.Println("go.andlabs.SetDropdown() toolkit struct == nil. name=", w.Name, i) + log(debugToolkit, "go.andlabs.SetDropdown() toolkit struct == nil. name=", w.Name, i) listMap() } t.SetDropdown(i) diff --git a/toolkit/andlabs/group.go b/toolkit/andlabs/group.go index e93247a..1762b7f 100644 --- a/toolkit/andlabs/group.go +++ b/toolkit/andlabs/group.go @@ -1,8 +1,6 @@ package main import ( - "log" - "git.wit.org/wit/gui/toolkit" "github.com/andlabs/ui" @@ -10,11 +8,11 @@ import ( ) func NewGroup(parentW *toolkit.Widget, w *toolkit.Widget) { - log.Println("gui.andlabs.NewGroup()", w.Name) + log(debugToolkit, "gui.andlabs.NewGroup()", w.Name) t := mapToolkits[parentW] if (t == nil) { - log.Println("go.andlabs.NewGroup() toolkit struct == nil. name=", parentW.Name, w.Name) + log(debugToolkit, "go.andlabs.NewGroup() toolkit struct == nil. name=", parentW.Name, w.Name) listMap() } newt := t.NewGroup(w.Name) @@ -25,9 +23,8 @@ func NewGroup(parentW *toolkit.Widget, w *toolkit.Widget) { func (t andlabsT) NewGroup(title string) *andlabsT { var newt andlabsT - if (DebugToolkit) { - log.Println("gui.Toolbox.NewGroup() create", title) - } + log(debugToolkit, "gui.Toolbox.NewGroup() create", title) + g := ui.NewGroup(title) g.SetMargined(margin) @@ -36,8 +33,9 @@ func (t andlabsT) NewGroup(title string) *andlabsT { } else if (t.uiWindow != nil) { t.uiWindow.SetChild(g) } else { - log.Println("gui.ToolboxNode.NewGroup() node.UiBox == nil. I can't add a range UI element without a place to put it") - log.Fatalln("probably could just make a box here?") + log(debugToolkit, "gui.ToolboxNode.NewGroup() node.UiBox == nil. I can't add a range UI element without a place to put it") + log(debugToolkit, "probably could just make a box here?") + exit("internal wit/gui error") } hbox := ui.NewVerticalBox() diff --git a/toolkit/andlabs/label.go b/toolkit/andlabs/label.go index c5a6896..e990b42 100644 --- a/toolkit/andlabs/label.go +++ b/toolkit/andlabs/label.go @@ -1,42 +1,72 @@ package main -import "log" +import ( + "github.com/andlabs/ui" + _ "github.com/andlabs/ui/winmanifest" -import "github.com/andlabs/ui" -import _ "github.com/andlabs/ui/winmanifest" + "git.wit.org/wit/gui/toolkit" +) -import "git.wit.org/wit/gui/toolkit" +var pwLabel *toolkit.Widget +var wLabel *toolkit.Widget +var tmpNewt *andlabsT func NewLabel(parentW *toolkit.Widget, w *toolkit.Widget) { + pwLabel = parentW + wLabel = w + tmpNewt = new(andlabsT) + tmpNewt.Width = 10 + log(debugToolkit, "mapWidgets in ui.QueueMain() START newt =", tmpNewt.Width, tmpNewt) + if (tmpNewt == nil) { + log(debugToolkit, "mapWidgets WHY THE HELL IS THIS NIL?", tmpNewt.Width, tmpNewt) + } + ui.QueueMain(newLabel) + + log(true, "sleep(.2) HACK. TODO: wrap spinlock around andlabs.ui goroutine") + // log(true, "sleep(.2) HACK. TODO: verify newLabel() is running inside andlabs/ui goroutine") // verified that worked + sleep(.2) + log(debugToolkit, "mapWidgets parentW/wLabel =", pwLabel) + log(debugToolkit, "mapWidgets new/newt =", tmpNewt) + mapWidgetsToolkits(w, tmpNewt) + + /* + t := mapToolkits[parentW] + if (t == nil) { + log(debugToolkit, "go.andlabs.NewDropdown() toolkit struct == nil. name=", parentW.Name, w.Name) + listMap() + } + newt := t.NewDropdown(w.Name) + mapWidgetsToolkits(w, newt) + */ +} + +func newLabel() { var t, newt *andlabsT - log.Println("gui.andlabs.NewButton()", w.Name) + log(debugToolkit, "gui.andlabs.NewButton()", wLabel.Name) - t = mapToolkits[parentW] + t = mapToolkits[pwLabel] if (t == nil) { - log.Println("go.andlabs.NewButton() toolkit struct == nil. name=", parentW.Name, w.Name) + log(debugToolkit, "go.andlabs.NewButton() toolkit struct == nil. name=", pwLabel.Name, wLabel.Name) return } if t.broken() { return } - newt = new(andlabsT) + newt = tmpNewt - newt.uiLabel = ui.NewLabel(w.Name) + newt.uiLabel = ui.NewLabel(wLabel.Name) newt.uiBox = t.uiBox - if (DebugToolkit) { - log.Println("gui.Toolbox.NewButton() about to append to Box parent t:", w.Name) - t.Dump() - log.Println("gui.Toolbox.NewButton() about to append to Box new t:", w.Name) - newt.Dump() - } + log(debugToolkit, "gui.Toolbox.NewButton() about to append to Box parent t:", wLabel.Name) + t.Dump() + log(debugToolkit, "gui.Toolbox.NewButton() about to append to Box new t:", wLabel.Name) + newt.Dump() + if (t.uiBox != nil) { t.uiBox.Append(newt.uiLabel, false) } else { - log.Println("ERROR: wit/gui andlabs couldn't place this label in a box") + log(debugToolkit, "ERROR: wit/gui andlabs couldn't place this label in a box") return } - - mapWidgetsToolkits(w, newt) } diff --git a/toolkit/andlabs/log.go b/toolkit/andlabs/log.go new file mode 100644 index 0000000..fff5ba8 --- /dev/null +++ b/toolkit/andlabs/log.go @@ -0,0 +1,136 @@ +// +// version v1.2 +// +// I like things to be easy. +// +// this means all the log settings are in one place. it should allow +// things to be over-ridden externally to the library +// but still allow command line --args to pass debugging settings +// +// I also have a generic sleep() and exit() in here because it's simple +// +// Usage: +// +// log("something", foo, bar) +// var DEBUG bool = true +// log(DEBUG, "something else", someOtherVariable) # if DEBUG == false, return doing nothing +// log(SPEW, "something else", someOtherVariable) # this get's sent to spew.Dump(). Very useful for debugging! +// +package main + +import ( + "os" + "runtime" + "runtime/pprof" + golog "log" + "time" + "reflect" + "github.com/davecgh/go-spew/spew" + // "net" +) + +var LOGOFF bool = false // turn this off, all logging stops +var WARN bool +var INFO bool + +type spewt struct { + a bool +} + +var SPEW spewt + + +/* + sleep() # you know what this does? sleeps for 1 second. yep. dump. easy. + sleep(.1) # you know what this does? yes, it sleeps for 1/10th of a second +*/ +func sleep(a ...any) { + if (a == nil) { + time.Sleep(time.Second) + return + } + + log(true, "sleep", a[0]) + + switch a[0].(type) { + case int: + time.Sleep(time.Duration(a[0].(int)) * time.Second) + case float64: + time.Sleep(time.Duration(a[0].(float64) * 1000) * time.Millisecond) + default: + log("sleep a[0], type = ", a[0], reflect.TypeOf(a[0])) + } +} + +/* + exit() # yep. exits. I guess everything must be fine + exit(3) # I guess 3 it is then + exit("dont like apples") # ok. I'll make a note of that +*/ +func exit(a ...any) { + log(true, "exit", a) + //if (a) { + // os.Exit(a) + //} + os.Exit(0) +} + +/* + I've spent, am spending, too much time thinking about 'logging'. 'log', 'logrus', 'zap', whatever. + I'm not twitter. i don't give a fuck about how many nanoseconds it takes to log. Anyway, this + implementation is probably faster than all of those because you just set one bool to FALSE + and it all stops. + Sometimes I need to capture to stdout, sometimes stdout can't + work because it doesn't exist for the user. This whole thing is a PITA. Then it's spread + over 8 million references in every .go file. I'm tapping out and putting + it in one place. here it is. Also, this makes having debug levels really fucking easy. + You can define whatever level of logging you want from anywhere (command line) etc. + + log() # doesn't do anything + log(stuff) # sends it to whatever log you define in a single place. here is the place +*/ + +func log(a ...any) { + if (LOGOFF) { + return + } + + if (a == nil) { + return + } + var blah bool + if (reflect.TypeOf(a[0]) == reflect.TypeOf(blah)) { + // golog.Println("\t a[0] = bool") + if (a[0] == false) { + return + } + a[0] = "WIT/GUI/Toolkit" + } + + if (reflect.TypeOf(a[0]) == reflect.TypeOf(SPEW)) { + // a = a[1:] + a[0] = "WIT/GUI/Toolkit" + if (debugToolkit) { + spew.Dump(a) + } + return + } + + golog.Println(a...) +} + +func loggo() { + pprof.Lookup("goroutine").WriteTo(os.Stdout, 1) + golog.Println("runtime.NumGoroutine() = ", runtime.NumGoroutine()) +} + +func logindent(depth int, format string, a ...interface{}) { + var tabs string + for i := 0; i < depth; i++ { + tabs = tabs + format + } + + // newFormat := tabs + strconv.Itoa(depth) + " " + format + newFormat := tabs + format + log(debugToolkit, newFormat, a) +} diff --git a/toolkit/andlabs/main.go b/toolkit/andlabs/main.go index 85e6913..73aaad5 100644 --- a/toolkit/andlabs/main.go +++ b/toolkit/andlabs/main.go @@ -1,9 +1,6 @@ package main import ( - "log" -// "time" - "git.wit.org/wit/gui/toolkit" "github.com/andlabs/ui" @@ -12,16 +9,14 @@ import ( ) func Main(f func()) { - if (DebugToolkit) { - log.Println("Starting gui.Main() (using gtk via andlabs/ui)") - } + log(debugToolkit, "Starting gui.Main() (using gtk via andlabs/ui)") ui.Main( func() { - log.Println("Starting gui.Main() (using gtk via andlabs/ui)") - log.Println("Starting gui.Main() (using gtk via andlabs/ui)") - log.Println("Starting gui.Main() (using gtk via andlabs/ui)") - log.Println("Starting gui.Main() (using gtk via andlabs/ui)") - log.Println("Starting gui.Main() (using gtk via andlabs/ui)") - log.Println("Starting gui.Main() (using gtk via andlabs/ui)") + log(debugToolkit, "Starting gui.Main() (using gtk via andlabs/ui)") + log(debugToolkit, "Starting gui.Main() (using gtk via andlabs/ui)") + log(debugToolkit, "Starting gui.Main() (using gtk via andlabs/ui)") + log(debugToolkit, "Starting gui.Main() (using gtk via andlabs/ui)") + log(debugToolkit, "Starting gui.Main() (using gtk via andlabs/ui)") + log(debugToolkit, "Starting gui.Main() (using gtk via andlabs/ui)") // time.Sleep(1 * time.Second) // NewWindow2("helloworld2", 200, 100) f() @@ -37,21 +32,20 @@ func Main(f func()) { // For example: Queue(NewWindow()) // func Queue(f func()) { - if (DebugToolkit) { - log.Println("Sending function to ui.QueueMain() (using gtk via andlabs/ui)") - } - //ui.QueueMain(f) - f() + log(debugToolkit, "Sending function to ui.QueueMain() (using gtk via andlabs/ui)") + log("THIS MIGHT BREAK") + ui.QueueMain(f) + // f() } func Init() { - log.Println("should Init() here") + log(debugToolkit, "should Init() here") mapWidgets = make(map[*andlabsT]*toolkit.Widget) mapToolkits = make(map[*toolkit.Widget]*andlabsT) } func Quit() { - log.Println("should Quit() here") + log(debugToolkit, "should Quit() here") // myExit(nil) } diff --git a/toolkit/andlabs/plugin.go b/toolkit/andlabs/plugin.go index f78e95e..5165178 100644 --- a/toolkit/andlabs/plugin.go +++ b/toolkit/andlabs/plugin.go @@ -1,8 +1,6 @@ package main import ( - "log" - "git.wit.org/wit/gui/toolkit" ) @@ -13,15 +11,15 @@ var mapToolkits map[*toolkit.Widget]*andlabsT // This lists out the know mappings func listMap() { - log.Println("listMap() HERE") - log.Println("listMap() HERE") - log.Println("listMap() HERE mapWidgets()") + log(debugToolkit, "listMap() HERE") + log(debugToolkit, "listMap() HERE") + log(debugToolkit, "listMap() HERE mapWidgets()") for t, w := range mapWidgets { - log.Println("andlabs =", t.Name, "widget =", w.Name) + log(debugToolkit, "andlabs =", t.Name, "widget =", w.Name) } - log.Println("listMap() HERE mapToolkits()") + log(debugToolkit, "listMap() HERE mapToolkits()") for w, t := range mapToolkits { - log.Println("andlabs =", t, "widget =", w.Name) + log(debugToolkit, "andlabs =", t, "widget =", w.Name) forceDump(t) } } @@ -30,14 +28,22 @@ func mapWidgetsToolkits(w *toolkit.Widget, t *andlabsT) { if (mapToolkits[w] == nil) { mapToolkits[w] = t } else { - log.Println("WTF: mapToolkits already installed") - panic("WTF") + log(debugToolkit, "WTF: mapToolkits was sent nil. this should not happen w =", w) + log(debugToolkit, "WTF: mapToolkits was sent nil. this should not happen t =", t.Width) + log(debugToolkit, "WTF: mapToolkits map already set to ", mapToolkits[w]) + panic("WTF mapWidgetsToolkits() w == nil") } if (mapWidgets[t] == nil) { mapWidgets[t] = w } else { - log.Println("WTF: mapWidgets already installed") - panic("WTF") + log(debugToolkit, "WTF: mapWidgets already installed. w =", w) + log(debugToolkit, "WTF: mapWidgets already installed. t =", t.Width, t) + log(SPEW, &t) + log(SPEW, t) + log(SPEW, *t) + log(debugToolkit, "WTF: mapWidgets already mapped to", mapWidgets[t]) + log(SPEW, mapWidgets[t]) + panic("WTF. mapWidget andlabs toolkit already mapped to gui toolkit") } } diff --git a/toolkit/andlabs/slider.go b/toolkit/andlabs/slider.go index f9ff0f3..4857935 100644 --- a/toolkit/andlabs/slider.go +++ b/toolkit/andlabs/slider.go @@ -1,9 +1,6 @@ package main import ( - "log" - "os" - "git.wit.org/wit/gui/toolkit" "github.com/andlabs/ui" @@ -12,13 +9,13 @@ import ( func (t andlabsT) NewSlider(title string, x int, y int) *andlabsT { // make new node here - log.Println("gui.Toolkit.NewSpinbox()", x, y) + log(debugToolkit, "gui.Toolkit.NewSpinbox()", x, y) var newt andlabsT if (t.uiBox == nil) { - log.Println("gui.ToolkitNode.NewGroup() node.UiBox == nil. I can't add a range UI element without a place to put it") - log.Println("probably could just make a box here?") - os.Exit(0) + log(debugToolkit, "gui.ToolkitNode.NewGroup() node.UiBox == nil. I can't add a range UI element without a place to put it") + log(debugToolkit, "probably could just make a box here?") + exit("internal golang wit/gui/toolkit error") return nil } @@ -36,11 +33,11 @@ func (t andlabsT) NewSlider(title string, x int, y int) *andlabsT { func NewSlider(parentW *toolkit.Widget, w *toolkit.Widget) { var newt *andlabsT - log.Println("gui.andlabs.NewTab()", w.Name) + log(debugToolkit, "gui.andlabs.NewTab()", w.Name) t := mapToolkits[parentW] if (t == nil) { - log.Println("go.andlabs.NewTab() toolkit struct == nil. name=", parentW.Name, w.Name) + log(debugToolkit, "go.andlabs.NewTab() toolkit struct == nil. name=", parentW.Name, w.Name) return } newt = t.NewSlider(w.Name, w.X, w.Y) diff --git a/toolkit/andlabs/spinner.go b/toolkit/andlabs/spinner.go index 6505b48..b98fb0c 100644 --- a/toolkit/andlabs/spinner.go +++ b/toolkit/andlabs/spinner.go @@ -1,19 +1,16 @@ package main -import "log" -import "os" - import "github.com/andlabs/ui" import _ "github.com/andlabs/ui/winmanifest" func (t andlabsT) NewSpinner(title string, x int, y int) *andlabsT { // make new node here - log.Println("gui.Toolkit.NewSpinner()", x, y) + log(debugToolkit, "gui.Toolkit.NewSpinner()", x, y) var newt andlabsT if (t.uiBox == nil) { - log.Println("gui.ToolkitNode.NewSpinner() node.UiBox == nil. I can't add a range UI element without a place to put it") - os.Exit(0) + log(debugToolkit, "gui.ToolkitNode.NewSpinner() node.UiBox == nil. I can't add a range UI element without a place to put it") + exit("internal golang wit/gui error") return nil } diff --git a/toolkit/andlabs/structs.go b/toolkit/andlabs/structs.go index 2f3fa72..cf3afaf 100644 --- a/toolkit/andlabs/structs.go +++ b/toolkit/andlabs/structs.go @@ -1,51 +1,10 @@ package main -import "log" +import "git.wit.org/wit/gui/toolkit" import "github.com/andlabs/ui" import _ "github.com/andlabs/ui/winmanifest" -import "github.com/davecgh/go-spew/spew" - -var defaultBehavior bool = true - -var bookshelf bool // do you want things arranged in the box like a bookshelf or a stack? -var canvas bool // if set to true, the windows are a raw canvas -var menubar bool // for windows -var stretchy bool // expand things like buttons to the maximum size -var padded bool // add space between things like buttons -var margin bool // add space around the frames of windows - -var DebugToolkit bool - -func setDefaultBehavior(s bool) { - defaultBehavior = s - if (defaultBehavior) { - if (DebugToolkit) { - log.Println("Setting this toolkit to use the default behavior.") - log.Println("This is the 'guessing' part as defined by the wit/gui 'Principles'. Refer to the docs.") - } - stretchy = false - padded = true - menubar = true - margin = true - canvas = false - bookshelf = true // 99% of the time, things make a vertical stack of objects - - DebugToolkit = false - } else { - log.Println("This toolkit is set to ignore the default behavior.") - } -} - -func SetDebugToolkit (s bool) { - DebugToolkit = s -} - -func GetDebugToolkit () bool { - return DebugToolkit -} - // stores the raw toolkit internals type andlabsT struct { id string @@ -53,6 +12,7 @@ type andlabsT struct { Name string Width int Height int + tw *toolkit.Widget OnChanged func(*andlabsT) OnExit func(*andlabsT) @@ -83,167 +43,3 @@ type andlabsT struct { val map[int]string text string } - -func (t *andlabsT) String() string { - return t.GetText() -} - -func forceDump(t *andlabsT) { - tmp := DebugToolkit - DebugToolkit = true - t.Dump() - DebugToolkit = tmp -} - -func (t *andlabsT) GetText() string { - t.Dump() - 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() - } - if (t.uiMultilineEntry != nil) { - if (DebugToolkit) { - log.Println("gui.Toolkit.Value() =", t.uiMultilineEntry.Text()) - } - text := t.uiMultilineEntry.Text() - if (DebugToolkit) { - log.Println("gui.Toolkit.Value() text =", text) - } - t.text = text - return text - } - if (t.uiCombobox != nil) { - if (DebugToolkit) { - log.Println("gui.Toolkit.GetText() =", t.text) - } - return t.text - } - return "" -} - -func (t *andlabsT) 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 - } - if (t.uiMultilineEntry != nil) { - if (DebugToolkit) { - log.Println("gui.Toolkit.Value() =", t.uiMultilineEntry.Text) - } - t.uiMultilineEntry.SetText(s) - return true - } - return false -} - -func sanity(t *andlabsT) bool { - if (DebugToolkit) { - log.Println("gui.Toolkit.Value() Enter") - scs := spew.ConfigState{MaxDepth: 1} - scs.Dump(t) - } - if (t.uiEntry == nil) { - if (DebugToolkit) { - log.Println("gui.Toolkit.Value() =", t.uiEntry.Text) - } - return false - } - return true -} - -func (t *andlabsT) SetValue(i int) bool { - log.Println("gui.Toolkit.SetValue() START") - if (sanity(t)) { - return false - } - t.Dump() - // panic("got to toolkit.SetValue") - return true -} - -func (t *andlabsT) 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 (t *andlabsT) Dump() { - if ! DebugToolkit { - return - } - log.Println("gui.Toolkit.Dump() Name = ", t.Name, t.Width, t.Height) - if (t.uiBox != nil) { - log.Println("gui.Toolkit.Dump() uiBox =", t.uiBox) - } - if (t.uiButton != nil) { - log.Println("gui.Toolkit.Dump() uiButton =", t.uiButton) - } - if (t.uiCombobox != nil) { - log.Println("gui.Toolkit.Dump() uiCombobox =", t.uiCombobox) - } - if (t.uiWindow != nil) { - log.Println("gui.Toolkit.Dump() uiWindow =", t.uiWindow) - } - if (t.uiTab != nil) { - log.Println("gui.Toolkit.Dump() uiTab =", t.uiTab) - } - if (t.uiGroup != nil) { - log.Println("gui.Toolkit.Dump() uiGroup =", t.uiGroup) - } - if (t.uiEntry != nil) { - log.Println("gui.Toolkit.Dump() uiEntry =", t.uiEntry) - } - if (t.uiMultilineEntry != nil) { - log.Println("gui.Toolkit.Dump() uiMultilineEntry =", t.uiMultilineEntry) - } - if (t.uiSlider != nil) { - log.Println("gui.Toolkit.Dump() uiSlider =", t.uiSlider) - } - if (t.uiCheckbox != nil) { - log.Println("gui.Toolkit.Dump() uiCheckbox =", t.uiCheckbox) - } - if (t.OnExit != nil) { - log.Println("gui.Toolkit.Dump() OnExit =", t.OnExit) - } - if (t.Custom != nil) { - log.Println("gui.Toolkit.Dump() Custom =", t.Custom) - } - log.Println("gui.Toolkit.Dump() c =", t.c) - log.Println("gui.Toolkit.Dump() val =", t.val) - log.Println("gui.Toolkit.Dump() text =", t.text) -} diff --git a/toolkit/andlabs/tab.go b/toolkit/andlabs/tab.go index 0556fb9..f9085b4 100644 --- a/toolkit/andlabs/tab.go +++ b/toolkit/andlabs/tab.go @@ -1,9 +1,6 @@ package main import ( - "log" - "time" - "git.wit.org/wit/gui/toolkit" "github.com/andlabs/ui" @@ -26,32 +23,30 @@ func (t *andlabsT) newTab(name string) *andlabsT { // var w *ui.Window var newt *andlabsT - log.Println("gui.toolkit.AddTab() sleep 3") + log(debugToolkit, "gui.toolkit.AddTab()") if (t.uiWindow == nil) { - log.Println("gui.Toolkit.UiWindow == nil. I can't add a toolbar without window") + log(debugToolkit, "gui.Toolkit.UiWindow == nil. I can't add a toolbar without window") return nil } if (t.uiTab == nil) { // this means you have to make a new tab - log.Println("gui.toolkit.NewTab() GOOD. This should be the first tab:", name) + log(debugToolkit, "gui.toolkit.NewTab() GOOD. This should be the first tab:", name) newt = newTab(t.uiWindow, name) t.uiTab = newt.uiTab } else { // this means you have to append a tab - log.Println("gui.toolkit.NewTab() GOOD. This should be an additional tab:", name) + log(debugToolkit, "gui.toolkit.NewTab() GOOD. This should be an additional tab:", name) newt = t.appendTab(name) } newt.Name = name - if (DebugToolkit) { - log.Println("t:") - t.Dump() - log.Println("newt:") - newt.Dump() - } + log(debugToolkit, "t:") + t.Dump() + log(debugToolkit, "newt:") + newt.Dump() return newt } @@ -62,29 +57,23 @@ func (t *andlabsT) newTab(name string) *andlabsT { func tabSetMargined(tab *ui.Tab) { c := tab.NumPages() for i := 0; i < c; i++ { - if (DebugToolkit) { - log.Println("SetMargined", i, margin) - } + log(debugToolkit, "SetMargined", i, margin) tab.SetMargined(i, margin) } } func newTab(w *ui.Window, name string) *andlabsT { var t andlabsT - if (DebugToolkit) { - log.Println("gui.toolkit.NewTab() ADD", name) - } + log(debugToolkit, "gui.toolkit.NewTab() ADD", name) if (w == nil) { - log.Println("gui.toolkit.NewTab() node.UiWindow == nil. I can't add a tab without a window") - log.Println("gui.toolkit.NewTab() node.UiWindow == nil. I can't add a tab without a window") - log.Println("gui.toolkit.NewTab() node.UiWindow == nil. I can't add a tab without a window") - time.Sleep(1 * time.Second) + log(debugToolkit, "gui.toolkit.NewTab() node.UiWindow == nil. I can't add a tab without a window") + log(debugToolkit, "gui.toolkit.NewTab() node.UiWindow == nil. I can't add a tab without a window") + log(debugToolkit, "gui.toolkit.NewTab() node.UiWindow == nil. I can't add a tab without a window") + sleep(1) return nil } - if (DebugToolkit) { - log.Println("gui.toolkit.AddTab() START name =", name) - } + log(debugToolkit, "gui.toolkit.AddTab() START name =", name) tab := ui.NewTab() w.SetMargined(margin) @@ -102,17 +91,13 @@ func newTab(w *ui.Window, name string) *andlabsT { func (t *andlabsT) appendTab(name string) *andlabsT { var newT andlabsT - if (DebugToolkit) { - log.Println("gui.toolkit.NewTab() ADD", name) - } + log(debugToolkit, "gui.toolkit.NewTab() ADD", name) if (t.uiTab == nil) { - log.Println("gui.Toolkit.UiWindow == nil. I can't add a widget without a place to put it") + log(debugToolkit, "gui.Toolkit.UiWindow == nil. I can't add a widget without a place to put it") panic("should never have happened. wit/gui/toolkit has ui.Tab == nil") } - if (DebugToolkit) { - log.Println("gui.toolkit.AddTab() START name =", name) - } + log(debugToolkit, "gui.toolkit.AddTab() START name =", name) var hbox *ui.Box if (defaultBehavior) { @@ -135,11 +120,11 @@ func (t *andlabsT) appendTab(name string) *andlabsT { func NewTab(parentW *toolkit.Widget, w *toolkit.Widget) { var newt *andlabsT - log.Println("gui.andlabs.NewTab()", w.Name) + log(debugToolkit, "gui.andlabs.NewTab()", w.Name) t := mapToolkits[parentW] if (t == nil) { - log.Println("go.andlabs.NewTab() toolkit struct == nil. name=", parentW.Name, w.Name) + log(debugToolkit, "go.andlabs.NewTab() toolkit struct == nil. name=", parentW.Name, w.Name) return } newt = t.newTab(w.Name) diff --git a/toolkit/andlabs/textbox.go b/toolkit/andlabs/textbox.go index c7a9390..cb6075d 100644 --- a/toolkit/andlabs/textbox.go +++ b/toolkit/andlabs/textbox.go @@ -1,7 +1,5 @@ package main -import "log" - import "git.wit.org/wit/gui/toolkit" import "github.com/andlabs/ui" @@ -10,9 +8,7 @@ import _ "github.com/andlabs/ui/winmanifest" func (t andlabsT) NewTextbox(name string) *andlabsT { var newt andlabsT - if (DebugToolkit) { - log.Println("gui.Toolkit.NewTextbox()", name) - } + log(debugToolkit, "gui.Toolkit.NewTextbox()", name) if t.broken() { return nil } @@ -37,11 +33,11 @@ func (t andlabsT) NewTextbox(name string) *andlabsT { func NewTextbox(parentW *toolkit.Widget, w *toolkit.Widget) { var t, newt *andlabsT - log.Println("gui.andlabs.NewTextbox()", w.Name) + log(debugToolkit, "gui.andlabs.NewTextbox()", w.Name) t = mapToolkits[parentW] if (t == nil) { - log.Println("go.andlabs.NewTextbox() toolkit struct == nil. name=", parentW.Name, w.Name) + log(debugToolkit, "go.andlabs.NewTextbox() toolkit struct == nil. name=", parentW.Name, w.Name) return } @@ -53,16 +49,15 @@ func NewTextbox(parentW *toolkit.Widget, w *toolkit.Widget) { newt.uiLabel = ui.NewLabel(w.Name) newt.uiBox = t.uiBox - if (DebugToolkit) { - log.Println("gui.Toolbox.NewTextbox() about to append to Box parent t:", w.Name) - t.Dump() - log.Println("gui.Toolbox.NewTextbox() about to append to Box new t:", w.Name) - newt.Dump() - } + log(debugToolkit, "gui.Toolbox.NewTextbox() about to append to Box parent t:", w.Name) + t.Dump() + log(debugToolkit, "gui.Toolbox.NewTextbox() about to append to Box new t:", w.Name) + newt.Dump() + if (t.uiBox != nil) { t.uiBox.Append(newt.uiLabel, false) } else { - log.Println("ERROR: wit/gui andlabs couldn't place this Textbox in a box") + log(debugToolkit, "ERROR: wit/gui andlabs couldn't place this Textbox in a box") return } diff --git a/toolkit/andlabs/window.go b/toolkit/andlabs/window.go index b360cb8..7527ac5 100644 --- a/toolkit/andlabs/window.go +++ b/toolkit/andlabs/window.go @@ -1,8 +1,6 @@ package main import ( - "log" - "github.com/andlabs/ui" _ "github.com/andlabs/ui/winmanifest" @@ -20,12 +18,10 @@ func (t *andlabsT) ErrorWindow(msg1 string, msg2 string) { func NewWindow(w *toolkit.Widget) { var t *andlabsT - if (DebugToolkit) { - log.Println("toolkit NewWindow", w.Name, w.Width, w.Height) - } + log(debugToolkit, "toolkit NewWindow", w.Name, w.Width, w.Height) if (w == nil) { - log.Println("wit/gui plugin error. widget == nil") + log(debugToolkit, "wit/gui plugin error. widget == nil") return } t = new(andlabsT) @@ -37,21 +33,17 @@ func NewWindow(w *toolkit.Widget) { win.SetBorderless(canvas) win.SetMargined(margin) win.OnClosing(func(*ui.Window) bool { - if (DebugToolkit) { - log.Println("ui.Window().OnExit() SHOULD ATTEMPT CALLBACK here") - t.Dump() - } + log(debugToolkit, "ui.Window().OnExit() SHOULD ATTEMPT CALLBACK here") + t.Dump() if (w.Custom != nil) { w.Custom() return true } - if (w.Event != nil) { - w.Event(w) - return true - } - if (DebugToolkit) { - log.Println("andlabs.ui.Window().OnClosing() was not defined") - } + // if (w.Event != nil) { + // w.Event(w) + // return true + // } + log(debugToolkit, "andlabs.ui.Window().OnClosing() was not defined") return false }) win.Show() @@ -64,15 +56,11 @@ func NewWindow(w *toolkit.Widget) { } func (t *andlabsT) SetWindowTitle(title string) { - if (DebugToolkit) { - log.Println("toolkit NewWindow", t.Name, "title", title) - } + log(debugToolkit, "toolkit NewWindow", t.Name, "title", title) win := t.uiWindow if (win != nil) { win.SetTitle(title) } else { - if (DebugToolkit) { - log.Println("Setting the window title", title) - } + log(debugToolkit, "Setting the window title", title) } } |
