summaryrefslogtreecommitdiff
path: root/toolkit/andlabs
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/andlabs')
-rw-r--r--toolkit/andlabs/box.go32
-rw-r--r--toolkit/andlabs/button.go2
-rw-r--r--toolkit/andlabs/checkbox.go34
-rw-r--r--toolkit/andlabs/common.go46
-rw-r--r--toolkit/andlabs/demo.go50
-rw-r--r--toolkit/andlabs/dropdown.go31
-rw-r--r--toolkit/andlabs/entry.go23
-rw-r--r--toolkit/andlabs/group.go6
-rw-r--r--toolkit/andlabs/label.go12
-rw-r--r--toolkit/andlabs/slider.go2
-rw-r--r--toolkit/andlabs/spinner.go2
-rw-r--r--toolkit/andlabs/structs.go105
-rw-r--r--toolkit/andlabs/tab.go82
-rw-r--r--toolkit/andlabs/textbox.go32
-rw-r--r--toolkit/andlabs/window.go6
15 files changed, 268 insertions, 197 deletions
diff --git a/toolkit/andlabs/box.go b/toolkit/andlabs/box.go
index 548c90a..ac31f0d 100644
--- a/toolkit/andlabs/box.go
+++ b/toolkit/andlabs/box.go
@@ -15,35 +15,29 @@ func (t *Toolkit) NewBox() *Toolkit {
log.Println("gui.Toolbox.NewBox() START create default")
t.Dump()
if (t.uiGroup != nil) {
- log.Println("gui.Toolbox.NewBox() is a Group")
+ log.Println("\tgui.Toolbox.NewBox() is a Group")
var newTK Toolkit
vbox := ui.NewVerticalBox()
- vbox.SetPadded(true)
+ vbox.SetPadded(padded)
t.uiGroup.SetChild(vbox)
newTK.uiBox = vbox
return &newTK
}
if (t.uiBox != nil) {
- log.Println("gui.Toolbox.NewBox() is a Box")
- // return t
+ log.Println("\tgui.Toolbox.NewBox() is a Box")
+ var newTK Toolkit
+
+ vbox := ui.NewVerticalBox()
+ vbox.SetPadded(padded)
+ t.uiBox.Append(vbox, stretchy)
+ newTK.uiBox = vbox
+ newTK.Name = t.Name
+
+ return &newTK
}
- log.Println("gui.Toolbox.NewBox() FAILED. Couldn't figure out where to make a box")
+ log.Println("\tgui.Toolbox.NewBox() FAILED. Couldn't figure out where to make a box")
t.Dump()
return nil
}
-
-// Make a new box
-func MakeBox(name string) *Toolkit {
- var newt Toolkit
-
- vbox := ui.NewVerticalBox()
- vbox.SetPadded(border)
- newt.uiBox = vbox
- newt.Name = name
-
- log.Println("gui.Toolbox.MakeBox() name =", name)
- newt.Dump()
- return &newt
-}
diff --git a/toolkit/andlabs/button.go b/toolkit/andlabs/button.go
index 3278c09..07b33aa 100644
--- a/toolkit/andlabs/button.go
+++ b/toolkit/andlabs/button.go
@@ -44,7 +44,7 @@ func (t Toolkit) NewButton(name string) *Toolkit {
log.Println("TODO: LEFT TOOLKIT GOROUTINE button name =", name)
})
- t.uiBox.Append(b, false)
+ t.uiBox.Append(b, stretchy)
return &newt
}
diff --git a/toolkit/andlabs/checkbox.go b/toolkit/andlabs/checkbox.go
new file mode 100644
index 0000000..b3b3121
--- /dev/null
+++ b/toolkit/andlabs/checkbox.go
@@ -0,0 +1,34 @@
+package toolkit
+
+import "log"
+
+import "github.com/andlabs/ui"
+import _ "github.com/andlabs/ui/winmanifest"
+
+func (t Toolkit) NewCheckbox(name string) *Toolkit {
+ log.Println("gui.Toolkit.NewCheckbox()", name)
+ var newt Toolkit
+
+ if t.broken() {
+ return nil
+ }
+
+ c := ui.NewCheckbox(name)
+ newt.uiCheckbox = c
+ newt.uiBox = t.uiBox
+ t.uiBox.Append(c, stretchy)
+
+ c.OnToggled(func(spin *ui.Checkbox) {
+ newt.commonChange("Checkbox")
+ })
+
+ return &newt
+}
+
+func (t Toolkit) Checked() bool {
+ if t.broken() {
+ return false
+ }
+
+ return t.uiCheckbox.Checked()
+}
diff --git a/toolkit/andlabs/common.go b/toolkit/andlabs/common.go
new file mode 100644
index 0000000..75f7444
--- /dev/null
+++ b/toolkit/andlabs/common.go
@@ -0,0 +1,46 @@
+package toolkit
+
+import "log"
+
+// import "github.com/andlabs/ui"
+// import _ "github.com/andlabs/ui/winmanifest"
+
+func init() {
+ log.Println("gui/toolkit init() Setting defaultBehavior = true")
+ setDefaultBehavior(true)
+}
+
+func (t Toolkit) commonChange(widget string) {
+ s := t.String()
+ log.Println("gui.Toolkit.ui.OnChanged() =", s)
+ if (DebugToolkit) {
+ log.Println("gui.Toolkit.ui.OnChanged() =", s)
+ }
+ if (t.OnChanged != nil) {
+ log.Println("gui.Toolkit.OnChanged() trying to run toolkit.OnChanged() entered val =", s)
+ t.OnChanged(&t)
+ return
+ }
+ if (t.Custom != nil) {
+ log.Println("gui.Toolkit.OnChanged() Running toolkit.Custom()")
+ t.Dump()
+ t.Custom()
+ return
+ }
+ log.Println("gui.Toolkit.OnChanged() ENDED without finding any callback")
+}
+
+func (t Toolkit) broken() bool {
+ if (t.uiBox == nil) {
+ 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?")
+ // corruption or something horrible?
+ panic("wit/gui toolkit/andlabs func broken() invalid goroutine access into this toolkit?")
+ 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)")
+ return false
+ }
+ return false
+}
diff --git a/toolkit/andlabs/demo.go b/toolkit/andlabs/demo.go
index 1b097d7..7ba1822 100644
--- a/toolkit/andlabs/demo.go
+++ b/toolkit/andlabs/demo.go
@@ -5,7 +5,12 @@ import "log"
import "github.com/andlabs/ui"
import _ "github.com/andlabs/ui/winmanifest"
-import "github.com/davecgh/go-spew/spew"
+/*
+ This is a code example taken directly from the toolkit andlabs/ui
+
+ This code is here to double check that the toolkit itself still works
+ the same way. This is intended as a sanity check.
+*/
func BlankWindow(w *ui.Window) *ui.Box {
hbox := ui.NewHorizontalBox()
@@ -17,53 +22,14 @@ func BlankWindow(w *ui.Window) *ui.Box {
func (t *Toolkit) DemoNumbersPage() {
var w *ui.Window
+ log.Println("Starting wit/gui toolkit andlabs/ui DemoNumbersPage()")
+
w = t.uiWindow
t.uiBox = makeNumbersPage()
t.uiBox.SetPadded(true)
w.SetChild(t.uiBox)
w.SetTitle("Internal demo of andlabs/ui toolkit")
-
- if (DebugToolkit) {
- log.Println("gui.Toolbox.DemoNumbersPage()")
- scs := spew.ConfigState{MaxDepth: 1}
- scs.Dump(t)
- }
-}
-
-/*
-func Demo(b *ui.Box) *Toolkit {
- x := 22
- y := 33
-
- // make new node here
- log.Println("gui.Toolbox.NewSpinbox()", x, y)
- var t Toolkit
-
- if (b == nil) {
- log.Println("gui.ToolboxNode.NewSpinbox() node.UiBox == nil. I can't add a range UI element without a place to put it")
- return nil
- }
- s := ui.NewSlider(x, y)
- t.uiSlider = s
- t.uiBox = b
- t.uiBox.Append(s, false)
-
- s.OnChanged(func(spin *ui.Slider) {
- i := spin.Value()
- if (DebugToolkit) {
- log.Println("gui.Toolbox.ui.OnChanged() val =", i)
- scs := spew.ConfigState{MaxDepth: 1}
- scs.Dump(t)
- }
- if (t.OnChanged != nil) {
- log.Println("gui.Toolbox.OnChanged() entered val =", i)
- t.OnChanged(&t)
- }
- })
-
- return &t
}
-*/
func makeNumbersPage() *ui.Box {
hbox := ui.NewHorizontalBox()
diff --git a/toolkit/andlabs/dropdown.go b/toolkit/andlabs/dropdown.go
index 14cbf14..51d618d 100644
--- a/toolkit/andlabs/dropdown.go
+++ b/toolkit/andlabs/dropdown.go
@@ -7,23 +7,19 @@ import "os"
import "github.com/andlabs/ui"
import _ "github.com/andlabs/ui/winmanifest"
-import "github.com/davecgh/go-spew/spew"
-
-func (pt *Toolkit) NewDropdown(title string) *Toolkit {
+func (t *Toolkit) NewDropdown(title string) *Toolkit {
// make new node here
log.Println("gui.Toolbox.NewDropdownCombobox()")
var newt Toolkit
- if (pt.uiBox == nil) {
- log.Println("gui.ToolboxNode.NewDropdown() node.UiBox == nil. I can't add a range UI element without a place to put it")
- os.Exit(0)
+ if t.broken() {
return nil
}
s := ui.NewCombobox()
newt.uiCombobox = s
- newt.uiBox = pt.uiBox
- pt.uiBox.Append(s, false)
+ newt.uiBox = t.uiBox
+ t.uiBox.Append(s, stretchy)
// initialize the index
newt.c = 0
@@ -36,24 +32,7 @@ func (pt *Toolkit) NewDropdown(title string) *Toolkit {
os.Exit(0)
}
newt.text = newt.val[i]
- val := newt.text
- log.Println("gui.Toolbox.ui.Dropdown.OnChanged() val =", i, val)
- if (DebugToolkit) {
- log.Println("gui.Toolbox.ui.OnChanged() val =", i, val)
- scs := spew.ConfigState{MaxDepth: 1}
- scs.Dump(newt)
- }
- if (newt.OnChanged != nil) {
- log.Println("gui.Toolbox.OnChanged() trying to run toolkit.OnChanged() entered val =", i, val)
- newt.OnChanged(&newt)
- return
- }
- if (newt.Custom != nil) {
- log.Println("gui.Toolbox.OnChanged() Running toolkit.Custom()", i, val)
- newt.Custom()
- return
- }
- log.Println("gui.Toolbox.Dropdown.OnChanged() ENDED without finding any callback", i, val)
+ newt.commonChange("Dropdown")
})
return &newt
diff --git a/toolkit/andlabs/entry.go b/toolkit/andlabs/entry.go
deleted file mode 100644
index c981732..0000000
--- a/toolkit/andlabs/entry.go
+++ /dev/null
@@ -1,23 +0,0 @@
-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/group.go b/toolkit/andlabs/group.go
index 12d9206..c42ac0d 100644
--- a/toolkit/andlabs/group.go
+++ b/toolkit/andlabs/group.go
@@ -19,11 +19,11 @@ func (t Toolkit) NewGroup(title string) *Toolkit {
log.Println("gui.Toolbox.NewGroup() create", title)
g := ui.NewGroup(title)
- g.SetMargined(true)
- t.uiBox.Append(g, streachy)
+ g.SetMargined(margin)
+ t.uiBox.Append(g, stretchy)
hbox := ui.NewVerticalBox()
- hbox.SetPadded(true)
+ hbox.SetPadded(padded)
g.SetChild(hbox)
newt.uiGroup = g
diff --git a/toolkit/andlabs/label.go b/toolkit/andlabs/label.go
index 453412a..2819ff1 100644
--- a/toolkit/andlabs/label.go
+++ b/toolkit/andlabs/label.go
@@ -1,31 +1,21 @@
package toolkit
import "log"
-import "os"
import "github.com/andlabs/ui"
import _ "github.com/andlabs/ui/winmanifest"
-// func NewLabel(b *ui.Box, name string) *Toolkit {
-
func (t *Toolkit) NewLabel(name string) *Toolkit {
// make new node here
log.Println("gui.Toolbox.NewLabel", name)
- if (t.uiBox == nil) {
- log.Println("gui.ToolboxNode.NewLabel() node.UiBox == nil. I can't add a range UI element without a place to put it")
- os.Exit(0)
+ if t.broken() {
return nil
}
var newt Toolkit
newt.uiLabel = ui.NewLabel(name)
newt.uiBox = t.uiBox
t.uiBox.Append(newt.uiLabel, false)
- log.Println("parent toolkit")
- t.Dump()
- log.Println("newt toolkit")
- newt.Dump()
- // panic("got here")
return &newt
}
diff --git a/toolkit/andlabs/slider.go b/toolkit/andlabs/slider.go
index 05eaba4..7d4f42a 100644
--- a/toolkit/andlabs/slider.go
+++ b/toolkit/andlabs/slider.go
@@ -24,7 +24,7 @@ func (t Toolkit) NewSlider(title string, x int, y int) *Toolkit {
s := ui.NewSlider(x, y)
newt.uiSlider = s
newt.uiBox = t.uiBox
- t.uiBox.Append(s, false)
+ t.uiBox.Append(s, stretchy)
s.OnChanged(func(spin *ui.Slider) {
i := spin.Value()
diff --git a/toolkit/andlabs/spinner.go b/toolkit/andlabs/spinner.go
index 12662e5..f147205 100644
--- a/toolkit/andlabs/spinner.go
+++ b/toolkit/andlabs/spinner.go
@@ -23,7 +23,7 @@ func (t Toolkit) NewSpinner(title string, x int, y int) *Toolkit {
s := ui.NewSpinbox(x, y)
newt.uiSpinbox = s
newt.uiBox = t.uiBox
- t.uiBox.Append(s, false)
+ t.uiBox.Append(s, stretchy)
s.OnChanged(func(s *ui.Spinbox) {
i := s.Value()
diff --git a/toolkit/andlabs/structs.go b/toolkit/andlabs/structs.go
index df34194..edad27e 100644
--- a/toolkit/andlabs/structs.go
+++ b/toolkit/andlabs/structs.go
@@ -7,11 +7,42 @@ import _ "github.com/andlabs/ui/winmanifest"
import "github.com/davecgh/go-spew/spew"
-var DebugToolkit bool = false
+var defaultBehavior bool = true
-var streachy = true
-var border = 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) {
+ 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 Toolkit struct {
@@ -31,7 +62,9 @@ type Toolkit struct {
uiButton *ui.Button
uiControl *ui.Control
uiCombobox *ui.Combobox
+ uiCheckbox *ui.Checkbox
uiEntry *ui.Entry
+ uiMultilineEntry *ui.MultilineEntry
uiGroup *ui.Group
uiLabel *ui.Label
uiSlider *ui.Slider
@@ -49,7 +82,18 @@ type Toolkit struct {
text string
}
+func (t *Toolkit) String() string {
+ return t.GetText()
+}
+
+func forceDump(t *Toolkit) {
+ DebugToolkit = true
+ t.Dump()
+ DebugToolkit = false
+}
+
func (t *Toolkit) GetText() string {
+ forceDump(t)
if (DebugToolkit) {
log.Println("gui.Toolkit.Text() Enter")
scs := spew.ConfigState{MaxDepth: 1}
@@ -57,10 +101,19 @@ func (t *Toolkit) GetText() string {
}
if (t.uiEntry != nil) {
if (DebugToolkit) {
- log.Println("gui.Toolkit.Value() =", t.uiEntry.Text)
+ 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()
+ 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)
@@ -83,6 +136,13 @@ func (t *Toolkit) SetText(s string) bool {
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
}
@@ -138,34 +198,47 @@ func (t *Toolkit) Value() int {
}
func (t *Toolkit) Dump() {
- log.Println("gui.Toolkit.Dump()", t.Name, t.Width, t.Height)
+ 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)
+ log.Println("gui.Toolkit.Dump() uiBox =", t.uiBox)
}
if (t.uiButton != nil) {
- log.Println("gui.Toolkit.Dump() uiButton =", t.uiButton)
+ log.Println("gui.Toolkit.Dump() uiButton =", t.uiButton)
}
if (t.uiCombobox != nil) {
- log.Println("gui.Toolkit.Dump() uiCombobox =", t.uiCombobox)
+ log.Println("gui.Toolkit.Dump() uiCombobox =", t.uiCombobox)
}
if (t.uiWindow != nil) {
- log.Println("gui.Toolkit.Dump() uiWindow =", t.uiWindow)
+ log.Println("gui.Toolkit.Dump() uiWindow =", t.uiWindow)
}
if (t.uiTab != nil) {
- log.Println("gui.Toolkit.Dump() uiTab =", t.uiTab)
+ log.Println("gui.Toolkit.Dump() uiTab =", t.uiTab)
}
if (t.uiGroup != nil) {
- log.Println("gui.Toolkit.Dump() uiGroup =", t.uiGroup)
+ 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)
+ 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)
+ 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() Custom =", t.Custom)
}
- log.Println("gui.Toolkit.Dump() c =", t.c)
- log.Println("gui.Toolkit.Dump() val =", t.val)
+ 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 922515d..a0565c0 100644
--- a/toolkit/andlabs/tab.go
+++ b/toolkit/andlabs/tab.go
@@ -22,59 +22,37 @@ import (
any existing tabs rather than adding a new one
*/
func (t *Toolkit) AddTab(name string) *Toolkit {
- var w *ui.Window
+ // var w *ui.Window
var newt *Toolkit
log.Println("gui.toolkit.AddTab() sleep 3")
- w = t.uiWindow
- if (w == nil) {
- log.Println("gui.toolkit.NewTab() node.UiWindow == nil. I can't add a tab without a window")
+ if (t.uiWindow == nil) {
+ log.Println("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)
- newt = newTab(w, 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)
newt = t.appendTab(name)
- // this means you have to append a tab
}
- log.Println("t:")
- t.Dump()
- log.Println("newt:")
- newt.Dump()
- return newt
-}
-
-func (t *Toolkit) SetTabBox(box *ui.Box) {
- var tab *ui.Tab
+ newt.Name = name
- log.Println("wit/gui/toolkit SetTabBox()")
- t.Dump()
- if (t.uiTab == nil) {
- log.Println("wit/gui/toolkit SetTabBox() got uiTab == nil")
- panic("fucknuts")
- return
- }
- if (t.uiBox == nil) {
- log.Println("wit/gui/toolkit SetTabBox() got uiBox == nil. Appending a new tab here")
- tab = t.uiTab
- tab.Append(t.Name, box)
- tabSetMargined(tab)
- return
- } else {
- log.Println("wit/gui/toolkit SetTabBox() got uiBox != nil. Appending the box to the existing box strechy = true")
- t.uiBox.Append(box, true) // strechy == true
- t.uiBox2 = box
- // t.uiBox.Append(box, false) // strechy == false
- return
+ if (DebugToolkit) {
+ log.Println("t:")
+ t.Dump()
+ log.Println("newt:")
+ newt.Dump()
}
+ return newt
}
// This sets _all_ the tabs to Margin = true
@@ -83,7 +61,8 @@ func (t *Toolkit) SetTabBox(box *ui.Box) {
func tabSetMargined(tab *ui.Tab) {
c := tab.NumPages()
for i := 0; i < c; i++ {
- tab.SetMargined(i, true)
+ log.Println("SetMargined", i, margin)
+ tab.SetMargined(i, margin)
}
}
@@ -99,20 +78,18 @@ func newTab(w *ui.Window, name string) *Toolkit {
return nil
}
log.Println("gui.toolkit.AddTab() START name =", name)
- // time.Sleep(2 * time.Second)
tab := ui.NewTab()
- w.SetMargined(true)
+ w.SetMargined(margin)
hbox := ui.NewHorizontalBox() // this makes everything go along the horizon
- // hbox := ui.NewVerticalBox()
- hbox.SetPadded(true)
+ hbox.SetPadded(padded)
tab.Append(name, hbox)
+ tabSetMargined(tab) // TODO: run this in the right place(?)
w.SetChild(tab)
t.uiWindow = w
t.uiTab = tab
t.uiBox = hbox
- // tabSetMargined(newNode.uiTab)
return &t
}
@@ -120,24 +97,27 @@ func (t *Toolkit) appendTab(name string) *Toolkit {
log.Println("gui.toolkit.NewTab() ADD", name)
var newT Toolkit
- if (t.uiWindow == 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)
- return nil
+ if (t.uiTab == nil) {
+ log.Println("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")
}
log.Println("gui.toolkit.AddTab() START name =", name)
- hbox := ui.NewHorizontalBox() // this makes everything go along the horizon
- // hbox := ui.NewVerticalBox()
- hbox.SetPadded(true)
+ var hbox *ui.Box
+ if (defaultBehavior) {
+ hbox = ui.NewHorizontalBox()
+ } else {
+ if (bookshelf) {
+ hbox = ui.NewHorizontalBox()
+ } else {
+ hbox = ui.NewVerticalBox()
+ }
+ }
+ hbox.SetPadded(padded)
t.uiTab.Append(name, hbox)
- // w.SetChild(tab)
newT.uiWindow = t.uiWindow
newT.uiTab = t.uiTab
newT.uiBox = hbox
- // tabSetMargined(newNode.uiTab)
return &newT
}
diff --git a/toolkit/andlabs/textbox.go b/toolkit/andlabs/textbox.go
new file mode 100644
index 0000000..95bfbaa
--- /dev/null
+++ b/toolkit/andlabs/textbox.go
@@ -0,0 +1,32 @@
+package toolkit
+
+import "log"
+
+import "github.com/andlabs/ui"
+import _ "github.com/andlabs/ui/winmanifest"
+
+func (t Toolkit) NewTextbox(name string) *Toolkit {
+ log.Println("gui.Toolkit.NewTextbox()", name)
+ var newt Toolkit
+
+ if t.broken() {
+ return nil
+ }
+
+ c := ui.NewNonWrappingMultilineEntry()
+ newt.uiMultilineEntry = c
+
+ newt.uiBox = t.uiBox
+ newt.Name = name
+ if (defaultBehavior) {
+ t.uiBox.Append(c, true)
+ } else {
+ t.uiBox.Append(c, stretchy)
+ }
+
+ c.OnChanged(func(spin *ui.MultilineEntry) {
+ newt.commonChange("Textbox")
+ })
+
+ return &newt
+}
diff --git a/toolkit/andlabs/window.go b/toolkit/andlabs/window.go
index f09a810..2aef431 100644
--- a/toolkit/andlabs/window.go
+++ b/toolkit/andlabs/window.go
@@ -18,8 +18,9 @@ func (t *Toolkit) ErrorWindow(msg1 string, msg2 string) {
func NewWindow(title string, x int, y int) *Toolkit {
var t Toolkit
log.Println("toolkit NewWindow", title, x, y)
- w := ui.NewWindow(title, x, y, false)
- w.SetBorderless(false)
+ w := ui.NewWindow(title, x, y, menubar)
+ w.SetBorderless(canvas)
+ w.SetMargined(margin)
w.OnClosing(func(*ui.Window) bool {
log.Println("ui.Window().OnExit() SHOULD ATTEMPT CALLBACK here")
t.Dump()
@@ -34,7 +35,6 @@ func NewWindow(title string, x int, y int) *Toolkit {
log.Println("ui.Window().OnExit() Toolkit.OnExit is nil")
return true
})
- w.SetMargined(true)
w.Show()
t.uiWindow = w
t.UiWindowBad = w // deprecate this as soon as possible