package main import ( "log" "gioui.org/app" "gioui.org/op" "gioui.org/text" "gioui.org/unit" "pad/internal/ui" ) func main() { go func() { w := new(app.Window) w.Option(app.Title("Pad")) w.Option(app.Size(unit.Dp(390), unit.Dp(844))) if err := run(w); err != nil { log.Fatal(err) } }() app.Main() } func run(w *app.Window) error { var ops op.Ops shaper := text.NewShaper() renderer := ui.New(ui.Theme{FontSize: 14}, shaper) elems := starterElements() for { switch e := w.Event().(type) { case app.DestroyEvent: return e.Err case app.FrameEvent: gtx := app.NewContext(&ops, e) renderer.Draw(gtx, elems) e.Frame(&ops) } } } // starterElements returns a hardcoded set of elements for initial testing. func starterElements() []ui.Element { return []ui.Element{ ui.NewLabel("Pad", 20, ui.Region{X: 0, Y: 0, W: 390, H: 48}), ui.NewListView(ui.Region{X: 0, Y: 48, W: 390, H: 700}, []ui.ListItem{ {Text: "notes.txt"}, {Text: "ideas.txt"}, {Text: "todo.txt"}, }), } }