zntg/ui/examples/01_basic/basic.go
Sander Schobers d072e202ab Added checkbox.
Added utility methods for generating icons.
2019-04-11 21:23:51 +02:00

81 lines
2.2 KiB
Go

package main
import (
"image/color"
"log"
"opslag.de/schobers/geom"
"opslag.de/schobers/zntg/allg5"
"opslag.de/schobers/zntg/ui"
"opslag.de/schobers/zntg/ui/allg5ui"
)
func run() error {
var render, err = allg5ui.NewRenderer(800, 600, allg5.NewDisplayOptions{})
if err != nil {
return err
}
defer render.Destroy()
err = render.RegisterFont("../resources/font/OpenSans-Regular.ttf", "default", 14)
if err != nil {
return err
}
plus, err := render.CreateImagePath("../resources/images/plus.png")
if err != nil {
return err
}
defer plus.Destroy()
var stretch = func(content ui.Control, margin float32) ui.Control {
return ui.BuildSpacing(content, func(s *ui.Spacing) {
s.Width = ui.Infinite()
s.Margin.Left = ui.Fixed(margin)
s.Margin.Top = ui.Fixed(margin)
s.Margin.Right = ui.Fixed(margin)
s.Margin.Bottom = ui.Fixed(margin)
})
}
var view = ui.BuildStackPanel(ui.OrientationVertical, func(p *ui.StackPanel) {
p.Background = color.White
p.Children = []ui.Control{
&ui.Label{Text: "Hello, world!"},
ui.BuildStackPanel(ui.OrientationHorizontal, func(p *ui.StackPanel) {
p.Children = []ui.Control{
stretch(ui.BuildIconButton(plus, "Contained", func(b *ui.Button) { b.Type = ui.ButtonTypeContained }), 8),
stretch(ui.BuildIconButton(plus, "Icon", func(b *ui.Button) { b.Type = ui.ButtonTypeIcon }), 8),
stretch(ui.BuildIconButton(plus, "Outlined", func(b *ui.Button) { b.Type = ui.ButtonTypeOutlined }), 8),
stretch(ui.BuildIconButton(plus, "Text", func(b *ui.Button) { b.Type = ui.ButtonTypeText }), 8),
}
}),
ui.Margin(ui.BuildButton("Quit", func(b *ui.Button) {
b.OnClick(func(ctx ui.Context, _ ui.Control, _ geom.PointF32, _ ui.MouseButton) {
ctx.Quit()
})
}), 8),
ui.BuildStackPanel(ui.OrientationHorizontal, func(p *ui.StackPanel) {
p.Children = []ui.Control{
&ui.Checkbox{},
ui.BuildCheckbox("Check me!", nil),
}
}),
ui.Stretch(&ui.Label{Text: "Content"}),
ui.StretchWidth(ui.BuildTextBox(func(b *ui.TextBox) {
b.Text = "Type here..."
})),
&ui.Label{Text: "Status"},
}
})
return ui.RunWait(render, ui.DefaultStyle(), view, true)
}
func main() {
var err = run()
if err != nil {
log.Fatal(err)
}
}