package main import ( "image/color" "log" "gioui.org/io/system" "gioui.org/layout" "gioui.org/text" "gioui.org/widget/material" ) func (l *Limox) draw(e system.FrameEvent) { gtx := layout.NewContext(&l.Operations, e) flex := layout.Flex{ Axis: layout.Vertical, Spacing: layout.SpaceBetween, } flex.Layout(gtx, layout.Rigid( func(gtx layout.Context) layout.Dimensions { h2 := material.H2(l.Theme, "LimoX") h2.Color = color.NRGBA{R: 20, G: 20, B: 20, A: 255} h2.Alignment = text.Middle return h2.Layout(gtx) }, ), layout.Rigid( func(gtx layout.Context) layout.Dimensions { jid := material.Editor(l.Theme, &l.JidEditor, "user@example.com") jid.Editor.Alignment = text.Middle return jid.Layout(gtx) }, ), layout.Rigid( func(gtx layout.Context) layout.Dimensions { pwd := material.Editor(l.Theme, &l.PwdEditor, "mySafePassword") pwd.Editor.Alignment = text.Middle pwd.Editor.Mask = '*' return pwd.Layout(gtx) }, ), layout.Rigid( func(gtx layout.Context) layout.Dimensions { btn := material.Button(l.Theme, &l.MainButton, l.buttonLabel()) return btn.Layout(gtx) }, ), ) e.Frame(gtx.Ops) } func (l *Limox) buttonLabel() string { var label string switch l.State { case Disconnected: label = "Connect" case Connecting: label = "Abort" case Connected: label = "Disconnect" default: log.Printf("Unknown Limox state '%d'\n", l.State) } return label }