window: Use new async FileDialog API

GTK 4.10 deprecates the old GtkFileChooser* APIs in favor of a
new GtkFileDialog utility. This new utility uses async functions
instead of a `response` signal, so we can make use of Rust's
async/await patterns.
This commit is contained in:
Christopher Davis 2022-12-12 11:25:12 -05:00 • committed by Sophie Herold
parent 01bebfef38
commit ba77ee1a32
3 changed files with 243 additions and 208 deletions

406
Cargo.lock generated
View file

@ -4,9 +4,9 @@ version = 3
[[package]]
name = "aho-corasick"
version = "0.7.19"
version = "0.7.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b4f55bd91a0978cbfd91c457a164bab8b4001c833b7f323132c0a4e1922dd44e"
checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac"
dependencies = [
"memchr",
]
@ -51,9 +51,9 @@ dependencies = [
[[package]]
name = "async-channel"
version = "1.7.1"
version = "1.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e14485364214912d3b19cc3435dde4df66065127f05fa0d75c712f36f12c2f28"
checksum = "cf46fee83e5ccffc220104713af3292ff9bc7c64c7de289f66dae8e38d826833"
dependencies = [
"concurrent-queue",
"event-listener",
@ -62,15 +62,15 @@ dependencies = [
[[package]]
name = "async-executor"
version = "1.4.1"
version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "871f9bb5e0a22eeb7e8cf16641feb87c9dc67032ccf8ff49e772eb9941d3a965"
checksum = "17adb73da160dfb475c183343c8cccd80721ea5a605d3eb57125f0a7b7a92d0b"
dependencies = [
"async-lock",
"async-task",
"concurrent-queue",
"fastrand",
"futures-lite",
"once_cell",
"slab",
]
@ -91,9 +91,9 @@ dependencies = [
[[package]]
name = "async-io"
version = "1.10.0"
version = "1.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e8121296a9f05be7f34aa4196b1747243b3b62e048bb7906f644f3fbfc490cf7"
checksum = "8c374dda1ed3e7d8f0d9ba58715f924862c63eae6849c92d3a18e7fbde9e2794"
dependencies = [
"async-lock",
"autocfg",
@ -106,7 +106,7 @@ dependencies = [
"slab",
"socket2",
"waker-fn",
"winapi",
"windows-sys",
]
[[package]]
@ -121,9 +121,9 @@ dependencies = [
[[package]]
name = "async-recursion"
version = "0.3.2"
version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d7d78656ba01f1b93024b7c3a0467f1608e4be67d725749fdcd7d2c7678fd7a2"
checksum = "2cda8f4bcc10624c4e85bc66b3f452cca98cfa5ca002dc83a16aad2367641bea"
dependencies = [
"proc-macro2",
"quote",
@ -164,9 +164,9 @@ checksum = "7a40729d2133846d9ed0ea60a8b9541bccddab49cd30f0715a1da672fe9a2524"
[[package]]
name = "async-trait"
version = "0.1.58"
version = "0.1.59"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1e805d94e6b5001b651426cf4cd446b1ab5f319d27bab5c644f61de0a804360c"
checksum = "31e6e93155431f3931513b243d371981bb2770112b370c82745a1d19d2f99364"
dependencies = [
"proc-macro2",
"quote",
@ -209,17 +209,26 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a"
[[package]]
name = "blocking"
version = "1.2.0"
name = "block-buffer"
version = "0.10.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c6ccb65d468978a086b69884437ded69a90faab3bbe6e67f242173ea728acccc"
checksum = "69cce20737498f97b993470a6e536b8523f0af7892a4f928cceb1ac5e52ebe7e"
dependencies = [
"generic-array",
]
[[package]]
name = "blocking"
version = "1.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3c67b173a56acffd6d2326fb7ab938ba0b00a71480e14902b2591c87bc5741e8"
dependencies = [
"async-channel",
"async-lock",
"async-task",
"atomic-waker",
"fastrand",
"futures-lite",
"once_cell",
]
[[package]]
@ -234,21 +243,15 @@ version = "1.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
[[package]]
name = "cache-padded"
version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c1db59621ec70f09c5e9b597b220c7a2b43611f4710dc03ceb8748637775692c"
[[package]]
name = "cairo-rs"
version = "0.16.1"
version = "0.16.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "08f9ee4a4ca9239c9a839453dce04b7ddee2f859ec4cd7acd1f5703b68db549c"
checksum = "247e1183fa769ac22121f92276dae52f89acaf297f24b1320019f439b6e3b46f"
dependencies = [
"bitflags",
"cairo-sys-rs",
"glib 0.16.2",
"glib 0.16.6",
"libc",
"once_cell",
"thiserror",
@ -256,20 +259,20 @@ dependencies = [
[[package]]
name = "cairo-sys-rs"
version = "0.16.0"
version = "0.16.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5119ea655ec777b523f0b57279e70f8a4542f61b0e98a48f892b4ef043fd4c5d"
checksum = "7c48f4af05fabdcfa9658178e1326efa061853f040ce7d72e33af6885196f421"
dependencies = [
"glib-sys 0.16.0",
"glib-sys 0.16.3",
"libc",
"system-deps",
]
[[package]]
name = "cc"
version = "1.0.74"
version = "1.0.77"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "581f5dba903aac52ea3feb5ec4810848460ee833876f1f9b0fdeab1f19091574"
checksum = "e9f73505338f7d905b19d18738976aae232eb46b8efc15554ffc56deb5d9ebe4"
[[package]]
name = "cfg-expr"
@ -288,22 +291,41 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
[[package]]
name = "concurrent-queue"
version = "1.2.4"
version = "2.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "af4780a44ab5696ea9e28294517f1fffb421a83a25af521333c838635509db9c"
checksum = "bd7bef69dc86e3c610e4e7aed41035e2a7ed12e72dd7530f61327a6579a4390b"
dependencies = [
"cache-padded",
"crossbeam-utils",
]
[[package]]
name = "cpufeatures"
version = "0.2.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "28d997bd5e24a5928dd43e46dc529867e207907fe0b239c3477d924f7f2ca320"
dependencies = [
"libc",
]
[[package]]
name = "crossbeam-utils"
version = "0.8.12"
version = "0.8.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "edbafec5fa1f196ca66527c1b12c2ec4745ca14b50f1ad8f9f6f720b55d11fac"
checksum = "4fb766fa798726286dbbb842f174001dab8abc7b627a1dd86e0b7222a95d929f"
dependencies = [
"cfg-if",
]
[[package]]
name = "crypto-common"
version = "0.1.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3"
dependencies = [
"generic-array",
"typenum",
]
[[package]]
name = "ctor"
version = "0.1.26"
@ -325,6 +347,16 @@ dependencies = [
"syn",
]
[[package]]
name = "digest"
version = "0.10.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8168378f4e5023e7218c89c891c0fd8ecdb5e5e4f18cb78f38cf245dd021e76f"
dependencies = [
"block-buffer",
"crypto-common",
]
[[package]]
name = "dirs"
version = "4.0.0"
@ -525,57 +557,57 @@ dependencies = [
[[package]]
name = "gdk-pixbuf"
version = "0.16.0"
version = "0.16.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c0fb526c8c3a075eda15f961820edf3e15fe18576ac4fbabbb324e4cc6c421e6"
checksum = "d3094f2b8578136d1929cade4e0fff82f573521b579e96cfc24af2458431f176"
dependencies = [
"bitflags",
"gdk-pixbuf-sys",
"gio 0.16.2",
"glib 0.16.2",
"gio 0.16.6",
"glib 0.16.6",
"libc",
]
[[package]]
name = "gdk-pixbuf-sys"
version = "0.16.0"
version = "0.16.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7df12d15c10c3c5a84d9fb4ba0e27659f6a2bdee4f27f8b17126da15d5ddd3f2"
checksum = "3092cf797a5f1210479ea38070d9ae8a5b8e9f8f1be9f32f4643c529c7d70016"
dependencies = [
"gio-sys 0.16.0",
"glib-sys 0.16.0",
"gobject-sys 0.16.0",
"gio-sys 0.16.3",
"glib-sys 0.16.3",
"gobject-sys 0.16.3",
"libc",
"system-deps",
]
[[package]]
name = "gdk4"
version = "0.5.0"
version = "0.5.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "66fe07f362c977c4684d1136a29f097208b3ccb2013ab6f441a3c60a046fd358"
checksum = "272db1bbb9b152ea1fea946f9d464085c86cfe14cafba450d7defa433caff8ec"
dependencies = [
"bitflags",
"cairo-rs",
"gdk-pixbuf",
"gdk4-sys",
"gio 0.16.2",
"glib 0.16.2",
"gio 0.16.6",
"glib 0.16.6",
"libc",
"pango",
]
[[package]]
name = "gdk4-sys"
version = "0.5.0"
version = "0.5.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ddcf9e3ab5f237bb641e7f2fccc4b26d5b86f111f0d62e27d452dc24964541c2"
checksum = "45b571f36b889ab529b2e173248dafe83d75c703f5685b9845e490c7994ae309"
dependencies = [
"cairo-sys-rs",
"gdk-pixbuf-sys",
"gio-sys 0.16.0",
"glib-sys 0.16.0",
"gobject-sys 0.16.0",
"gio-sys 0.16.3",
"glib-sys 0.16.3",
"gobject-sys 0.16.3",
"libc",
"pango-sys",
"pkg-config",
@ -584,53 +616,63 @@ dependencies = [
[[package]]
name = "gdk4-wayland"
version = "0.5.0"
version = "0.5.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ca5c2a5b1a115ed6288679b984a1d67fbab57c930b6e75adeff5e15123c28fb7"
checksum = "dee24d5a659ecca2170642c0db211446e7fdbc7ebcf1e63be99405df6f541c15"
dependencies = [
"gdk4",
"gdk4-wayland-sys",
"gio 0.16.2",
"glib 0.16.2",
"gio 0.16.6",
"glib 0.16.6",
"libc",
]
[[package]]
name = "gdk4-wayland-sys"
version = "0.5.0"
version = "0.5.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b809ee567e47b75efdd3591f46ee9bc3b458aeba6e0eee9c3af219bb167cc557"
checksum = "dbb03e044a5f6ae9270823a8ef89739808845120d47b2be83de785e044c83386"
dependencies = [
"glib-sys 0.16.0",
"glib-sys 0.16.3",
"libc",
"system-deps",
]
[[package]]
name = "gdk4-x11"
version = "0.5.0"
version = "0.5.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7d1355a25b44d5c1b4b416ed4b9fdcf0c0791d4c276c22d68e3d844c2efba46b"
checksum = "d739e89b1be52f2216a6fe81a8ed7225c882b7c4f67a44c13506cc028ec48e62"
dependencies = [
"gdk4",
"gdk4-x11-sys",
"gio 0.16.2",
"glib 0.16.2",
"gio 0.16.6",
"glib 0.16.6",
"libc",
]
[[package]]
name = "gdk4-x11-sys"
version = "0.5.0"
version = "0.5.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1e4e558577b6971d9121b6e881c22cff9256a4eb32af2c31fd2c5bae3094dbb7"
checksum = "c5493c6af80cdc84b284714b3313af45788a8f1afd34b020f915f6e7cd65f502"
dependencies = [
"gdk4-sys",
"glib-sys 0.16.0",
"glib-sys 0.16.3",
"libc",
"system-deps",
]
[[package]]
name = "generic-array"
version = "0.14.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bff49e947297f3312447abdca79f45f4738097cc82b06e72054d2223f601f1b9"
dependencies = [
"typenum",
"version_check",
]
[[package]]
name = "getrandom"
version = "0.2.8"
@ -681,17 +723,17 @@ dependencies = [
[[package]]
name = "gio"
version = "0.16.2"
version = "0.16.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "33c1debf8d0315d69be0153aa76249db3c858ef69b7778ad3cc669e6d370c485"
checksum = "e8fac6c15256cdf84beb9a4948f786f9605799ad69675ea1b8932753f3aa94cf"
dependencies = [
"bitflags",
"futures-channel",
"futures-core",
"futures-io",
"futures-util",
"gio-sys 0.16.0",
"glib 0.16.2",
"gio-sys 0.16.3",
"glib 0.16.6",
"libc",
"once_cell",
"pin-project-lite",
@ -714,12 +756,12 @@ dependencies = [
[[package]]
name = "gio-sys"
version = "0.16.0"
version = "0.16.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6da1bba9d3f2ab13a6e9932c40f240dc99ebc9f0bdc35cfb130d1a3df36f374c"
checksum = "e9b693b8e39d042a95547fc258a7b07349b1f0b48f4b2fa3108ba3c51c0b5229"
dependencies = [
"glib-sys 0.16.0",
"gobject-sys 0.16.0",
"glib-sys 0.16.3",
"gobject-sys 0.16.3",
"libc",
"system-deps",
"winapi",
@ -747,9 +789,9 @@ dependencies = [
[[package]]
name = "glib"
version = "0.16.2"
version = "0.16.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d5abffa711471e015eb93d65d6ea20e7e9f6f7951fc0a1042280439319b2de06"
checksum = "89359c8c338310b46300502814fc5a0350bb731ddfea03d0ec725d32163244b7"
dependencies = [
"bitflags",
"futures-channel",
@ -757,10 +799,10 @@ dependencies = [
"futures-executor",
"futures-task",
"futures-util",
"gio-sys 0.16.0",
"glib-macros 0.16.0",
"glib-sys 0.16.0",
"gobject-sys 0.16.0",
"gio-sys 0.16.3",
"glib-macros 0.16.3",
"glib-sys 0.16.3",
"gobject-sys 0.16.3",
"libc",
"once_cell",
"smallvec",
@ -784,9 +826,9 @@ dependencies = [
[[package]]
name = "glib-macros"
version = "0.16.0"
version = "0.16.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e195c1311fa6b04d7b896ea39385f6bd60ef5d25bf74a7c11c8c3f94f6c1a572"
checksum = "e084807350b01348b6d9dbabb724d1a0bb987f47a2c85de200e98e12e30733bf"
dependencies = [
"anyhow",
"heck",
@ -809,9 +851,9 @@ dependencies = [
[[package]]
name = "glib-sys"
version = "0.16.0"
version = "0.16.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b33357bb421a77bd849f6a0bfcaf3b4b256a2577802971bb5dd522d530f27021"
checksum = "c61a4f46316d06bfa33a7ac22df6f0524c8be58e3db2d9ca99ccb1f357b62a65"
dependencies = [
"libc",
"system-deps",
@ -819,9 +861,9 @@ dependencies = [
[[package]]
name = "gloo-timers"
version = "0.2.4"
version = "0.2.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5fb7d06c1c8cc2a29bee7ec961009a0b2caa0793ee4900c2ffb348734ba1c8f9"
checksum = "98c4a8d6391675c6b2ee1a6c8d06e8e2d03605c44cec1270675985a4c2a5500b"
dependencies = [
"futures-channel",
"futures-core",
@ -842,33 +884,33 @@ dependencies = [
[[package]]
name = "gobject-sys"
version = "0.16.0"
version = "0.16.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "63ca11a57400f3d4fda594e002844be47900c9fb8b29e2155c6e37a1f24e51b3"
checksum = "3520bb9c07ae2a12c7f2fbb24d4efc11231c8146a86956413fb1a79bb760a0f1"
dependencies = [
"glib-sys 0.16.0",
"glib-sys 0.16.3",
"libc",
"system-deps",
]
[[package]]
name = "graphene-rs"
version = "0.16.0"
version = "0.16.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "95a8de4506a64776d90fedf9c28fdca5a7127f8cc9c78976e8184ac6f42685d8"
checksum = "95ecb4d347e6d09820df3bdfd89a74a8eec07753a06bb92a3aac3ad31d04447b"
dependencies = [
"glib 0.16.2",
"glib 0.16.6",
"graphene-sys",
"libc",
]
[[package]]
name = "graphene-sys"
version = "0.16.0"
version = "0.16.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f2c952f764f02f8546fcc5d014bc78aa704c6d453c828c8b429121f704349163"
checksum = "b9aa82337d3972b4eafdea71e607c23f47be6f27f749aab613f1ad8ddbe6dcd6"
dependencies = [
"glib-sys 0.16.0",
"glib-sys 0.16.3",
"libc",
"pkg-config",
"system-deps",
@ -876,14 +918,14 @@ dependencies = [
[[package]]
name = "gsk4"
version = "0.5.0"
version = "0.5.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d4fc2b86c751a7fe9aad0fdba85937a6aace3a8453e0e2a08d2a31ce4bb8ae55"
checksum = "4053293b79099bdfecd9ab0d811d118a0eafce613dfe0b26075419d955f1f652"
dependencies = [
"bitflags",
"cairo-rs",
"gdk4",
"glib 0.16.2",
"glib 0.16.6",
"graphene-rs",
"gsk4-sys",
"libc",
@ -892,14 +934,14 @@ dependencies = [
[[package]]
name = "gsk4-sys"
version = "0.5.0"
version = "0.5.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2cb53e25cbbe3fa8e3e9db7c06d65085086fadbec4cd0aa567b2e2a4917db83d"
checksum = "08e0642edffdb35028d7d67b830678da98844216b6442e11eee52c91ad2a6dc2"
dependencies = [
"cairo-sys-rs",
"gdk4-sys",
"glib-sys 0.16.0",
"gobject-sys 0.16.0",
"glib-sys 0.16.3",
"gobject-sys 0.16.3",
"graphene-sys",
"libc",
"pango-sys",
@ -914,9 +956,9 @@ checksum = "da5bf7748fd4cd0b2490df8debcc911809dbcbee4ece9531b96c29a9c729de5a"
[[package]]
name = "gtk4"
version = "0.5.1"
version = "0.5.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "47223ddb27033731b71ea841d1b878bd87a275a865f1df60b41505f9e4933d64"
checksum = "8954da3659ff1cb35aa95110021b33fadcd8e306e8fe41f32146ffa009665a79"
dependencies = [
"bitflags",
"cairo-rs",
@ -924,8 +966,8 @@ dependencies = [
"futures-channel",
"gdk-pixbuf",
"gdk4",
"gio 0.16.2",
"glib 0.16.2",
"gio 0.16.6",
"glib 0.16.6",
"graphene-rs",
"gsk4",
"gtk4-macros",
@ -937,9 +979,9 @@ dependencies = [
[[package]]
name = "gtk4-macros"
version = "0.5.0"
version = "0.5.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ce5eb86364b216ee8c497b1121831168fb25130d3378495a135f8e5c1972db7b"
checksum = "58138cd3c595e04f82df050390aa7d2bd093795ce569e5f1d49eb496ef67fe7b"
dependencies = [
"anyhow",
"proc-macro-crate",
@ -951,16 +993,16 @@ dependencies = [
[[package]]
name = "gtk4-sys"
version = "0.5.0"
version = "0.5.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0f04bd0b63d999a36ae53a916ee4b20ea64a3ef4732ca8a98b1fde4a22c1476c"
checksum = "ef29e09e055b2f2550eb1882caa6961a1ae3c971a70bcb25cb9d5ab6cbd63821"
dependencies = [
"cairo-sys-rs",
"gdk-pixbuf-sys",
"gdk4-sys",
"gio-sys 0.16.0",
"glib-sys 0.16.0",
"gobject-sys 0.16.0",
"gio-sys 0.16.3",
"glib-sys 0.16.3",
"gobject-sys 0.16.3",
"graphene-sys",
"gsk4-sys",
"libc",
@ -1065,16 +1107,16 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
[[package]]
name = "libadwaita"
version = "0.2.0"
version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ed92f031cf7f3d501b84f41e4d05aed6ebfd8eed59a8fc0cccbf51359e92c8e3"
checksum = "9dfa0722d4f1724f661cbf668c273c5926296ca411ed3814e206f8fd082b6c48"
dependencies = [
"bitflags",
"futures-channel",
"gdk-pixbuf",
"gdk4",
"gio 0.16.2",
"glib 0.16.2",
"gio 0.16.6",
"glib 0.16.6",
"gtk4",
"libadwaita-sys",
"libc",
@ -1084,14 +1126,14 @@ dependencies = [
[[package]]
name = "libadwaita-sys"
version = "0.2.0"
version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9ec4243e86fb53d06df2461d543529a640c9a0fba2d4cc850b70e11a85f9d952"
checksum = "de902982372b454a0081d7fd9dd567b37b73ae29c8f6da1820374d345fd95d5b"
dependencies = [
"gdk4-sys",
"gio-sys 0.16.0",
"glib-sys 0.16.0",
"gobject-sys 0.16.0",
"gio-sys 0.16.3",
"glib-sys 0.16.3",
"gobject-sys 0.16.3",
"gtk4-sys",
"libc",
"pango-sys",
@ -1100,9 +1142,9 @@ dependencies = [
[[package]]
name = "libc"
version = "0.2.137"
version = "0.2.138"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fc7fcc620a3bff7cdd7a365be3376c97191aeaccc2a603e600951e452615bf89"
checksum = "db6d7e329c562c5dfab7a46a2afabc8b987ab9a4834c9d1ca04dc54c1546cef8"
[[package]]
name = "libgweather"
@ -1161,7 +1203,7 @@ dependencies = [
"futures",
"futures-channel",
"gettext-rs",
"gio 0.16.2",
"gio 0.16.6",
"gtk-macros",
"gtk4",
"kamadak-exif",
@ -1206,14 +1248,16 @@ checksum = "16cf681a23b4d0a43fc35024c176437f9dcd818db34e0f42ab456a0ee5ad497b"
[[package]]
name = "nix"
version = "0.24.2"
version = "0.25.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "195cdbc1741b8134346d515b3a56a1c94b0912758009cfd53f99ea0f57b065fc"
checksum = "f346ff70e7dbfd675fe90590b92d59ef2de15a8779ae305ebcbfd3f0caf59be4"
dependencies = [
"autocfg",
"bitflags",
"cfg-if",
"libc",
"memoffset",
"pin-utils",
]
[[package]]
@ -1253,9 +1297,9 @@ checksum = "86f0b0d4bf799edbc74508c1e8bf170ff5f41238e5f8225603ca7caaae2b7860"
[[package]]
name = "ordered-stream"
version = "0.0.1"
version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "44630c059eacfd6e08bdaa51b1db2ce33119caa4ddc1235e923109aa5f25ccb1"
checksum = "01ca8c99d73c6e92ac1358f9f692c22c0bfd9c4701fa086f5d365c0d4ea818ea"
dependencies = [
"futures-core",
"pin-project-lite",
@ -1263,13 +1307,13 @@ dependencies = [
[[package]]
name = "pango"
version = "0.16.0"
version = "0.16.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7208c60f224cf6e44c551df5ee2ef38f9da0fd29d7c5a0402000b8ab0520e798"
checksum = "cdff66b271861037b89d028656184059e03b0b6ccb36003820be19f7200b1e94"
dependencies = [
"bitflags",
"gio 0.16.2",
"glib 0.16.2",
"gio 0.16.6",
"glib 0.16.6",
"libc",
"once_cell",
"pango-sys",
@ -1277,12 +1321,12 @@ dependencies = [
[[package]]
name = "pango-sys"
version = "0.16.0"
version = "0.16.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "922441c228366ed98d3534b87bc7c987c50564094c3abbc3513717786419252d"
checksum = "9e134909a9a293e04d2cc31928aa95679c5e4df954d0b85483159bd20d8f047f"
dependencies = [
"glib-sys 0.16.0",
"gobject-sys 0.16.0",
"glib-sys 0.16.3",
"gobject-sys 0.16.3",
"libc",
"system-deps",
]
@ -1305,9 +1349,9 @@ dependencies = [
[[package]]
name = "parking_lot_core"
version = "0.9.4"
version = "0.9.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4dc9e0dc2adc1c69d09143aff38d3d30c5c3f0df0dad82e6d25547af174ebec0"
checksum = "7ff9f3fef3968a3ec5945535ed654cb38ff72d7495a25619e2247fb15a2ed9ba"
dependencies = [
"cfg-if",
"libc",
@ -1324,9 +1368,9 @@ checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e"
[[package]]
name = "pest"
version = "2.4.0"
version = "2.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dbc7bc69c062e492337d74d59b120c274fd3d261b6bf6d3207d499b4b379c41a"
checksum = "cc8bed3549e0f9b0a2a78bf7c0018237a2cdf085eecbbc048e52612438e4e9d0"
dependencies = [
"thiserror",
"ucd-trie",
@ -1352,23 +1396,23 @@ checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160"
[[package]]
name = "polling"
version = "2.4.0"
version = "2.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ab4609a838d88b73d8238967b60dd115cc08d38e2bbaf51ee1e4b695f89122e2"
checksum = "166ca89eb77fd403230b9c156612965a81e094ec6ec3aa13663d4c8b113fa748"
dependencies = [
"autocfg",
"cfg-if",
"libc",
"log",
"wepoll-ffi",
"winapi",
"windows-sys",
]
[[package]]
name = "ppv-lite86"
version = "0.2.16"
version = "0.2.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872"
checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
[[package]]
name = "pretty_env_logger"
@ -1491,9 +1535,9 @@ dependencies = [
[[package]]
name = "regex"
version = "1.6.0"
version = "1.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4c4eb3267174b8c6c2f654116623910a0fef09c4753f8dd83db29c48a0df988b"
checksum = "e076559ef8e241f2ae3479e36f97bd5741c0330689e217ad51ce2c76808b868a"
dependencies = [
"aho-corasick",
"memchr",
@ -1502,9 +1546,9 @@ dependencies = [
[[package]]
name = "regex-syntax"
version = "0.6.27"
version = "0.6.28"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a3f87b73ce11b1619a3c6332f45341e0047173771e8b8b73f87bfeefb7b56244"
checksum = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848"
[[package]]
name = "remove_dir_all"
@ -1559,18 +1603,18 @@ dependencies = [
[[package]]
name = "serde"
version = "1.0.147"
version = "1.0.150"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d193d69bae983fc11a79df82342761dfbf28a99fc8d203dca4c3c1b590948965"
checksum = "e326c9ec8042f1b5da33252c8a37e9ffbd2c9bef0155215b6e6c80c790e05f91"
dependencies = [
"serde_derive",
]
[[package]]
name = "serde_derive"
version = "1.0.147"
version = "1.0.150"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4f1d362ca8fc9c3e3a7484440752472d68a6caa98f1ab81d99b5dfe517cec852"
checksum = "42a3df25b0713732468deadad63ab9da1f1fd75a48a15024b50363f128db627e"
dependencies = [
"proc-macro2",
"quote",
@ -1590,19 +1634,15 @@ dependencies = [
[[package]]
name = "sha1"
version = "0.6.1"
version = "0.10.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c1da05c97445caa12d05e848c4a4fcbbea29e748ac28f7e80e9b010392063770"
checksum = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3"
dependencies = [
"sha1_smol",
"cfg-if",
"cpufeatures",
"digest",
]
[[package]]
name = "sha1_smol"
version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ae1a47186c03a32177042e55dbc5fd5aee900b8e0069a8d70fba96a9375cd012"
[[package]]
name = "slab"
version = "0.4.7"
@ -1648,9 +1688,9 @@ dependencies = [
[[package]]
name = "syn"
version = "1.0.103"
version = "1.0.105"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a864042229133ada95abf3b54fdc62ef5ccabe9515b64717bcb9a1919e59445d"
checksum = "60b9b43d45702de4c839cb9b51d9f529c5dd26a4aff255b42b1ebc03e88ee908"
dependencies = [
"proc-macro2",
"quote",
@ -1775,6 +1815,12 @@ dependencies = [
"once_cell",
]
[[package]]
name = "typenum"
version = "1.16.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba"
[[package]]
name = "ucd-trie"
version = "0.1.5"
@ -1836,9 +1882,9 @@ dependencies = [
[[package]]
name = "version-compare"
version = "0.1.0"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fe88247b92c1df6b6de80ddc290f3976dbdf2f5f5d3fd049a9fb598c6dd5ca73"
checksum = "579a42fc0b8e0c63b76519a339be31bed574929511fa53c1a3acae26eb258f29"
[[package]]
name = "version_check"
@ -2039,9 +2085,9 @@ checksum = "4d25c75bf9ea12c4040a97f829154768bbbce366287e2dc044af160cd79a13fd"
[[package]]
name = "zbus"
version = "3.3.0"
version = "3.6.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "41ce2de393c874ba871292e881bf3c13a0d5eb38170ebab2e50b4c410eaa222b"
checksum = "938ea6da98c75c2c37a86007bd17fd8e208cbec24e086108c87ece98e9edec0d"
dependencies = [
"async-broadcast",
"async-channel",
@ -2078,9 +2124,9 @@ dependencies = [
[[package]]
name = "zbus_macros"
version = "3.3.0"
version = "3.6.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a13d08f5dc6cf725b693cb6ceacd43cd430ec0664a879188f29e7d7dcd98f96d"
checksum = "45066039ebf3330820e495e854f8b312abb68f0a39e97972d092bd72e8bb3e8e"
dependencies = [
"proc-macro-crate",
"proc-macro2",
@ -2091,9 +2137,9 @@ dependencies = [
[[package]]
name = "zbus_names"
version = "2.2.0"
version = "2.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "41a408fd8a352695690f53906dc7fd036be924ec51ea5e05666ff42685ed0af5"
checksum = "6c737644108627748a660d038974160e0cbb62605536091bdfa28fd7f64d43c8"
dependencies = [
"serde",
"static_assertions",
@ -2102,9 +2148,9 @@ dependencies = [
[[package]]
name = "zvariant"
version = "3.7.1"
version = "3.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b794fb7f59af4105697b0449ba31731ee5dbb3e773a17dbdf3d36206ea1b1644"
checksum = "56f8c89c183461e11867ded456db252eae90874bc6769b7adbea464caa777e51"
dependencies = [
"byteorder",
"enumflags2",
@ -2117,9 +2163,9 @@ dependencies = [
[[package]]
name = "zvariant_derive"
version = "3.7.1"
version = "3.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dd58d4b6c8e26d3dd2149c8c40c6613ef6451b9885ff1296d1ac86c388351a54"
checksum = "155247a5d1ab55e335421c104ccd95d64f17cebbd02f50cdbc1c33385f9c4d81"
dependencies = [
"proc-macro-crate",
"proc-macro2",

View file

@ -25,13 +25,13 @@ features = ["gtk4"]
[dependencies.gtk]
package = "gtk4"
version = "0.5.1"
features = ["v4_8"]
version = "0.5.4"
features = ["v4_10"]
[dependencies.gio]
package = "gio"
version = "0.16.2"
features = ["v2_70"]
version = "0.16.3"
features = ["v2_74"]
[dependencies.adw]
package = "libadwaita"

View file

@ -127,8 +127,8 @@ mod imp {
.set_active(!win.imp().properties_button.is_active());
});
klass.install_action("win.open", None, move |win, _, _| {
win.pick_file();
klass.install_action_async("win.open", None, |win, _, _| async move {
win.pick_file().await;
});
klass.install_action("win.open-with", None, move |win, _, _| {
@ -330,34 +330,23 @@ impl LpWindow {
}
}
fn pick_file(&self) {
let chooser = gtk::FileChooserNative::new(
Some("Open Image"),
Some(self),
gtk::FileChooserAction::Open,
None,
None,
);
chooser.set_modal(true);
chooser.set_transient_for(Some(self));
async fn pick_file(&self) {
let filter_store = gio::ListStore::new(gtk::FileFilter::static_type());
let filter = gtk::FileFilter::new();
filter.set_property("name", &String::from("Supported image files"));
filter.add_mime_type("image/*");
chooser.add_filter(&filter);
filter_store.append(&filter);
chooser.connect_response(
clone!(@weak self as win, @strong chooser => move |_, resp| {
if resp == gtk::ResponseType::Accept {
if let Some(file) = chooser.file() {
win.set_image_from_file(&file, true);
}
}
}),
);
let chooser = gtk::FileDialog::builder()
.title(&i18n("Open Image"))
.filters(&filter_store)
.modal(true)
.build();
chooser.show();
if let Ok(Some(file)) = chooser.open_future(Some(self), gio::File::NONE).await {
self.set_image_from_file(&file, true);
}
}
fn open_with(&self) {