package main import ( "image/color" "log" _ "opslag.de/schobers/zntg/sdlui" // import the renderer for the UI // _ "opslag.de/schobers/zntg/allg5ui" // import the renderer for the UI "opslag.de/schobers/zntg/ui" ) type basic struct { ui.StackPanel } func (b *basic) Init(ctx ui.Context) error { _, err := ctx.Fonts().CreateFontPath("default", "../resources/font/OpenSans-Regular.ttf", 14) if err != nil { return err } _, err = ctx.Textures().CreateTexturePath("plus", "../resources/images/plus.png", true) if err != nil { return err } var style = ctx.Style() 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) }) } b.Background = color.White b.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.BuildStackPanel(ui.OrientationHorizontal, func(p *ui.StackPanel) { p.Children = []ui.Control{ stretch(ui.BuildIconButton("plus", "Contained", func(b *ui.Button) { b.Type = ui.ButtonTypeContained b.Disabled = true }), 8), stretch(ui.BuildIconButton("plus", "Icon", func(b *ui.Button) { b.Type = ui.ButtonTypeIcon b.Disabled = true }), 8), stretch(ui.BuildIconButton("plus", "Outlined", func(b *ui.Button) { b.Type = ui.ButtonTypeOutlined b.Disabled = true }), 8), stretch(ui.BuildIconButton("plus", "Text", func(b *ui.Button) { b.Type = ui.ButtonTypeText b.Disabled = true }), 8), } }), ui.BuildStackPanel(ui.OrientationHorizontal, func(p *ui.StackPanel) { p.Children = []ui.Control{ &ui.Checkbox{}, ui.BuildCheckbox("Check me!", nil), } }), ui.BuildStackPanel(ui.OrientationHorizontal, func(p *ui.StackPanel) { p.Children = []ui.Control{ ui.BuildCheckbox("", func(b *ui.Checkbox) { b.Disabled = true }), ui.BuildCheckbox("You can't check me!", func(b *ui.Checkbox) { b.Selected = true b.Disabled = true }), } }), ui.Stretch(&ui.Label{Text: "Content"}), ui.Margin(ui.StretchWidth(ui.BuildTextBox(func(b *ui.TextBox) { b.Text = "Type here..." })), 8), ui.Margin(ui.StretchWidth(ui.BuildTextBox(func(b *ui.TextBox) { b.Text = "You can't type here..." b.Disabled = true })), 8), ui.Margin(ui.BuildButton("Quit", func(b *ui.Button) { b.ButtonClicked().AddHandler(func(ui.Context, ui.ControlClickedArgs) { ctx.Quit() }) b.Tooltip = "Will quit the application" }), 8), ui.Margin(ui.BuildButton("Can't quit", func(b *ui.Button) { b.ButtonClicked().AddHandler(func(ui.Context, ui.ControlClickedArgs) { ctx.Quit() }) b.Tooltip = "Will not quit the application" b.Disabled = true }), 8), ui.BuildLabel("Status...", func(l *ui.Label) { l.Background = style.Palette.PrimaryDark l.Font.Color = style.Palette.TextOnPrimary }), } return nil } func run() error { var render, err = ui.NewRenderer("Basic Example", 800, 600) if err != nil { return err } defer render.Destroy() return ui.RunWait(render, ui.DefaultStyle(), &basic{}, true) } func main() { var err = run() if err != nil { log.Fatal(err) } }