From 97934dcec96d70e8676eba8809bd0941939299b8 Mon Sep 17 00:00:00 2001 From: ErikKalkoken Date: Thu, 17 Oct 2024 18:21:28 +0200 Subject: [PATCH 1/5] Update dependencies --- FyneApp.toml | 2 +- go.mod | 22 +++++++++++----------- go.sum | 22 ++++++++++++++++++++++ 3 files changed, 34 insertions(+), 12 deletions(-) diff --git a/FyneApp.toml b/FyneApp.toml index 8a3bcd5..fd33415 100644 --- a/FyneApp.toml +++ b/FyneApp.toml @@ -4,7 +4,7 @@ Website = "https://github.com/ErikKalkoken/janice" Icon = "icon.png" Name = "Janice" ID = "io.github.erikkalkoken.janice" - Version = "0.4.1" + Version = "0.4.2" Build = 1 [Release] diff --git a/go.mod b/go.mod index f9fd03e..a05216a 100644 --- a/go.mod +++ b/go.mod @@ -3,13 +3,13 @@ module github.com/ErikKalkoken/janice go 1.23 require ( - fyne.io/fyne/v2 v2.5.1 - github.com/dweymouth/fyne-tooltip v0.2.0 + fyne.io/fyne/v2 v2.5.2 + github.com/dweymouth/fyne-tooltip v0.2.1 github.com/hashicorp/go-version v1.7.0 github.com/jarcoal/httpmock v1.3.1 github.com/json-iterator/go v1.1.12 github.com/stretchr/testify v1.9.0 - golang.org/x/text v0.17.0 + golang.org/x/text v0.19.0 ) require ( @@ -23,23 +23,23 @@ require ( github.com/fyne-io/image v0.0.0-20240417123036-dc0ee9e7c964 // indirect github.com/go-gl/gl v0.0.0-20231021071112-07e5d0ea2e71 // indirect github.com/go-gl/glfw/v3.3/glfw v0.0.0-20240506104042-037f3cc74f2a // indirect - github.com/go-text/render v0.1.1-0.20240418202334-dd62631dae9b // indirect - github.com/go-text/typesetting v0.1.1 // indirect + github.com/go-text/render v0.2.0 // indirect + github.com/go-text/typesetting v0.2.0 // indirect github.com/godbus/dbus/v5 v5.1.0 // indirect github.com/gopherjs/gopherjs v1.17.2 // indirect github.com/jeandeaual/go-locale v0.0.0-20240223122105-ce5225dcaa49 // indirect github.com/jsummers/gobmp v0.0.0-20230614200233-a9de23ed2e25 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect - github.com/nicksnyder/go-i18n/v2 v2.4.0 // indirect + github.com/nicksnyder/go-i18n/v2 v2.4.1 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/rymdport/portal v0.2.6 // indirect github.com/srwiley/oksvg v0.0.0-20221011165216-be6e8873101c // indirect github.com/srwiley/rasterx v0.0.0-20220730225603-2ab79fcdd4ef // indirect - github.com/yuin/goldmark v1.7.4 // indirect - golang.org/x/image v0.19.0 // indirect - golang.org/x/mobile v0.0.0-20240806205939-81131f6468ab // indirect - golang.org/x/net v0.28.0 // indirect - golang.org/x/sys v0.24.0 // indirect + github.com/yuin/goldmark v1.7.8 // indirect + golang.org/x/image v0.21.0 // indirect + golang.org/x/mobile v0.0.0-20241016134751-7ff83004ec2c // indirect + golang.org/x/net v0.30.0 // indirect + golang.org/x/sys v0.26.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index fd43ead..895b191 100644 --- a/go.sum +++ b/go.sum @@ -41,6 +41,8 @@ fyne.io/fyne/v2 v2.5.0 h1:lEjEIso0Vi4sJXYngIMoXOM6aUjqnPjK7pBpxRxG9aI= fyne.io/fyne/v2 v2.5.0/go.mod h1:9D4oT3NWeG+MLi/lP7ItZZyujHC/qqMJpoGTAYX5Uqc= fyne.io/fyne/v2 v2.5.1 h1:jd2mhQz0ViosZjhgR5l2bdCbc5HFqkYnTzEXX8UOC7I= fyne.io/fyne/v2 v2.5.1/go.mod h1:NdxEG8L7EVWo06/cYbXW11uA0X7UG8Q8j5CLebvTZi8= +fyne.io/fyne/v2 v2.5.2 h1:eSyGTmSkv10yAdAeHpDet6u2KkKxOGFc14kQu81We7Q= +fyne.io/fyne/v2 v2.5.2/go.mod h1:26gqPDvtaxHeyct+C0BBjuGd2zwAJlPkUGSBrb+d7Ug= fyne.io/systray v1.11.0 h1:D9HISlxSkx+jHSniMBR6fCFOUjk1x/OOOJLa9lJYAKg= fyne.io/systray v1.11.0/go.mod h1:RVwqP9nYMo7h5zViCBHri2FgjXF7H2cub7MAq4NSoLs= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= @@ -71,6 +73,8 @@ github.com/dweymouth/fyne-tooltip v0.1.0 h1:Qd1KU1TXop/M67pozmxEA2PMy/Jokcn7OgTc github.com/dweymouth/fyne-tooltip v0.1.0/go.mod h1:zEgy7p9tSVIuy2GufFbOCoK3Q04zhyDPOotlU4G3Ma4= github.com/dweymouth/fyne-tooltip v0.2.0 h1:6Zy3gryctuPoQfYf8Xp3tjenioebMt11NBGW/QXIvxE= github.com/dweymouth/fyne-tooltip v0.2.0/go.mod h1:zEgy7p9tSVIuy2GufFbOCoK3Q04zhyDPOotlU4G3Ma4= +github.com/dweymouth/fyne-tooltip v0.2.1 h1:I+uOIcDcSCvK2ydKina4oehIsR9PrmfyesmT1uxOW9A= +github.com/dweymouth/fyne-tooltip v0.2.1/go.mod h1:zEgy7p9tSVIuy2GufFbOCoK3Q04zhyDPOotlU4G3Ma4= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= @@ -105,8 +109,12 @@ github.com/go-text/render v0.1.0 h1:osrmVDZNHuP1RSu3pNG7Z77Sd2xSbcb/xWytAj9kyVs= github.com/go-text/render v0.1.0/go.mod h1:jqEuNMenrmj6QRnkdpeaP0oKGFLDNhDkVKwGjsWWYU4= github.com/go-text/render v0.1.1-0.20240418202334-dd62631dae9b h1:daoFn+Aw8EIQZO9kYWwHL01FqwwpCl2nTeVEYbsgRHk= github.com/go-text/render v0.1.1-0.20240418202334-dd62631dae9b/go.mod h1:jqEuNMenrmj6QRnkdpeaP0oKGFLDNhDkVKwGjsWWYU4= +github.com/go-text/render v0.2.0 h1:LBYoTmp5jYiJ4NPqDc2pz17MLmA3wHw1dZSVGcOdeAc= +github.com/go-text/render v0.2.0/go.mod h1:CkiqfukRGKJA5vZZISkjSYrcdtgKQWRa2HIzvwNN5SU= github.com/go-text/typesetting v0.1.1 h1:bGAesCuo85nXnEN5LmFMVGAGpGkCPtHrZLi//qD7EJo= github.com/go-text/typesetting v0.1.1/go.mod h1:d22AnmeKq/on0HNv73UFriMKc4Ez6EqZAofLhAzpSzI= +github.com/go-text/typesetting v0.2.0 h1:fbzsgbmk04KiWtE+c3ZD4W2nmCRzBqrqQOvYlwAOdho= +github.com/go-text/typesetting v0.2.0/go.mod h1:2+owI/sxa73XA581LAzVuEBZ3WEEV2pXeDswCH/3i1I= github.com/go-text/typesetting-utils v0.0.0-20240329101916-eee87fb235a3 h1:levTnuLLUmpavLGbJYLJA7fQnKeS7P1eCdAlM+vReXk= github.com/go-text/typesetting-utils v0.0.0-20240329101916-eee87fb235a3/go.mod h1:DDxDdQEnB70R8owOx3LVpEFvpMK9eeH1o2r0yZhFI9o= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= @@ -252,6 +260,8 @@ github.com/neelance/astrewrite v0.0.0-20160511093645-99348263ae86/go.mod h1:kHJE github.com/neelance/sourcemap v0.0.0-20200213170602-2833bce08e4c/go.mod h1:Qr6/a/Q4r9LP1IltGz7tA7iOK1WonHEYhu1HRBA7ZiM= github.com/nicksnyder/go-i18n/v2 v2.4.0 h1:3IcvPOAvnCKwNm0TB0dLDTuawWEj+ax/RERNC+diLMM= github.com/nicksnyder/go-i18n/v2 v2.4.0/go.mod h1:nxYSZE9M0bf3Y70gPQjN9ha7XNHX7gMc814+6wVyEI4= +github.com/nicksnyder/go-i18n/v2 v2.4.1 h1:zwzjtX4uYyiaU02K5Ia3zSkpJZrByARkRB4V3YPrr0g= +github.com/nicksnyder/go-i18n/v2 v2.4.1/go.mod h1:++Pl70FR6Cki7hdzZRnEEqdc2dJt+SAGotyFg/SvZMk= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= @@ -307,6 +317,8 @@ github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1 github.com/yuin/goldmark v1.4.0/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.7.4 h1:BDXOHExt+A7gwPCJgPIIq7ENvceR7we7rOS9TNoLZeg= github.com/yuin/goldmark v1.7.4/go.mod h1:uzxRWxtg69N339t3louHJ7+O03ezfj6PlliRlaOzY1E= +github.com/yuin/goldmark v1.7.8 h1:iERMLn0/QJeHFhxSt3p6PeN9mGnvIKSpG9YYorDMnic= +github.com/yuin/goldmark v1.7.8/go.mod h1:uzxRWxtg69N339t3louHJ7+O03ezfj6PlliRlaOzY1E= go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= go.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= go.etcd.io/etcd/client/v2 v2.305.0/go.mod h1:h9puh54ZTgAKtEbut2oe9P4L/oqKCVB6xsXlzd7alYQ= @@ -345,6 +357,8 @@ 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/image v0.19.0 h1:D9FX4QWkLfkeqaC62SonffIIuYdOk/UE2XKUBgRIBIQ= golang.org/x/image v0.19.0/go.mod h1:y0zrRqlQRWQ5PXaYCOMLTW2fpsxZ8Qh9I/ohnInJEys= +golang.org/x/image v0.21.0 h1:c5qV36ajHpdj4Qi0GnE0jUc/yuo33OLFaa0d+crTD5s= +golang.org/x/image v0.21.0/go.mod h1:vUbsLavqK/W303ZroQQVKQ+Af3Yl6Uz1Ppu5J/cLz78= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -364,6 +378,8 @@ golang.org/x/mobile v0.0.0-20240716161057-1ad2df20a8b6 h1:/VlmIrkuLf2wzPjkZ8imSp golang.org/x/mobile v0.0.0-20240716161057-1ad2df20a8b6/go.mod h1:TCsc78+c4cqb8IKEosz2LwJ6YRNkIjMuAYeHYjchGDE= golang.org/x/mobile v0.0.0-20240806205939-81131f6468ab h1:KONOFF8Uy3b60HEzOsGnNghORNhY4ImyOx0PGm73K9k= golang.org/x/mobile v0.0.0-20240806205939-81131f6468ab/go.mod h1:udWezQGYjqrCxz5nV321pXQTx5oGbZx+khZvFjZNOPM= +golang.org/x/mobile v0.0.0-20241016134751-7ff83004ec2c h1:zuNS/LWsEpPTLfrmBkis6Xofw3nieAqB4hYLn8+uswk= +golang.org/x/mobile v0.0.0-20241016134751-7ff83004ec2c/go.mod h1:snk1Mn2ZpdKCt90JPEsDh4sL3ReK520U2t0d7RHBnSU= golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= @@ -414,6 +430,8 @@ golang.org/x/net v0.27.0 h1:5K3Njcw06/l2y9vpGCSdcxWOYHOUk3dVNGDXN+FvAys= golang.org/x/net v0.27.0/go.mod h1:dDi0PyhWNoiUOrAS8uXv/vnScO4wnHQO4mj9fn/RytE= golang.org/x/net v0.28.0 h1:a9JDOJc5GMUJ0+UDqmLT86WiEy7iWyIhz8gz8E4e5hE= golang.org/x/net v0.28.0/go.mod h1:yqtgsTWOOnlGLG9GFRrK3++bGOUEkNBoHZc8MEDWPNg= +golang.org/x/net v0.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4= +golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -486,6 +504,8 @@ 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/sys v0.24.0 h1:Twjiwq9dn6R1fQcyiK+wQyHWfaz/BJB+YIpzU/Cv3Xg= golang.org/x/sys v0.24.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.26.0 h1:KHjCJyddX0LoSTb3J+vWpupP9p0oznkqVk/IfjymZbo= +golang.org/x/sys v0.26.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -499,6 +519,8 @@ golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= golang.org/x/text v0.17.0 h1:XtiM5bkSOt+ewxlOE/aE/AKEHibwj/6gvWMl9Rsh0Qc= golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= +golang.org/x/text v0.19.0 h1:kTxAhCbGbxhK0IwgSKiMO5awPoDQ0RpfiVYBfK860YM= +golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= From f867b70671d240c781f3d50b2059c6734f85281c Mon Sep 17 00:00:00 2001 From: ErikKalkoken Date: Thu, 17 Oct 2024 18:26:26 +0200 Subject: [PATCH 2/5] Improve build process --- .github/workflows/ci-cd.yml | 10 +++++----- FyneApp.toml | 4 ++-- Makefile | 4 ++-- build_appimage.sh => tools/build_appimage.sh | 0 4 files changed, 9 insertions(+), 9 deletions(-) rename build_appimage.sh => tools/build_appimage.sh (100%) diff --git a/.github/workflows/ci-cd.yml b/.github/workflows/ci-cd.yml index f0aea3f..6368ce6 100644 --- a/.github/workflows/ci-cd.yml +++ b/.github/workflows/ci-cd.yml @@ -55,7 +55,7 @@ jobs: run: go install fyne.io/fyne/v2/cmd/fyne@latest - name: Package Fyne app - run: fyne package -os linux + run: fyne package -os linux --release - name: Set version run: | @@ -63,7 +63,7 @@ jobs: echo "VERSION=${VERSION:1}" >> $GITHUB_ENV - name: Build AppImage - run: ./build_appimage.sh + run: ./tools/build_appimage.sh - uses: actions/upload-artifact@v4 with: @@ -101,7 +101,7 @@ jobs: run: go install fyne.io/fyne/v2/cmd/fyne@latest - name: Package - run: fyne package -os windows + run: fyne package -os windows --release - name: Set version run: | @@ -140,7 +140,7 @@ jobs: run: go install fyne.io/fyne/v2/cmd/fyne@latest - name: Package app bundles - run: fyne package -os darwin + run: fyne package -os darwin --release - name: Set version run: | @@ -179,7 +179,7 @@ jobs: run: go install fyne.io/fyne/v2/cmd/fyne@latest - name: Package app bundles - run: fyne package -os darwin + run: fyne package -os darwin --release - name: Set version run: | diff --git a/FyneApp.toml b/FyneApp.toml index fd33415..a75b6f7 100644 --- a/FyneApp.toml +++ b/FyneApp.toml @@ -5,14 +5,14 @@ Website = "https://github.com/ErikKalkoken/janice" Name = "Janice" ID = "io.github.erikkalkoken.janice" Version = "0.4.2" - Build = 1 + Build = 2 [Release] BuildName = "janice" + ContentRating = "oars-1.1" Description = "

A desktop app for viewing large JSON files. Please see website for details.

" License = "MIT" Screenshots = "https://cdn.imgpile.com/f/0IrYBjJ_xl.png" - ContentRating = "oars-1.1" [LinuxAndBSD] GenericName = "JSON viewer" diff --git a/Makefile b/Makefile index 407dd4b..435f0eb 100644 --- a/Makefile +++ b/Makefile @@ -2,7 +2,7 @@ bundle: fyne bundle --package ui resources > internal/ui/resource.go appimage: - ./build_appimage.sh + ./tools/build_appimage.sh release: - fyne package -os linux \ No newline at end of file + fyne package -os linux --release \ No newline at end of file diff --git a/build_appimage.sh b/tools/build_appimage.sh similarity index 100% rename from build_appimage.sh rename to tools/build_appimage.sh From c0e316a36d3328936f8e9a397820fbfbc3b15395 Mon Sep 17 00:00:00 2001 From: ErikKalkoken Date: Thu, 17 Oct 2024 18:43:04 +0200 Subject: [PATCH 3/5] Improve settings dialog --- internal/ui/settings.go | 45 ++++++++++++++++++++--------------------- 1 file changed, 22 insertions(+), 23 deletions(-) diff --git a/internal/ui/settings.go b/internal/ui/settings.go index 8c0c492..b2f82f1 100644 --- a/internal/ui/settings.go +++ b/internal/ui/settings.go @@ -29,21 +29,38 @@ const ( ) func (u *UI) showSettingsDialog() { + // recent files recentEntry := widget.NewEntry() + recentEntry.OnChanged = func(s string) { + x, err := strconv.Atoi(recentEntry.Text) + if err != nil { + slog.Error("Failed to convert", "err", err) + return + } + u.app.Preferences().SetInt(settingRecentFileCount, x) + } x := u.app.Preferences().IntWithFallback(settingRecentFileCount, settingRecentFileCountDefault) recentEntry.SetText(strconv.Itoa(x)) recentEntry.Validator = newPositiveNumberValidator() - extFilter := widget.NewCheck("enabled", func(bool) {}) + // apply file filter + extFilter := widget.NewCheck("enabled", func(v bool) { + u.app.Preferences().SetBool(settingExtensionFilter, v) + }) y := u.app.Preferences().BoolWithFallback(settingExtensionFilter, settingExtensionDefault) extFilter.SetChecked(y) - notifyUpdates := widget.NewCheck("enabled", func(bool) {}) + notifyUpdates := widget.NewCheck("enabled", func(v bool) { + u.app.Preferences().SetBool(settingNotifyUpdates, v) + }) z := u.app.Preferences().BoolWithFallback(settingNotifyUpdates, settingNotifyUpdatesDefault) notifyUpdates.SetChecked(z) themeChoice := widget.NewRadioGroup( - []string{themeAuto, themeDark, themeLight}, func(s string) {}, + []string{themeAuto, themeDark, themeLight}, func(v string) { + u.app.Preferences().SetString(settingTheme, v) + u.setTheme(v) + }, ) initialTheme := u.app.Preferences().StringWithFallback(settingTheme, settingThemeDefault) themeChoice.SetSelected(initialTheme) @@ -52,27 +69,9 @@ func (u *UI) showSettingsDialog() { {Text: "Max recent files", Widget: recentEntry, HintText: "Maximum number of recent files remembered"}, {Text: "JSON file filter", Widget: extFilter, HintText: "Wether to show files with .json extension only"}, {Text: "Notify about updates", Widget: notifyUpdates, HintText: "Wether to notify when an update is available (requires restart)"}, - {Text: "Theme", Widget: themeChoice, HintText: "Choose the preferred theme (requires restart)"}, + {Text: "Theme", Widget: themeChoice, HintText: "Choose the preferred theme"}, } - d := dialog.NewForm( - "Settings", "Apply", "Cancel", items, func(applied bool) { - if !applied { - return - } - x, err := strconv.Atoi(recentEntry.Text) - if err != nil { - slog.Error("Failed to convert", "err", err) - return - } - u.app.Preferences().SetInt(settingRecentFileCount, x) - u.app.Preferences().SetBool(settingExtensionFilter, extFilter.Checked) - u.app.Preferences().SetBool(settingNotifyUpdates, notifyUpdates.Checked) - newTheme := themeChoice.Selected - if newTheme != initialTheme { - u.app.Preferences().SetString(settingTheme, newTheme) - u.setTheme(themeChoice.Selected) - } - }, u.window) + d := dialog.NewCustom("Settings", "Close", widget.NewForm(items...), u.window) d.Show() } From cc9d87069aa098917b8fb71693f272a63b6f3d36 Mon Sep 17 00:00:00 2001 From: ErikKalkoken Date: Thu, 17 Oct 2024 21:16:15 +0200 Subject: [PATCH 4/5] Add kx package --- go.mod | 2 ++ go.sum | 49 ++++----------------------- internal/ui/selection.go | 4 +-- internal/ui/settings.go | 38 ++++----------------- internal/widgets/tappablelabel.go | 56 ------------------------------- 5 files changed, 17 insertions(+), 132 deletions(-) delete mode 100644 internal/widgets/tappablelabel.go diff --git a/go.mod b/go.mod index a05216a..88cb1e3 100644 --- a/go.mod +++ b/go.mod @@ -4,6 +4,7 @@ go 1.23 require ( fyne.io/fyne/v2 v2.5.2 + github.com/ErikKalkoken/fyne-kx v0.0.0-20241017191228-704cdd115b48 github.com/dweymouth/fyne-tooltip v0.2.1 github.com/hashicorp/go-version v1.7.0 github.com/jarcoal/httpmock v1.3.1 @@ -37,6 +38,7 @@ require ( github.com/srwiley/oksvg v0.0.0-20221011165216-be6e8873101c // indirect github.com/srwiley/rasterx v0.0.0-20220730225603-2ab79fcdd4ef // indirect github.com/yuin/goldmark v1.7.8 // indirect + golang.org/x/exp v0.0.0-20241009180824-f66d83c29e7c // indirect golang.org/x/image v0.21.0 // indirect golang.org/x/mobile v0.0.0-20241016134751-7ff83004ec2c // indirect golang.org/x/net v0.30.0 // indirect diff --git a/go.sum b/go.sum index 895b191..ff97534 100644 --- a/go.sum +++ b/go.sum @@ -37,10 +37,6 @@ cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohl cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -fyne.io/fyne/v2 v2.5.0 h1:lEjEIso0Vi4sJXYngIMoXOM6aUjqnPjK7pBpxRxG9aI= -fyne.io/fyne/v2 v2.5.0/go.mod h1:9D4oT3NWeG+MLi/lP7ItZZyujHC/qqMJpoGTAYX5Uqc= -fyne.io/fyne/v2 v2.5.1 h1:jd2mhQz0ViosZjhgR5l2bdCbc5HFqkYnTzEXX8UOC7I= -fyne.io/fyne/v2 v2.5.1/go.mod h1:NdxEG8L7EVWo06/cYbXW11uA0X7UG8Q8j5CLebvTZi8= fyne.io/fyne/v2 v2.5.2 h1:eSyGTmSkv10yAdAeHpDet6u2KkKxOGFc14kQu81We7Q= fyne.io/fyne/v2 v2.5.2/go.mod h1:26gqPDvtaxHeyct+C0BBjuGd2zwAJlPkUGSBrb+d7Ug= fyne.io/systray v1.11.0 h1:D9HISlxSkx+jHSniMBR6fCFOUjk1x/OOOJLa9lJYAKg= @@ -49,6 +45,8 @@ github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03 github.com/BurntSushi/toml v1.4.0 h1:kuoIxZQy2WRRk1pttg9asf+WVv6tWQuBNVmK8+nqPr0= github.com/BurntSushi/toml v1.4.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/ErikKalkoken/fyne-kx v0.0.0-20241017191228-704cdd115b48 h1:LYF0lAShpyI+MXGp6fHe0V/2o+Lu8m9rmK88JUInTnQ= +github.com/ErikKalkoken/fyne-kx v0.0.0-20241017191228-704cdd115b48/go.mod h1:T1f84yGlDtqUUhjdSHVhX9yhzvFCxNLdsj08lUxkdww= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= @@ -69,10 +67,6 @@ github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsr github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/dweymouth/fyne-tooltip v0.1.0 h1:Qd1KU1TXop/M67pozmxEA2PMy/Jokcn7OgTcdrj4hUs= -github.com/dweymouth/fyne-tooltip v0.1.0/go.mod h1:zEgy7p9tSVIuy2GufFbOCoK3Q04zhyDPOotlU4G3Ma4= -github.com/dweymouth/fyne-tooltip v0.2.0 h1:6Zy3gryctuPoQfYf8Xp3tjenioebMt11NBGW/QXIvxE= -github.com/dweymouth/fyne-tooltip v0.2.0/go.mod h1:zEgy7p9tSVIuy2GufFbOCoK3Q04zhyDPOotlU4G3Ma4= github.com/dweymouth/fyne-tooltip v0.2.1 h1:I+uOIcDcSCvK2ydKina4oehIsR9PrmfyesmT1uxOW9A= github.com/dweymouth/fyne-tooltip v0.2.1/go.mod h1:zEgy7p9tSVIuy2GufFbOCoK3Q04zhyDPOotlU4G3Ma4= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= @@ -105,18 +99,12 @@ github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2 github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20240506104042-037f3cc74f2a h1:vxnBhFDDT+xzxf1jTJKMKZw3H0swfWk9RpWbBbDK5+0= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20240506104042-037f3cc74f2a/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-text/render v0.1.0 h1:osrmVDZNHuP1RSu3pNG7Z77Sd2xSbcb/xWytAj9kyVs= -github.com/go-text/render v0.1.0/go.mod h1:jqEuNMenrmj6QRnkdpeaP0oKGFLDNhDkVKwGjsWWYU4= -github.com/go-text/render v0.1.1-0.20240418202334-dd62631dae9b h1:daoFn+Aw8EIQZO9kYWwHL01FqwwpCl2nTeVEYbsgRHk= -github.com/go-text/render v0.1.1-0.20240418202334-dd62631dae9b/go.mod h1:jqEuNMenrmj6QRnkdpeaP0oKGFLDNhDkVKwGjsWWYU4= github.com/go-text/render v0.2.0 h1:LBYoTmp5jYiJ4NPqDc2pz17MLmA3wHw1dZSVGcOdeAc= github.com/go-text/render v0.2.0/go.mod h1:CkiqfukRGKJA5vZZISkjSYrcdtgKQWRa2HIzvwNN5SU= -github.com/go-text/typesetting v0.1.1 h1:bGAesCuo85nXnEN5LmFMVGAGpGkCPtHrZLi//qD7EJo= -github.com/go-text/typesetting v0.1.1/go.mod h1:d22AnmeKq/on0HNv73UFriMKc4Ez6EqZAofLhAzpSzI= github.com/go-text/typesetting v0.2.0 h1:fbzsgbmk04KiWtE+c3ZD4W2nmCRzBqrqQOvYlwAOdho= github.com/go-text/typesetting v0.2.0/go.mod h1:2+owI/sxa73XA581LAzVuEBZ3WEEV2pXeDswCH/3i1I= -github.com/go-text/typesetting-utils v0.0.0-20240329101916-eee87fb235a3 h1:levTnuLLUmpavLGbJYLJA7fQnKeS7P1eCdAlM+vReXk= -github.com/go-text/typesetting-utils v0.0.0-20240329101916-eee87fb235a3/go.mod h1:DDxDdQEnB70R8owOx3LVpEFvpMK9eeH1o2r0yZhFI9o= +github.com/go-text/typesetting-utils v0.0.0-20240317173224-1986cbe96c66 h1:GUrm65PQPlhFSKjLPGOZNPNxLCybjzjYBzjfoBGaDUY= +github.com/go-text/typesetting-utils v0.0.0-20240317173224-1986cbe96c66/go.mod h1:DDxDdQEnB70R8owOx3LVpEFvpMK9eeH1o2r0yZhFI9o= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/godbus/dbus/v5 v5.1.0 h1:4KLkAxT3aOY8Li4FRJe/KvhoNFFxo0m6fNuFUO8QJUk= github.com/godbus/dbus/v5 v5.1.0/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= @@ -258,8 +246,6 @@ github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9G github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/neelance/astrewrite v0.0.0-20160511093645-99348263ae86/go.mod h1:kHJEU3ofeGjhHklVoIGuVj85JJwZ6kWPaJwCIxgnFmo= github.com/neelance/sourcemap v0.0.0-20200213170602-2833bce08e4c/go.mod h1:Qr6/a/Q4r9LP1IltGz7tA7iOK1WonHEYhu1HRBA7ZiM= -github.com/nicksnyder/go-i18n/v2 v2.4.0 h1:3IcvPOAvnCKwNm0TB0dLDTuawWEj+ax/RERNC+diLMM= -github.com/nicksnyder/go-i18n/v2 v2.4.0/go.mod h1:nxYSZE9M0bf3Y70gPQjN9ha7XNHX7gMc814+6wVyEI4= github.com/nicksnyder/go-i18n/v2 v2.4.1 h1:zwzjtX4uYyiaU02K5Ia3zSkpJZrByARkRB4V3YPrr0g= github.com/nicksnyder/go-i18n/v2 v2.4.1/go.mod h1:++Pl70FR6Cki7hdzZRnEEqdc2dJt+SAGotyFg/SvZMk= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= @@ -278,8 +264,6 @@ github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6L github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/rymdport/portal v0.2.3 h1:5RoAuMy5wNzEzITwK+9YpMQLU5m7F7IYfmPwN/aVpUk= -github.com/rymdport/portal v0.2.3/go.mod h1:kFF4jslnJ8pD5uCi17brj/ODlfIidOxlgUDTO5ncnC4= github.com/rymdport/portal v0.2.6 h1:HWmU3gORu7vWcpr7VSwUS2Xx1HtJXVcUuTqEZcMEsIg= github.com/rymdport/portal v0.2.6/go.mod h1:kFF4jslnJ8pD5uCi17brj/ODlfIidOxlgUDTO5ncnC4= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= @@ -315,8 +299,6 @@ github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.0/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -github.com/yuin/goldmark v1.7.4 h1:BDXOHExt+A7gwPCJgPIIq7ENvceR7we7rOS9TNoLZeg= -github.com/yuin/goldmark v1.7.4/go.mod h1:uzxRWxtg69N339t3louHJ7+O03ezfj6PlliRlaOzY1E= github.com/yuin/goldmark v1.7.8 h1:iERMLn0/QJeHFhxSt3p6PeN9mGnvIKSpG9YYorDMnic= github.com/yuin/goldmark v1.7.8/go.mod h1:uzxRWxtg69N339t3louHJ7+O03ezfj6PlliRlaOzY1E= go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= @@ -351,12 +333,10 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= +golang.org/x/exp v0.0.0-20241009180824-f66d83c29e7c h1:7dEasQXItcW1xKJ2+gg5VOiBnqWrJc+rq0DPKyvvdbY= +golang.org/x/exp v0.0.0-20241009180824-f66d83c29e7c/go.mod h1:NQtJDoLvd6faHhE7m4T/1IY708gDefGGjR/iUW8yQQ8= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -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/image v0.19.0 h1:D9FX4QWkLfkeqaC62SonffIIuYdOk/UE2XKUBgRIBIQ= -golang.org/x/image v0.19.0/go.mod h1:y0zrRqlQRWQ5PXaYCOMLTW2fpsxZ8Qh9I/ohnInJEys= golang.org/x/image v0.21.0 h1:c5qV36ajHpdj4Qi0GnE0jUc/yuo33OLFaa0d+crTD5s= golang.org/x/image v0.21.0/go.mod h1:vUbsLavqK/W303ZroQQVKQ+Af3Yl6Uz1Ppu5J/cLz78= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -374,10 +354,6 @@ golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPI golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= golang.org/x/mobile v0.0.0-20211207041440-4e6c2922fdee/go.mod h1:pe2sM7Uk+2Su1y7u/6Z8KJ24D7lepUjFZbhFOrmDfuQ= -golang.org/x/mobile v0.0.0-20240716161057-1ad2df20a8b6 h1:/VlmIrkuLf2wzPjkZ8imSpckHoW7Y71h66dxbLHSpi8= -golang.org/x/mobile v0.0.0-20240716161057-1ad2df20a8b6/go.mod h1:TCsc78+c4cqb8IKEosz2LwJ6YRNkIjMuAYeHYjchGDE= -golang.org/x/mobile v0.0.0-20240806205939-81131f6468ab h1:KONOFF8Uy3b60HEzOsGnNghORNhY4ImyOx0PGm73K9k= -golang.org/x/mobile v0.0.0-20240806205939-81131f6468ab/go.mod h1:udWezQGYjqrCxz5nV321pXQTx5oGbZx+khZvFjZNOPM= golang.org/x/mobile v0.0.0-20241016134751-7ff83004ec2c h1:zuNS/LWsEpPTLfrmBkis6Xofw3nieAqB4hYLn8+uswk= golang.org/x/mobile v0.0.0-20241016134751-7ff83004ec2c/go.mod h1:snk1Mn2ZpdKCt90JPEsDh4sL3ReK520U2t0d7RHBnSU= golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= @@ -426,10 +402,6 @@ golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.27.0 h1:5K3Njcw06/l2y9vpGCSdcxWOYHOUk3dVNGDXN+FvAys= -golang.org/x/net v0.27.0/go.mod h1:dDi0PyhWNoiUOrAS8uXv/vnScO4wnHQO4mj9fn/RytE= -golang.org/x/net v0.28.0 h1:a9JDOJc5GMUJ0+UDqmLT86WiEy7iWyIhz8gz8E4e5hE= -golang.org/x/net v0.28.0/go.mod h1:yqtgsTWOOnlGLG9GFRrK3++bGOUEkNBoHZc8MEDWPNg= golang.org/x/net v0.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4= golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -500,10 +472,6 @@ golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -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/sys v0.24.0 h1:Twjiwq9dn6R1fQcyiK+wQyHWfaz/BJB+YIpzU/Cv3Xg= -golang.org/x/sys v0.24.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.26.0 h1:KHjCJyddX0LoSTb3J+vWpupP9p0oznkqVk/IfjymZbo= golang.org/x/sys v0.26.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= @@ -515,10 +483,6 @@ golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= -golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= -golang.org/x/text v0.17.0 h1:XtiM5bkSOt+ewxlOE/aE/AKEHibwj/6gvWMl9Rsh0Qc= -golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= golang.org/x/text v0.19.0 h1:kTxAhCbGbxhK0IwgSKiMO5awPoDQ0RpfiVYBfK860YM= golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -692,7 +656,6 @@ gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/internal/ui/selection.go b/internal/ui/selection.go index fc88b7f..b26d4c3 100644 --- a/internal/ui/selection.go +++ b/internal/ui/selection.go @@ -6,10 +6,10 @@ import ( "fyne.io/fyne/v2/layout" "fyne.io/fyne/v2/theme" "fyne.io/fyne/v2/widget" + kxwidget "github.com/ErikKalkoken/fyne-kx/widget" ttwidget "github.com/dweymouth/fyne-tooltip/widget" "github.com/ErikKalkoken/janice/internal/jsondocument" - "github.com/ErikKalkoken/janice/internal/widgets" ) // selection represents the selection frame in the UI. @@ -98,7 +98,7 @@ func (f *selectionFrame) set(uid string) { for i, n := range path { isLast := i == len(path)-1 if !isLast { - l := widgets.NewTappableLabel(n.Key, func() { + l := kxwidget.NewTappableLabel(n.Key, func() { f.ui.scrollTo(n.UID) f.ui.selectElement(n.UID) }) diff --git a/internal/ui/settings.go b/internal/ui/settings.go index b2f82f1..5ce61e6 100644 --- a/internal/ui/settings.go +++ b/internal/ui/settings.go @@ -1,13 +1,9 @@ package ui import ( - "errors" - "log/slog" - "strconv" - - "fyne.io/fyne/v2" "fyne.io/fyne/v2/dialog" "fyne.io/fyne/v2/widget" + kxwidget "github.com/ErikKalkoken/fyne-kx/widget" ) const ( @@ -30,18 +26,13 @@ const ( func (u *UI) showSettingsDialog() { // recent files - recentEntry := widget.NewEntry() - recentEntry.OnChanged = func(s string) { - x, err := strconv.Atoi(recentEntry.Text) - if err != nil { - slog.Error("Failed to convert", "err", err) - return - } - u.app.Preferences().SetInt(settingRecentFileCount, x) + recentEntry := kxwidget.NewSlider(3, 20, 1) + recentEntry.SetValue( + u.app.Preferences().IntWithFallback(settingRecentFileCount, settingRecentFileCountDefault), + ) + recentEntry.OnChangeEnded = func(v int) { + u.app.Preferences().SetInt(settingRecentFileCount, v) } - x := u.app.Preferences().IntWithFallback(settingRecentFileCount, settingRecentFileCountDefault) - recentEntry.SetText(strconv.Itoa(x)) - recentEntry.Validator = newPositiveNumberValidator() // apply file filter extFilter := widget.NewCheck("enabled", func(v bool) { @@ -74,18 +65,3 @@ func (u *UI) showSettingsDialog() { d := dialog.NewCustom("Settings", "Close", widget.NewForm(items...), u.window) d.Show() } - -// newPositiveNumberValidator ensures entry is a positive number (incl. zero). -func newPositiveNumberValidator() fyne.StringValidator { - myErr := errors.New("must be positive number") - return func(text string) error { - val, err := strconv.Atoi(text) - if err != nil { - return myErr - } - if val < 0 { - return myErr - } - return nil - } -} diff --git a/internal/widgets/tappablelabel.go b/internal/widgets/tappablelabel.go deleted file mode 100644 index 957d355..0000000 --- a/internal/widgets/tappablelabel.go +++ /dev/null @@ -1,56 +0,0 @@ -package widgets - -import ( - "fyne.io/fyne/v2" - "fyne.io/fyne/v2/driver/desktop" - "fyne.io/fyne/v2/widget" -) - -// TappableLabel is a Label that can be tapped. -type TappableLabel struct { - widget.Label - - // The function that is called when the label is tapped. - OnTapped func() - - hovered bool -} - -var _ fyne.Tappable = (*TappableLabel)(nil) -var _ desktop.Hoverable = (*TappableLabel)(nil) - -// NewTappableLabel returns a new TappableLabel instance. -func NewTappableLabel(text string, tapped func()) *TappableLabel { - l := &TappableLabel{OnTapped: tapped} - l.ExtendBaseWidget(l) - l.SetText(text) - return l -} - -func (l *TappableLabel) Tapped(_ *fyne.PointEvent) { - if l.OnTapped != nil { - l.OnTapped() - } -} - -// Cursor returns the cursor type of this widget -func (l *TappableLabel) Cursor() desktop.Cursor { - if l.hovered { - return desktop.PointerCursor - } - return desktop.DefaultCursor -} - -// MouseIn is a hook that is called if the mouse pointer enters the element. -func (l *TappableLabel) MouseIn(e *desktop.MouseEvent) { - l.hovered = true -} - -func (l *TappableLabel) MouseMoved(*desktop.MouseEvent) { - // needed to satisfy the interface only -} - -// MouseOut is a hook that is called if the mouse pointer leaves the element. -func (l *TappableLabel) MouseOut() { - l.hovered = false -} From 6fc61698de788333de35304352f771e22d57e9e5 Mon Sep 17 00:00:00 2001 From: ErikKalkoken Date: Thu, 17 Oct 2024 21:23:37 +0200 Subject: [PATCH 5/5] Move tree widget into UI package --- FyneApp.toml | 4 ++-- internal/{widgets => ui}/treenode.go | 4 ++-- internal/ui/ui.go | 5 ++--- main.go | 6 +++++- 4 files changed, 11 insertions(+), 8 deletions(-) rename internal/{widgets => ui}/treenode.go (91%) diff --git a/FyneApp.toml b/FyneApp.toml index a75b6f7..5239862 100644 --- a/FyneApp.toml +++ b/FyneApp.toml @@ -4,8 +4,8 @@ Website = "https://github.com/ErikKalkoken/janice" Icon = "icon.png" Name = "Janice" ID = "io.github.erikkalkoken.janice" - Version = "0.4.2" - Build = 2 + Version = "0.5.0" + Build = 1 [Release] BuildName = "janice" diff --git a/internal/widgets/treenode.go b/internal/ui/treenode.go similarity index 91% rename from internal/widgets/treenode.go rename to internal/ui/treenode.go index 4da1a5d..285bd3b 100644 --- a/internal/widgets/treenode.go +++ b/internal/ui/treenode.go @@ -1,4 +1,4 @@ -package widgets +package ui import ( "fmt" @@ -16,7 +16,7 @@ type TreeNode struct { value *widget.Label } -// NewTreeNode returns a new TreeNode instance. +// NewTreeNode returns a new instance of the [TreeNode] widget. func NewTreeNode() *TreeNode { n := &TreeNode{ key: widget.NewLabel(""), diff --git a/internal/ui/ui.go b/internal/ui/ui.go index bd5cbe5..b1ef9e9 100644 --- a/internal/ui/ui.go +++ b/internal/ui/ui.go @@ -21,7 +21,6 @@ import ( "golang.org/x/text/message" "github.com/ErikKalkoken/janice/internal/jsondocument" - "github.com/ErikKalkoken/janice/internal/widgets" ) // preference keys @@ -125,11 +124,11 @@ func (u *UI) makeTree() *widget.Tree { return u.document.IsBranch(id) }, func(branch bool) fyne.CanvasObject { - return widgets.NewTreeNode() + return NewTreeNode() }, func(uid widget.TreeNodeID, branch bool, co fyne.CanvasObject) { node := u.document.Value(uid) - obj := co.(*widgets.TreeNode) + obj := co.(*TreeNode) var text string switch v := node.Value; node.Type { case jsondocument.Array: diff --git a/main.go b/main.go index b94f6ca..e21c9c7 100644 --- a/main.go +++ b/main.go @@ -11,6 +11,10 @@ import ( "github.com/ErikKalkoken/janice/internal/ui" ) +const ( + appID = "io.github.erikkalkoken.janice" +) + type logLevelFlag struct { value slog.Level } @@ -42,7 +46,7 @@ func main() { flag.Parse() log.SetFlags(log.LstdFlags | log.Llongfile) slog.SetLogLoggerLevel(levelFlag.value) - a := app.NewWithID("io.github.erikkalkoken.janice") + a := app.NewWithID(appID) if *versionFlag { fmt.Printf("Current version is: %s", a.Metadata().Version) return