From ba77ee1a32f1c576d1b6e539f988f3ad7c841f28 Mon Sep 17 00:00:00 2001 From: Christopher Davis Date: Mon, 12 Dec 2022 11:25:12 -0500 Subject: [PATCH] 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. --- Cargo.lock | 404 ++++++++++++++++++++++++++++---------------------- Cargo.toml | 8 +- src/window.rs | 37 ++--- 3 files changed, 242 insertions(+), 207 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ca9757ef..e1766327 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -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", @@ -208,18 +208,27 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" +[[package]] +name = "block-buffer" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cce20737498f97b993470a6e536b8523f0af7892a4f928cceb1ac5e52ebe7e" +dependencies = [ + "generic-array", +] + [[package]] name = "blocking" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6ccb65d468978a086b69884437ded69a90faab3bbe6e67f242173ea728acccc" +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", diff --git a/Cargo.toml b/Cargo.toml index 94b4ac80..d6250be3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -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" diff --git a/src/window.rs b/src/window.rs index 453264f6..416a1ded 100644 --- a/src/window.rs +++ b/src/window.rs @@ -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) { -- GitLab