This repository has been archived by the owner on Jul 30, 2018. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
/
uikradioglfw.go
94 lines (78 loc) · 1.66 KB
/
uikradioglfw.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
package main
// +build ignore
import (
"fmt"
"github.com/skelterjohn/geom"
"github.com/skelterjohn/go.uik"
"github.com/skelterjohn/go.uik/layouts"
"github.com/skelterjohn/go.uik/widgets"
"github.com/skelterjohn/go.wde"
_ "github.com/skelterjohn/go.wde/glfw3"
"image/color"
)
func main() {
go uikplay()
wde.Run()
}
func uikplay() {
w, err := uik.NewWindow(nil, 480, 320)
if err != nil {
fmt.Println(err)
return
}
w.W.SetTitle("go.uik")
gcfg, err := layouts.ParseGridConfig(`
{
"Components": {
"radio": {
"GridX": 0,
"GridY": 0,
"AnchorLeft": true,
"AnchorTop": true
},
"label": {
"GridX": 1,
"GridY": 0,
"AnchorRight": true,
"AnchorTop": true
}
}
}
`)
if err != nil {
fmt.Println(err)
return
}
ge := layouts.NewGridEngine(gcfg)
g := layouts.NewLayouter(ge)
rg := widgets.NewRadio([]string{"bread", "cake", "beheadings"})
ge.AddName("radio", &rg.Block)
l := widgets.NewLabel(geom.Coord{100, 30}, widgets.LabelConfig{"text", 14, color.Black})
ge.AddName("label", &layouts.NewPadBox(layouts.PadConfig{Right: 10}, &l.Block).Block)
selLis := make(widgets.SelectionListener, 1)
rg.AddSelectionListener <- selLis
w.SetPane(&g.Block)
w.Show()
done := make(chan interface{}, 1)
isDone := func(e interface{}) (accept, done bool) {
_, accept = e.(uik.CloseEvent)
done = accept
return
}
w.Block.Subscribe <- uik.Subscription{isDone, done}
loop:
for {
select {
case sel := <-selLis:
l.SetConfig(widgets.LabelConfig{
Text: fmt.Sprintf("Clicked option %d, %q", sel.Index, sel.Option),
FontSize: 14,
Color: color.Black,
})
case <-done:
break loop
}
}
w.W.Close()
wde.Stop()
}