summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/kbtest.go12
-rw-r--r--test/main.go361
-rw-r--r--test/spacing.go5
3 files changed, 143 insertions, 235 deletions
diff --git a/test/kbtest.go b/test/kbtest.go
index 4e97708..df00613 100644
--- a/test/kbtest.go
+++ b/test/kbtest.go
@@ -73,19 +73,13 @@ func (a *keyboardArea) Key(e KeyEvent) (repaint bool) {
return true
}
-type kbhandler struct{}
-func (kbhandler) Event(e Event, d interface{}) {
- if e == Closing {
- *(d.(*bool)) = true
- }
-}
-
var doKeyboard = flag.Bool("kb", false, "run keyboard test (overrides -areabounds)")
func kbTest() {
wid, ht, ah := mkkbArea()
a := NewArea(wid, ht, ah)
- w := NewWindow("Hi", wid, ht, kbhandler{})
+ w := NewWindow("Hi", wid, ht)
w.Open(a)
+ <-w.Closing
}
var (
@@ -219,8 +213,6 @@ var modpoints = map[Modifiers]image.Point{
Super: image.Pt(61, 199),
}
-// TODO move the following to its own file
-
// source: http://openclipart.org/image/800px/svg_to_png/154537/1312973798.png (medium image) via http://openclipart.org/detail/154537/us-english-keyboard-layout-v0.1-by-nitiraseem
var kbpic = []byte{
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
diff --git a/test/main.go b/test/main.go
index db01d15..034d712 100644
--- a/test/main.go
+++ b/test/main.go
@@ -15,21 +15,18 @@ import (
. "github.com/andlabs/ui"
)
-type nullwinhandler struct{}
-func (nullwinhandler) Event(Event, interface{}) {}
-
var prefsizetest = flag.Bool("prefsize", false, "")
func listboxPreferredSizeTest() *Window {
lb := NewListbox("xxxxx", "y", "zzz")
g := NewGrid(1, lb)
- w := NewWindow("Listbox Preferred Size Test", 300, 300, nullwinhandler{})
+ w := NewWindow("Listbox Preferred Size Test", 300, 300)
w.Open(g)
return w
}
var gridtest = flag.Bool("grid", false, "")
func gridWindow() *Window {
- w := NewWindow("Grid Test", 400, 400, nullwinhandler{})
+ w := NewWindow("Grid Test", 400, 400)
b00 := NewButton("0,0")
b01 := NewButton("0,1")
b02 := NewButton("0,2")
@@ -47,11 +44,10 @@ func gridWindow() *Window {
g.SetStretchy(1, 1)
w.SetSpaced(*spacingTest)
w.Open(g)
-//TODO
-// go func() {for {select {
-// case <-b12.Clicked:
-// c21.SetChecked(!c21.Checked())
-// }}}()
+ go func() {for {select {
+ case <-b12.Clicked:
+ c21.SetChecked(!c21.Checked())
+ }}}()
return w
}
@@ -209,6 +205,7 @@ func areaTest() {
}
img := image.NewRGBA(ximg.Bounds())
draw.Draw(img, img.Rect, ximg, image.ZP, draw.Over)
+ w := NewWindow("Area Test", 100, 100)
areahandler := &areaHandler{
img: img,
}
@@ -232,54 +229,24 @@ func areaTest() {
timedisp,
sizeStack)
layout.SetStretchy(0)
- w := NewWindow("Area Test", 100, 100, &areatestwinhandler{
- areahandler: areahandler,
- a: a,
- timedisp: timedisp,
- widthbox: widthbox,
- heightbox: heightbox,
- resize: resize,
- modaltest: modaltest,
- repainttest: repainttest,
- })
w.Open(layout)
- go func() {
- for t := range timechan {
- // TODO
- _ = t
-// timedisp.SetText(t.String())
- }
- }()
-}
-
-type areatestwinhandler struct {
- areahandler *areaHandler
- a *Area
- timedisp *Label
- widthbox *LineEdit
- heightbox *LineEdit
- resize *Button
- modaltest *Button
- repainttest *Button
-}
-func (a *areatestwinhandler) Event(e Event, d interface{}) {
- switch e {
- case Closing:
- *(d.(*bool)) = true
- Stop <- struct{}{}
- case Clicked:
- switch d {
- case a.resize:
- width, err := strconv.Atoi(a.widthbox.Text())
- if err != nil { println(err); return }
- height, err := strconv.Atoi(a.heightbox.Text())
- if err != nil { println(err); return }
- a.a.SetSize(width, height)
- case a.modaltest:
+ for {
+ select {
+ case <-w.Closing:
+ return
+ case t := <-timechan:
+ timedisp.SetText(t.String())
+ case <-resize.Clicked:
+ width, err := strconv.Atoi(widthbox.Text())
+ if err != nil { println(err); continue }
+ height, err := strconv.Atoi(heightbox.Text())
+ if err != nil { println(err); continue }
+ a.SetSize(width, height)
+ case <-modaltest.Clicked:
MsgBox("Modal Test", "")
- case a.repainttest:
- a.areahandler.mutate()
- a.a.RepaintAll()
+ case <-repainttest.Clicked:
+ areahandler.mutate()
+ a.RepaintAll()
}
}
}
@@ -308,10 +275,9 @@ func areaboundsTest() {
// middle purple
r.Min.Y++
draw.Draw(img, r, u(128, 0, 128), image.ZP, draw.Over)
- w := NewWindow("Area Bounds Test", 320, 240, &areatestwinhandler{
- a: a,
- })
+ w := NewWindow("Area Bounds Test", 320, 240)
w.Open(a)
+ <-w.Closing
}
var dialogTest = flag.Bool("dialog", false, "add Window.MsgBox() channel test window")
@@ -319,7 +285,6 @@ var labelAlignTest = flag.Bool("label", false, "show Label Alignment test window
var spacingTest = flag.Bool("spacing", false, "margins and padding on Window")
func myMain() {
- <-Ready
if *spacetest != "" {
spaceTest()
return
@@ -336,88 +301,58 @@ func myMain() {
areaboundsTest()
return
}
- runMainTest()
-}
-
-type testwinhandler struct {
- w *Window
- b *Button
- b2 *Button
- bmsg *Button
- c *Checkbox
- cb1 *Combobox
- cb2 *Combobox
- e *LineEdit
- l *Label
- resetl func()
- b3 *Button
- pbar *ProgressBar
- prog int
- incButton *Button
- decButton *Button
- indetButton *Button
- invalidButton *Button
- password *LineEdit
- lb1 *Listbox
- lb2 *Listbox
- i int
- doAdjustments func()
-}
-
-func runMainTest() {
- handler := new(testwinhandler)
- handler.w = NewWindow("Main Window", 320, 240, handler)
- handler.b = NewButton("Click Me")
- handler.b2 = NewButton("Or Me")
- handler.bmsg = NewButton("Or Even Me!")
- s2 := NewHorizontalStack(handler.b, handler.b2, handler.bmsg)
+ w := NewWindow("Main Window", 320, 240)
+ b := NewButton("Click Me")
+ b2 := NewButton("Or Me")
+ bmsg := NewButton("Or Even Me!")
+ s2 := NewHorizontalStack(b, b2, bmsg)
s2.SetStretchy(2)
- handler.c = NewCheckbox("Check Me")
- handler.cb1 = NewEditableCombobox("You can edit me!", "Yes you can!", "Yes you will!")
- handler.cb2 = NewCombobox("You can't edit me!", "No you can't!", "No you won't!")
- handler.e = NewLineEdit("Enter text here too")
- handler.l = NewLabel("This is a label")
- handler.resetl = func() {
- handler.l.SetText("This is a label")
+ c := NewCheckbox("Check Me")
+ cb1 := NewEditableCombobox("You can edit me!", "Yes you can!", "Yes you will!")
+ cb2 := NewCombobox("You can't edit me!", "No you can't!", "No you won't!")
+ e := NewLineEdit("Enter text here too")
+ l := NewLabel("This is a label")
+ resetl := func() {
+ l.SetText("This is a label")
}
- handler.b3 = NewButton("List Info")
- s3 := NewHorizontalStack(handler.l, handler.b3)
+ b3 := NewButton("List Info")
+ s3 := NewHorizontalStack(l, b3)
s3.SetStretchy(0)
// s3.SetStretchy(1)
- handler.pbar = NewProgressBar()
- handler.prog = 0
- handler.incButton = NewButton("Inc")
- handler.decButton = NewButton("Dec")
- handler.indetButton = NewButton("Indeterminate")
- handler.invalidButton = NewButton("Run Invalid Test")
- sincdec := NewHorizontalStack(handler.incButton, handler.decButton, handler.indetButton, handler.invalidButton)
- handler.password = NewPasswordEdit()
- s0 := NewVerticalStack(s2, handler.c, handler.cb1, handler.cb2, handler.e, s3, handler.pbar, sincdec, Space(), handler.password)
+ pbar := NewProgressBar()
+ prog := 0
+ incButton := NewButton("Inc")
+ decButton := NewButton("Dec")
+ indetButton := NewButton("Indeterminate")
+ invalidButton := NewButton("Run Invalid Test")
+ sincdec := NewHorizontalStack(incButton, decButton, indetButton, invalidButton)
+ password := NewPasswordEdit()
+ s0 := NewVerticalStack(s2, c, cb1, cb2, e, s3, pbar, sincdec, Space(), password)
s0.SetStretchy(8)
- handler.lb1 = NewMultiSelListbox("Select One", "Or More", "To Continue")
- handler.lb2 = NewListbox("Select", "Only", "One", "Please")
- handler.i = 0
- handler.doAdjustments = func() {
- handler.cb1.Append("append")
- handler.cb2.InsertBefore(fmt.Sprintf("before %d", handler.i), 1)
- handler.lb1.InsertBefore(fmt.Sprintf("%d", handler.i), 2)
- handler.lb2.Append("Please")
- handler.i++
+ lb1 := NewMultiSelListbox("Select One", "Or More", "To Continue")
+ lb2 := NewListbox("Select", "Only", "One", "Please")
+ i := 0
+ doAdjustments := func() {
+ cb1.Append("append")
+ cb2.InsertBefore(fmt.Sprintf("before %d", i), 1)
+ lb1.InsertBefore(fmt.Sprintf("%d", i), 2)
+ lb2.Append("Please")
+ i++
}
- handler.doAdjustments()
- handler.cb1.Append("append multi 1", "append multi 2")
- handler.lb2.Append("append multi 1", "append multi 2")
- s1 := NewVerticalStack(handler.lb2, handler.lb1)
+ doAdjustments()
+ cb1.Append("append multi 1", "append multi 2")
+ lb2.Append("append multi 1", "append multi 2")
+ s1 := NewVerticalStack(lb2, lb1)
s1.SetStretchy(0)
s1.SetStretchy(1)
s := NewHorizontalStack(s1, s0)
s.SetStretchy(0)
s.SetStretchy(1)
if *invalidBefore {
- invalidTest(handler.cb1, handler.lb1, s, NewGrid(1, Space()))
+ invalidTest(cb1, lb1, s, NewGrid(1, Space()))
}
- handler.w.SetSpaced(*spacingTest)
- handler.w.Open(s)
+ w.SetSpaced(*spacingTest)
+ w.Open(s)
if *gridtest {
gridWindow()
}
@@ -425,17 +360,12 @@ func runMainTest() {
listboxPreferredSizeTest()
}
-// == TODO ==
+ ticker := time.Tick(time.Second)
+
dialog_bMsgBox := NewButton("MsgBox()")
dialog_bMsgBoxError := NewButton("MsgBoxError()")
centerButton := NewButton("Center")
- dh := &dialoghandler{
- bMsgBox: dialog_bMsgBox,
- bMsgBoxError: dialog_bMsgBoxError,
- bCenter: centerButton,
-// send: w.Send,
- }
- dh.w = NewWindow("Dialogs", 200, 200, dh)
+ dialog_win := NewWindow("Dialogs", 200, 200)
if *dialogTest {
s := NewVerticalStack(
dialog_bMsgBox,
@@ -443,9 +373,11 @@ func runMainTest() {
Space(),
centerButton)
s.SetStretchy(2)
- dh.w.Open(s)
+ dialog_win.Open(s)
}
+ var dialog_sret chan struct{} = nil
+
if *labelAlignTest {
s := NewHorizontalStack(NewStandaloneLabel("Label"), NewLineEdit("Label"))
s.SetStretchy(1)
@@ -475,116 +407,99 @@ func runMainTest() {
NewButton("Button"),
s)
s.SetStretchy(4)
- NewWindow("Label Align Test", 500, 300, nullwinhandler{}).Open(s)
+ NewWindow("Label Align Test", 500, 300).Open(s)
}
-}
-func (handler *testwinhandler) Event(e Event, d interface{}) {
- switch e {
- case Closing:
- println("window closed event received")
- Stop <- struct{}{}
- case Clicked:
- switch d {
- case handler.b:
- handler.w.SetTitle(fmt.Sprintf("%v | %s | %s | %s | %s",
- handler.c.Checked(),
- handler.cb1.Selection(),
- handler.cb2.Selection(),
- handler.e.Text(),
- handler.password.Text()))
- handler.doAdjustments()
- case handler.b2:
- if handler.cb1.Len() > 1 {
- handler.cb1.Delete(1)
+mainloop:
+ for {
+ select {
+ case curtime := <-ticker:
+// l.SetText(curtime.String())
+_=curtime
+ case <-w.Closing:
+ println("window closed event received")
+ break mainloop
+ case <-AppQuit:
+ println("application quit event received")
+ break mainloop
+ case <-b.Clicked:
+ w.SetTitle(fmt.Sprintf("%v | %s | %s | %s | %s",
+ c.Checked(),
+ cb1.Selection(),
+ cb2.Selection(),
+ e.Text(),
+ password.Text()))
+ doAdjustments()
+ case <-b2.Clicked:
+ if cb1.Len() > 1 {
+ cb1.Delete(1)
}
- if handler.cb2.Len() > 2 {
- handler.cb2.Delete(2)
+ if cb2.Len() > 2 {
+ cb2.Delete(2)
}
- if handler.lb1.Len() > 3 || *macCrashTest {
- handler.lb1.Delete(3)
+ if lb1.Len() > 3 || *macCrashTest {
+ lb1.Delete(3)
}
- if handler.lb2.Len() > 4 {
- handler.lb2.Delete(4)
+ if lb2.Len() > 4 {
+ lb2.Delete(4)
}
- case handler.b3:
+ case <-b3.Clicked:
f := MsgBox
- if handler.c.Checked() {
+ if c.Checked() {
f = MsgBoxError
}
f("List Info",
fmt.Sprintf("cb1: %d %q (len %d)\ncb2: %d %q (len %d)\nlb1: %d %q (len %d)\nlb2: %d %q (len %d)",
- handler.cb1.SelectedIndex(), handler.cb1.Selection(), handler.cb1.Len(),
- handler.cb2.SelectedIndex(), handler.cb2.Selection(), handler.cb2.Len(),
- handler.lb1.SelectedIndices(), handler.lb1.Selection(), handler.lb1.Len(),
- handler.lb2.SelectedIndices(), handler.lb2.Selection(), handler.lb2.Len()))
- case handler.incButton:
- handler.prog++
- if handler.prog > 100 {
- handler.prog = 100
+ cb1.SelectedIndex(), cb1.Selection(), cb1.Len(),
+ cb2.SelectedIndex(), cb2.Selection(), cb2.Len(),
+ lb1.SelectedIndices(), lb1.Selection(), lb1.Len(),
+ lb2.SelectedIndices(), lb2.Selection(), lb2.Len()))
+ case <-incButton.Clicked:
+ prog++
+ if prog > 100 {
+ prog = 100
}
- handler.pbar.SetProgress(handler.prog)
- handler.cb1.Append("append multi 1", "append multi 2")
- handler.lb2.Append("append multi 1", "append multi 2")
- case handler.decButton:
- handler.prog--
- if handler.prog < 0 {
- handler.prog = 0
+ pbar.SetProgress(prog)
+ cb1.Append("append multi 1", "append multi 2")
+ lb2.Append("append multi 1", "append multi 2")
+ case <-decButton.Clicked:
+ prog--
+ if prog < 0 {
+ prog = 0
}
- handler.pbar.SetProgress(handler.prog)
- case handler.indetButton:
- handler.pbar.SetProgress(-1)
- case handler.invalidButton:
- invalidTest(handler.cb1, handler.lb1, nil, nil)
- case handler.bmsg:
+ pbar.SetProgress(prog)
+ case <-indetButton.Clicked:
+ pbar.SetProgress(-1)
+ case <-invalidButton.Clicked:
+ invalidTest(cb1, lb1, nil, nil)
+ case <-bmsg.Clicked:
MsgBox("Title Only, no parent", "")
- handler.w.MsgBox("Title and Text", "parent")
- }
-// == TODO ==
-// case CusotmEvent:
-// l.SetText("DIALOG")
-// case CustomEvent + 1:
-// resetl()
- }
-}
-
-type dialoghandler struct {
- bMsgBox *Button
- bMsgBoxError *Button
- w *Window
- bCenter *Button
- send func(Event, interface{})
-}
-
-// == TODO ==
-func (handler *dialoghandler) Event(e Event, d interface{}) {
- if e == Clicked {
- switch d {
- case handler.bMsgBox:
-// handler.send(CustomEvent, "DIALOG")
- handler.w.MsgBox("Message Box", "Dismiss")
-// handler.send(CustomEvent, nil)
- case handler.bMsgBoxError:
-// handler.send(CustomEvent, "DIALOG")
- handler.w.MsgBoxError("Message Box", "Dismiss")
-// handler.send(CustomEvent, nil)
- case handler.bCenter:
- handler.w.Center()
+ MsgBox("Title and Text", "parent")
+ // dialogs
+ case <-dialog_bMsgBox.Clicked:
+ dialog_sret = dialog_win.MsgBox("Message Box", "Dismiss")
+ l.SetText("DIALOG")
+ case <-dialog_bMsgBoxError.Clicked:
+ dialog_sret = dialog_win.MsgBoxError("Message Box", "Dismiss")
+ l.SetText("DIALOG")
+ case <-dialog_sret:
+ dialog_sret = nil
+ resetl()
+ case <-centerButton.Clicked:
+ dialog_win.Center()
}
}
+ w.Hide()
}
func main() {
flag.Parse()
- go myMain()
- err := Go()
+ err := Go(myMain)
if err != nil {
panic(err)
}
}
-// TODO move to its own file
-
// source: https://upload.wikimedia.org/wikipedia/commons/0/06/Regensburg-donaulaende-warp-enhanced_1-320x240.jpg via https://commons.wikimedia.org/wiki/File:Regensburg-donaulaende-warp-enhanced_1-320x240.jpg (thanks Sofi)
// converted to png with imagemagick because the JPG was throwing up an error about incomplete Huffman data (TODO)
var imagedata = []byte{
diff --git a/test/spacing.go b/test/spacing.go
index 610115f..367b0be 100644
--- a/test/spacing.go
+++ b/test/spacing.go
@@ -41,13 +41,14 @@ func spaceTest() {
a2 := NewArea(w, h, ah)
a3 := NewArea(w, h, ah)
a4 := NewArea(w, h, ah)
- win := NewWindow("Stack", 250, 250, nullwinhandler{})
+ win := NewWindow("Stack", 250, 250)
win.SetSpaced(true)
win.Open(f(a1, a2))
- win = NewWindow("Grid", 250, 250, nullwinhandler{})
+ win = NewWindow("Grid", 250, 250)
win.SetSpaced(true)
g := NewGrid(ng, a3, a4)
g.SetFilling(0, 0)
g.SetStretchy(gsx, gsy)
win.Open(g)
+ select {}
}