example/kitchen: add ProgressBar example

Updates the kitchen example codebase showing ProgressBar functionality.

Signed-off-by: metaclips <utimichael9@gmail.com>
This commit is contained in:
metaclips
2020-04-02 22:50:58 +01:00
committed by Elias Naur
parent da01fbdea7
commit efce78d414
3 changed files with 40 additions and 16 deletions
+1 -1
View File
@@ -3,7 +3,7 @@ module gioui.org/example
go 1.13
require (
gioui.org v0.0.0-20200401111706-a08674dbcaca
gioui.org v0.0.0-20200402190513-da01fbdea784
github.com/go-gl/gl v0.0.0-20190320180904-bf2b1f2f34d7
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72
github.com/google/go-github/v24 v24.0.1
+2 -2
View File
@@ -1,7 +1,7 @@
cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
gioui.org v0.0.0-20200401111706-a08674dbcaca h1:3yyshrXY2S0bXVRpzm2agRLzKnuwSDRCedi67WwqalQ=
gioui.org v0.0.0-20200401111706-a08674dbcaca/go.mod h1:AHI9rFr6AEEHCb8EPVtb/p5M+NMJRKH58IOp8O3Je04=
gioui.org v0.0.0-20200402190513-da01fbdea784 h1:gH0+2HCtuzxAdK6sd0BeCxZLAkCbhptF607odwS5QY0=
gioui.org v0.0.0-20200402190513-da01fbdea784/go.mod h1:AHI9rFr6AEEHCb8EPVtb/p5M+NMJRKH58IOp8O3Je04=
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
github.com/go-gl/gl v0.0.0-20190320180904-bf2b1f2f34d7 h1:SCYMcCJ89LjRGwEa0tRluNRiMjZHalQZrVrvTbPh+qw=
github.com/go-gl/gl v0.0.0-20190320180904-bf2b1f2f34d7/go.mod h1:482civXOzJJCPzJ4ZOX/pwvXBWSnzD4OKMdH4ClKGbk=
+37 -13
View File
@@ -48,6 +48,7 @@ func main() {
log.Fatal(err)
}
icon = ic
progressIncrementer = make(chan int)
gofont.Register()
if *screenshot != "" {
if err := saveScreenshot(*screenshot); err != nil {
@@ -56,8 +57,16 @@ func main() {
}
os.Exit(0)
}
go func() {
w := app.NewWindow()
for {
time.Sleep(time.Second)
progressIncrementer <- 10
}
}()
go func() {
w := app.NewWindow(app.Size(unit.Dp(800), unit.Dp(650)))
if err := loop(w); err != nil {
log.Fatal(err)
}
@@ -91,15 +100,24 @@ func saveScreenshot(f string) error {
func loop(w *app.Window) error {
th := material.NewTheme()
gtx := layout.NewContext(w.Queue())
for {
e := <-w.Events()
switch e := e.(type) {
case system.DestroyEvent:
return e.Err
case system.FrameEvent:
gtx.Reset(e.Config, e.Size)
kitchen(gtx, th)
e.Frame(gtx.Ops)
select {
case e := <-w.Events():
switch e := e.(type) {
case system.DestroyEvent:
return e.Err
case system.FrameEvent:
gtx.Reset(e.Config, e.Size)
kitchen(gtx, th)
e.Frame(gtx.Ops)
}
case p := <-progressIncrementer:
progress += p
if progress > 100 {
progress = 0
}
w.Invalidate()
}
}
}
@@ -118,10 +136,12 @@ var (
list = &layout.List{
Axis: layout.Vertical,
}
green = true
topLabel = "Hello, Gio"
icon *material.Icon
checkbox = new(widget.CheckBox)
progress = 0
progressIncrementer chan int
green = true
topLabel = "Hello, Gio"
icon *material.Icon
checkbox = new(widget.CheckBox)
)
func (b iconAndTextButton) Layout(gtx *layout.Context, button *widget.Button, icon *material.Icon, word string) {
@@ -204,6 +224,9 @@ func kitchen(gtx *layout.Context, th *material.Theme) {
}),
)
},
func() {
th.ProgressBar().Layout(gtx, progress)
},
func() {
th.CheckBox("Checkbox").Layout(gtx, checkbox)
},
@@ -221,6 +244,7 @@ func kitchen(gtx *layout.Context, th *material.Theme) {
)
},
}
list.Layout(gtx, len(widgets), func(i int) {
layout.UniformInset(unit.Dp(16)).Layout(gtx, widgets[i])
})