From ff52a8f7985306037b1ced82bad17d4d4ac4a95c Mon Sep 17 00:00:00 2001 From: nick Date: Wed, 4 Jun 2025 17:47:02 +1000 Subject: [PATCH 1/2] Update for Gio 0.8.0 --- example/example.go | 26 +++++++-------- go.mod | 15 ++++++--- go.sum | 75 ++++++++++++------------------------------- material/combobox.go | 6 ++-- material/helpers.go | 8 ++--- material/separator.go | 20 ++---------- 6 files changed, 53 insertions(+), 97 deletions(-) diff --git a/example/example.go b/example/example.go index 559e8c4..c5c2036 100644 --- a/example/example.go +++ b/example/example.go @@ -1,18 +1,17 @@ package main import ( + "os" "strconv" "gioui.org/app" - "gioui.org/font/gofont" - "gioui.org/io/system" l "gioui.org/layout" "gioui.org/op" "gioui.org/widget" "gioui.org/widget/material" - "github.com/scartill/giox" - xmat "github.com/scartill/giox/material" + "github.com/nkrul/giox" + xmat "github.com/nkrul/giox/material" ) var ( @@ -32,7 +31,7 @@ func main() { "select an option") run := func() { - w := app.NewWindow() + w := new(app.Window) loop(w) } @@ -41,16 +40,15 @@ func main() { } func loop(w *app.Window) error { - th := material.NewTheme(gofont.Collection()) + th := material.NewTheme() var ops op.Ops for { - e := <-w.Events() - switch e := e.(type) { - case system.DestroyEvent: - return e.Err - case system.FrameEvent: - gtx := l.NewContext(&ops, e) + switch e := w.Event().(type) { + case app.DestroyEvent: + os.Exit(0) + case app.FrameEvent: + gtx := app.NewContext(&ops, e) mainWindow(gtx, th) e.Frame(gtx.Ops) } @@ -59,11 +57,11 @@ func loop(w *app.Window) error { func mainWindow(gtx l.Context, th *material.Theme) { - for comboSelectButton.Clicked() { + for comboSelectButton.Clicked(gtx) { combo.SelectItem("Option B") } - for comboUnselectButton.Clicked() { + for comboUnselectButton.Clicked(gtx) { combo.Unselect() } diff --git a/go.mod b/go.mod index b350e94..717f765 100644 --- a/go.mod +++ b/go.mod @@ -1,8 +1,15 @@ -module github.com/scartill/giox +module github.com/nkrul/giox -go 1.14 +go 1.23.8 + +require gioui.org v0.8.0 require ( - gioui.org v0.0.0-20200628203458-851255f7a67b - gioui.org/example v0.0.0-20200625142128-db03b0898d51 // indirect + gioui.org/shader v1.0.8 // indirect + github.com/go-text/typesetting v0.2.1 // indirect + golang.org/x/exp v0.0.0-20240707233637-46b078467d37 // indirect + golang.org/x/exp/shiny v0.0.0-20240707233637-46b078467d37 // indirect + golang.org/x/image v0.18.0 // indirect + golang.org/x/sys v0.22.0 // indirect + golang.org/x/text v0.16.0 // indirect ) diff --git a/go.sum b/go.sum index a9a0bce..f1ee7a3 100644 --- a/go.sum +++ b/go.sum @@ -1,54 +1,21 @@ -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-20200506064104-e97adeedd918 h1:1NnKWkT57Cks9RiADIBezEJtjFaIF5VJ7r2SF8z5SyQ= -gioui.org v0.0.0-20200506064104-e97adeedd918/go.mod h1:AHI9rFr6AEEHCb8EPVtb/p5M+NMJRKH58IOp8O3Je04= -gioui.org v0.0.0-20200622101735-5368743478e0/go.mod h1:jiUwifN9cRl/zmco43aAqh0aV+s9GbhG13KcD+gEpkU= -gioui.org v0.0.0-20200622185735-5bd0ecea5e43 h1:Nu7QkX+EakW4tOkSB5JqPJ+kxX45Pkme+1hx1BGl9d4= -gioui.org v0.0.0-20200622185735-5bd0ecea5e43/go.mod h1:jiUwifN9cRl/zmco43aAqh0aV+s9GbhG13KcD+gEpkU= -gioui.org v0.0.0-20200625142128-db03b0898d51 h1:eQMXdanO2syJoOIsartcExjUwlkdwlyHSybr1bpsCBs= -gioui.org v0.0.0-20200628203458-851255f7a67b h1:2Eb0izWETwD/QZKFwDyyiUlV9cjFXg6Dl/fMfG7EPWU= -gioui.org v0.0.0-20200628203458-851255f7a67b/go.mod h1:jiUwifN9cRl/zmco43aAqh0aV+s9GbhG13KcD+gEpkU= -gioui.org/example v0.0.0-20200625142128-db03b0898d51 h1:UFFUjSCd/qkQeXbN4MOMhwB0cQCFRTnP5mBQgcznQ7c= -gioui.org/example v0.0.0-20200625142128-db03b0898d51/go.mod h1:+fPBaGHOSEZLP9Wp9CBjFsNjdL1VqoZJcrdKxCE0xXU= -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/go.mod h1:482civXOzJJCPzJ4ZOX/pwvXBWSnzD4OKMdH4ClKGbk= -github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ= -github.com/google/go-github/v24 v24.0.1/go.mod h1:CRqaW1Uns1TCkP0wqTpxYyRxRjxwvKU/XSS44u6X74M= -github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= -golang.org/x/crypto v0.0.0-20180820150726-614d502a4dac/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20191002040644-a1355ae1e2c3 h1:n9HxLrNxWWtEb1cA950nuEEj3QnKbtsCJ6KjcgisNUs= -golang.org/x/exp v0.0.0-20191002040644-a1355ae1e2c3/go.mod h1:NOZ3BPKG0ec/BKJQgnvsSFpcKLM5xXVWnvZS97DWHgE= -golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= -golang.org/x/image v0.0.0-20190802002840-cff245a6509b h1:+qEpEAPhDZ1o0x3tHzZTQDArnOixOzGD9HUJfcg0mb4= -golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/image v0.0.0-20200618115811-c13761719519 h1:1e2ufUJNM3lCHEY5jIgac/7UTjd6cgJNdatjPdFWf34= -golang.org/x/image v0.0.0-20200618115811-c13761719519/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= -golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= -golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20180824143301-4910a1d54f87/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200124204421-9fbb57f87de9 h1:1/DFK4b7JH8DmkqhUk48onnSfrPzImPoVxuomtbT2nk= -golang.org/x/sys v0.0.0-20200124204421-9fbb57f87de9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/tools v0.0.0-20190927191325-030b2cf1153e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= -google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +eliasnaur.com/font v0.0.0-20230308162249-dd43949cb42d h1:ARo7NCVvN2NdhLlJE9xAbKweuI9L6UgfTbYb0YwPacY= +eliasnaur.com/font v0.0.0-20230308162249-dd43949cb42d/go.mod h1:OYVuxibdk9OSLX8vAqydtRPP87PyTFcT9uH3MlEGBQA= +gioui.org v0.8.0 h1:QV5p5JvsmSmGiIXVYOKn6d9YDliTfjtLlVf5J+BZ9Pg= +gioui.org v0.8.0/go.mod h1:vEMmpxMOd/iwJhXvGVIzWEbxMWhnMQ9aByOGQdlQ8rc= +gioui.org/cpu v0.0.0-20210808092351-bfe733dd3334/go.mod h1:A8M0Cn5o+vY5LTMlnRoK3O5kG+rH0kWfJjeKd9QpBmQ= +gioui.org/shader v1.0.8 h1:6ks0o/A+b0ne7RzEqRZK5f4Gboz2CfG+mVliciy6+qA= +gioui.org/shader v1.0.8/go.mod h1:mWdiME581d/kV7/iEhLmUgUK5iZ09XR5XpduXzbePVM= +github.com/go-text/typesetting v0.2.1 h1:x0jMOGyO3d1qFAPI0j4GSsh7M0Q3Ypjzr4+CEVg82V8= +github.com/go-text/typesetting v0.2.1/go.mod h1:mTOxEwasOFpAMBjEQDhdWRckoLLeI/+qrQeBCTGEt6M= +github.com/go-text/typesetting-utils v0.0.0-20241103174707-87a29e9e6066 h1:qCuYC+94v2xrb1PoS4NIDe7DGYtLnU2wWiQe9a1B1c0= +github.com/go-text/typesetting-utils v0.0.0-20241103174707-87a29e9e6066/go.mod h1:DDxDdQEnB70R8owOx3LVpEFvpMK9eeH1o2r0yZhFI9o= +golang.org/x/exp v0.0.0-20240707233637-46b078467d37 h1:uLDX+AfeFCct3a2C7uIWBKMJIR3CJMhcgfrUAqjRK6w= +golang.org/x/exp v0.0.0-20240707233637-46b078467d37/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY= +golang.org/x/exp/shiny v0.0.0-20240707233637-46b078467d37 h1:SOSg7+sueresE4IbmmGM60GmlIys+zNX63d6/J4CMtU= +golang.org/x/exp/shiny v0.0.0-20240707233637-46b078467d37/go.mod h1:3F+MieQB7dRYLTmnncoFbb1crS5lfQoTfDgQy6K4N0o= +golang.org/x/image v0.18.0 h1:jGzIakQa/ZXI1I0Fxvaa9W7yP25TqT6cHIHn+6CqvSQ= +golang.org/x/image v0.18.0/go.mod h1:4yyo5vMFQjVjUcVk4jEQcU9MGy/rulF5WvUILseCM2E= +golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI= +golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= +golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= diff --git a/material/combobox.go b/material/combobox.go index a6d72e9..2e95f16 100644 --- a/material/combobox.go +++ b/material/combobox.go @@ -7,7 +7,7 @@ import ( l "gioui.org/layout" "gioui.org/unit" giomat "gioui.org/widget/material" - "github.com/scartill/giox" + "github.com/nkrul/giox" ) // ComboStyle holds combobox rendering parameters @@ -29,7 +29,7 @@ func (c ComboStyle) Layout(gtx l.Context) l.Dimensions { subwidgets := make([]l.FlexChild, 0) if !c.widget.IsExpanded() { - for c.widget.SelectButton().Clicked() { + for c.widget.SelectButton().Clicked(gtx) { c.widget.Toggle() } @@ -43,7 +43,7 @@ func (c ComboStyle) Layout(gtx l.Context) l.Dimensions { } else { N := c.widget.Len() for i := 0; i < N; i++ { - for c.widget.Button(i).Clicked() { + for c.widget.Button(i).Clicked(gtx) { if err := c.widget.SelectIndex(i); err != nil { fmt.Println("giox error: bad index") } diff --git a/material/helpers.go b/material/helpers.go index fed14a7..c87b9aa 100644 --- a/material/helpers.go +++ b/material/helpers.go @@ -8,19 +8,19 @@ import ( "gioui.org/unit" "gioui.org/widget" giomat "gioui.org/widget/material" - "github.com/scartill/giox" + "github.com/nkrul/giox" ) // RigidEditor returns layout function for labeled edit field func RigidEditor(th *giomat.Theme, caption string, hint string, editor *widget.Editor) l.FlexChild { editorStyle := giomat.Editor(th, editor, hint) - editorStyle.Color = color.RGBA{R: 0, G: 0, B: 255, A: 255} + editorStyle.Color = color.NRGBA{R: 0, G: 0, B: 255, A: 255} return l.Rigid(func(gtx l.Context) l.Dimensions { inset := l.UniformInset(unit.Dp(3)) return l.Flex{Axis: l.Horizontal}.Layout(gtx, l.Rigid(func(gtx l.Context) l.Dimensions { return inset.Layout(gtx, func(l.Context) l.Dimensions { - return giomat.Label(th, unit.Px(14), caption).Layout(gtx) + return giomat.Label(th, unit.Sp(14), caption).Layout(gtx) }) }), l.Rigid(func(gtx l.Context) l.Dimensions { @@ -54,7 +54,7 @@ func RigidSection(th *giomat.Theme, caption string) l.FlexChild { // RigidLabel returns layout function for a regular label func RigidLabel(th *giomat.Theme, caption string) l.FlexChild { return layout.Rigid(func(gtx l.Context) l.Dimensions { - return giomat.Label(th, unit.Px(16), caption).Layout(gtx) + return giomat.Label(th, unit.Sp(16), caption).Layout(gtx) }) } diff --git a/material/separator.go b/material/separator.go index fe9ca8f..b27cfb1 100644 --- a/material/separator.go +++ b/material/separator.go @@ -2,16 +2,12 @@ package material import ( "image" - "image/color" - "gioui.org/f32" "gioui.org/layout" l "gioui.org/layout" - "gioui.org/op/clip" - "gioui.org/op/paint" "gioui.org/unit" giomat "gioui.org/widget/material" - "github.com/scartill/giox" + "github.com/nkrul/giox" ) // SeparatorStyle defines material rendering parameters for separator @@ -34,19 +30,7 @@ func (ss SeparatorStyle) Layout(gtx l.Context) l.Dimensions { shader := func(width float32) layout.Dimensions { height := unit.Dp(2) - d := image.Point{X: int(width), Y: gtx.Px(height)} - dr := f32.Rectangle{ - Max: f32.Point{X: float32(d.X), Y: float32(d.Y)}, - } - - clip.Rect{ - Rect: f32.Rectangle{Max: f32.Point{X: width, Y: float32(gtx.Px(height))}}, - }.Op(gtx.Ops).Add(gtx.Ops) - - paint.ColorOp{Color: color.RGBA{ - R: 128, G: 128, B: 128, A: 255, - }}.Add(gtx.Ops) - paint.PaintOp{Rect: dr}.Add(gtx.Ops) + d := image.Point{X: int(width), Y: gtx.Dp(height)} return layout.Dimensions{Size: d} } From 1fb40ee50dfc2890dfd410d3a25feebbfe0190ef Mon Sep 17 00:00:00 2001 From: nick Date: Wed, 4 Jun 2025 17:52:01 +1000 Subject: [PATCH 2/2] nkrul -> scartill naming --- example/example.go | 4 ++-- go.mod | 2 +- material/combobox.go | 2 +- material/helpers.go | 2 +- material/separator.go | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/example/example.go b/example/example.go index c5c2036..ec319c6 100644 --- a/example/example.go +++ b/example/example.go @@ -10,8 +10,8 @@ import ( "gioui.org/widget" "gioui.org/widget/material" - "github.com/nkrul/giox" - xmat "github.com/nkrul/giox/material" + "github.com/scartill/giox" + xmat "github.com/scartill/giox/material" ) var ( diff --git a/go.mod b/go.mod index 717f765..c671e82 100644 --- a/go.mod +++ b/go.mod @@ -1,4 +1,4 @@ -module github.com/nkrul/giox +module github.com/scartill/giox go 1.23.8 diff --git a/material/combobox.go b/material/combobox.go index 2e95f16..23738c8 100644 --- a/material/combobox.go +++ b/material/combobox.go @@ -7,7 +7,7 @@ import ( l "gioui.org/layout" "gioui.org/unit" giomat "gioui.org/widget/material" - "github.com/nkrul/giox" + "github.com/scartill/giox" ) // ComboStyle holds combobox rendering parameters diff --git a/material/helpers.go b/material/helpers.go index c87b9aa..0c4a384 100644 --- a/material/helpers.go +++ b/material/helpers.go @@ -8,7 +8,7 @@ import ( "gioui.org/unit" "gioui.org/widget" giomat "gioui.org/widget/material" - "github.com/nkrul/giox" + "github.com/scartill/giox" ) // RigidEditor returns layout function for labeled edit field diff --git a/material/separator.go b/material/separator.go index b27cfb1..f11175b 100644 --- a/material/separator.go +++ b/material/separator.go @@ -7,7 +7,7 @@ import ( l "gioui.org/layout" "gioui.org/unit" giomat "gioui.org/widget/material" - "github.com/nkrul/giox" + "github.com/scartill/giox" ) // SeparatorStyle defines material rendering parameters for separator