diff --git a/Cargo.lock b/Cargo.lock index 5c3bfcb..81c36a9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -20,65 +20,71 @@ checksum = "c71b1793ee61086797f5c80b6efa2b8ffa6d5dd703f118545808a7f2e27f7046" [[package]] name = "accesskit" -version = "0.11.0" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02c98a5d094590335462354da402d754fe2cb78f0e6ce5024611c28ed539c1de" +checksum = "6cb10ed32c63247e4e39a8f42e8e30fb9442fbf7878c8e4a9849e7e381619bea" +dependencies = [ + "enumn", + "serde", +] [[package]] name = "accesskit_consumer" -version = "0.15.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca541e0fdb600916d196a940228df99b86d804fd2e6ef13894d7814f2799db43" +checksum = "8c17cca53c09fbd7288667b22a201274b9becaa27f0b91bf52a526db95de45e6" dependencies = [ "accesskit", ] [[package]] name = "accesskit_macos" -version = "0.7.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfea17e5bb5dcbfcf5b256ab2f5889a3e6f6582de78b9db9b6689adad3b002f3" +checksum = "cd3b6ae1eabbfbced10e840fd3fce8a93ae84f174b3e4ba892ab7bcb42e477a7" dependencies = [ "accesskit", "accesskit_consumer", - "objc2", + "objc2 0.3.0-beta.3", "once_cell", ] [[package]] name = "accesskit_unix" -version = "0.5.0" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4d1517421278cc8e67422d0786a18cf4291093ebe49eadf1cf989ff80e57f90" +checksum = "09f46c18d99ba61ad7123dd13eeb0c104436ab6af1df6a1cd8c11054ed394a08" dependencies = [ "accesskit", "accesskit_consumer", "async-channel", + "async-once-cell", "atspi", - "futures-lite", + "futures-lite 1.13.0", + "once_cell", "serde", "zbus", ] [[package]] name = "accesskit_windows" -version = "0.14.0" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e11c7f177739f23bd19bb856e4a64fdd96eb8638ec0a6a6dde9a7019a9e91c53" +checksum = "afcae27ec0974fc7c3b0b318783be89fd1b2e66dd702179fe600166a38ff4a0b" dependencies = [ "accesskit", "accesskit_consumer", - "arrayvec", "once_cell", "paste", - "windows", + "static_assertions", + "windows 0.48.0", ] [[package]] name = "accesskit_winit" -version = "0.14.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f741b54fba827e49a73d55fdd43e8d3d5133aa7710a48581013c7802f232b83" +checksum = "5284218aca17d9e150164428a0ebc7b955f70e3a9a78b4c20894513aabf98a67" dependencies = [ "accesskit", "accesskit_macos", @@ -115,13 +121,16 @@ dependencies = [ [[package]] name = "ahash" -version = "0.8.3" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c99f64d1e06488f620f932677e24bc6e2897582980441ae90a671415bd7ec2f" +checksum = "77c3a9648d43b9cd48db467b3f87fdd6e146bcc88ab0180006cef2179fe11d01" dependencies = [ "cfg-if", + "getrandom", "once_cell", + "serde", "version_check", + "zerocopy", ] [[package]] @@ -135,13 +144,15 @@ dependencies = [ [[package]] name = "android-activity" -version = "0.4.1" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c77a0045eda8b888c76ea473c2b0515ba6f471d318f8927c5c72240937035a6" +checksum = "39b801912a977c3fd52d80511fe1c0c8480c6f957f21ae2ce1b92ffe970cf4b9" dependencies = [ "android-properties", - "bitflags 1.3.2", + "bitflags 2.4.1", "cc", + "cesu8", + "jni", "jni-sys", "libc", "log", @@ -149,6 +160,7 @@ dependencies = [ "ndk-context", "ndk-sys", "num_enum", + "thiserror", ] [[package]] @@ -172,7 +184,7 @@ dependencies = [ "parking_lot", "thiserror", "winapi", - "x11rb", + "x11rb 0.10.1", ] [[package]] @@ -187,6 +199,12 @@ version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6" +[[package]] +name = "as-raw-xcb-connection" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "175571dd1d178ced59193a6fc02dde1b972eb0bc56c892cde9beeceac5bf0f6b" + [[package]] name = "ascii" version = "1.1.0" @@ -199,19 +217,21 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c48ccdbf6ca6b121e0f586cbc0e73ae440e56c67c30fa0873b4e110d9c26d2b" dependencies = [ - "event-listener", + "event-listener 2.5.3", "futures-core", ] [[package]] name = "async-channel" -version = "1.8.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf46fee83e5ccffc220104713af3292ff9bc7c64c7de289f66dae8e38d826833" +checksum = "1ca33f4bc4ed1babef42cad36cc1f51fa88be00420404e5b1e80ab1b18f7678c" dependencies = [ "concurrent-queue", - "event-listener", + "event-listener 4.0.3", + "event-listener-strategy", "futures-core", + "pin-project-lite", ] [[package]] @@ -220,41 +240,106 @@ version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6fa3dc5f2a8564f07759c008b9109dc0d39de92a88d5588b8a5036d286383afb" dependencies = [ - "async-lock", + "async-lock 2.7.0", "async-task", "concurrent-queue", - "fastrand", - "futures-lite", + "fastrand 1.9.0", + "futures-lite 1.13.0", "slab", ] +[[package]] +name = "async-fs" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "279cf904654eeebfa37ac9bb1598880884924aab82e290aa65c9e77a0e142e06" +dependencies = [ + "async-lock 2.7.0", + "autocfg", + "blocking", + "futures-lite 1.13.0", +] + [[package]] name = "async-io" version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fc5b45d93ef0529756f812ca52e44c221b35341892d3dcc34132ac02f3dd2af" dependencies = [ - "async-lock", + "async-lock 2.7.0", "autocfg", "cfg-if", "concurrent-queue", - "futures-lite", + "futures-lite 1.13.0", "log", "parking", - "polling", - "rustix", + "polling 2.8.0", + "rustix 0.37.25", "slab", "socket2", "waker-fn", ] +[[package]] +name = "async-io" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6afaa937395a620e33dc6a742c593c01aced20aa376ffb0f628121198578ccc7" +dependencies = [ + "async-lock 3.3.0", + "cfg-if", + "concurrent-queue", + "futures-io", + "futures-lite 2.2.0", + "parking", + "polling 3.3.1", + "rustix 0.38.30", + "slab", + "tracing", + "windows-sys 0.52.0", +] + [[package]] name = "async-lock" version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fa24f727524730b077666307f2734b4a1a1c57acb79193127dcc8914d5242dd7" dependencies = [ - "event-listener", + "event-listener 2.5.3", +] + +[[package]] +name = "async-lock" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d034b430882f8381900d3fe6f0aaa3ad94f2cb4ac519b429692a1bc2dda4ae7b" +dependencies = [ + "event-listener 4.0.3", + "event-listener-strategy", + "pin-project-lite", +] + +[[package]] +name = "async-once-cell" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9338790e78aa95a416786ec8389546c4b6a1dfc3dc36071ed9518a9413a542eb" + +[[package]] +name = "async-process" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea6438ba0a08d81529c69b36700fa2f95837bfe3e776ab39cde9c14d9149da88" +dependencies = [ + "async-io 1.13.0", + "async-lock 2.7.0", + "async-signal", + "blocking", + "cfg-if", + "event-listener 3.1.0", + "futures-lite 1.13.0", + "rustix 0.38.30", + "windows-sys 0.48.0", ] [[package]] @@ -265,7 +350,25 @@ checksum = "0e97ce7de6cf12de5d7226c73f5ba9811622f4db3a5b91b55c53e987e5f91cba" dependencies = [ "proc-macro2", "quote", - "syn 2.0.16", + "syn 2.0.48", +] + +[[package]] +name = "async-signal" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e47d90f65a225c4527103a8d747001fc56e375203592b25ad103e1ca13124c5" +dependencies = [ + "async-io 2.2.2", + "async-lock 2.7.0", + "atomic-waker", + "cfg-if", + "futures-core", + "futures-io", + "rustix 0.38.30", + "signal-hook-registry", + "slab", + "windows-sys 0.48.0", ] [[package]] @@ -282,40 +385,61 @@ checksum = "b9ccdd8f2a161be9bd5c023df56f1b2a0bd1d83872ae53b71a84a12c9bf6e842" dependencies = [ "proc-macro2", "quote", - "syn 2.0.16", + "syn 2.0.48", ] [[package]] -name = "atomic_refcell" -version = "0.1.10" +name = "atomic-waker" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79d6dc922a2792b006573f60b2648076355daeae5ce9cb59507e5908c9625d31" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" [[package]] name = "atspi" -version = "0.10.1" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "674e7a3376837b2e7d12d34d58ac47073c491dc3bf6f71a7adaf687d4d817faa" +checksum = "6059f350ab6f593ea00727b334265c4dfc7fd442ee32d264794bd9bdc68e87ca" +dependencies = [ + "atspi-common", + "atspi-connection", + "atspi-proxies", +] + +[[package]] +name = "atspi-common" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92af95f966d2431f962bc632c2e68eda7777330158bf640c4af4249349b2cdf5" dependencies = [ - "async-recursion", - "async-trait", - "atspi-macros", "enumflags2", - "futures-lite", "serde", - "tracing", + "static_assertions", "zbus", "zbus_names", + "zvariant", ] [[package]] -name = "atspi-macros" -version = "0.2.0" +name = "atspi-connection" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97fb4870a32c0eaa17e35bca0e6b16020635157121fb7d45593d242c295bc768" +checksum = "a0c65e7d70f86d4c0e3b2d585d9bf3f979f0b19d635a336725a88d279f76b939" dependencies = [ - "quote", - "syn 1.0.109", + "atspi-common", + "atspi-proxies", + "futures-lite 1.13.0", + "zbus", +] + +[[package]] +name = "atspi-proxies" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6495661273703e7a229356dcbe8c8f38223d697aacfaf0e13590a9ac9977bb52" +dependencies = [ + "atspi-common", + "serde", + "zbus", ] [[package]] @@ -390,7 +514,16 @@ version = "0.1.0-beta.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fa55741ee90902547802152aaf3f8e5248aab7e21468089560d4c8840561146" dependencies = [ - "objc-sys", + "objc-sys 0.2.0-beta.2", +] + +[[package]] +name = "block-sys" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae85a0696e7ea3b835a453750bf002770776609115e6d25c6d2ff28a8200f7e7" +dependencies = [ + "objc-sys 0.3.2", ] [[package]] @@ -399,8 +532,34 @@ version = "0.2.0-alpha.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8dd9e63c1744f755c2f60332b88de39d341e5e86239014ad839bd71c106dec42" dependencies = [ - "block-sys", - "objc2-encode", + "block-sys 0.1.0-beta.1", + "objc2-encode 2.0.0-pre.2", +] + +[[package]] +name = "block2" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15b55663a85f33501257357e6421bb33e769d5c9ffb5ba0921c975a123e35e68" +dependencies = [ + "block-sys 0.2.1", + "objc2 0.4.1", +] + +[[package]] +name = "blocking" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a37913e8dc4ddcc604f0c6d3bf2887c995153af3611de9e23c352b44c1b9118" +dependencies = [ + "async-channel", + "async-lock 3.3.0", + "async-task", + "fastrand 2.0.1", + "futures-io", + "futures-lite 2.2.0", + "piper", + "tracing", ] [[package]] @@ -415,6 +574,7 @@ dependencies = [ "dyn-clone", "eframe", "egui", + "egui_extras", "eyre", "flate2", "futures", @@ -434,7 +594,7 @@ dependencies = [ "time", "tokio", "toml 0.8.0", - "winreg 0.51.0", + "winreg 0.52.0", "winres", ] @@ -473,7 +633,7 @@ checksum = "fdde5c9cd29ebd706ce1b35600920a33550e402fc998a2e53ad3b42c3c47a192" dependencies = [ "proc-macro2", "quote", - "syn 2.0.16", + "syn 2.0.48", ] [[package]] @@ -490,15 +650,28 @@ checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" [[package]] name = "calloop" -version = "0.10.5" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a59225be45a478d772ce015d9743e49e92798ece9e34eda9a6aa2a6a7f40192" +checksum = "7b50b5a44d59a98c55a9eeb518f39bf7499ba19fd98ee7d22618687f3f10adbf" dependencies = [ + "bitflags 2.4.1", "log", - "nix 0.25.1", - "slotmap", + "polling 3.3.1", + "rustix 0.38.30", + "slab", "thiserror", - "vec_map", +] + +[[package]] +name = "calloop-wayland-source" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f0ea9b9476c7fad82841a8dbb380e2eae480c21910feba80725b46931ed8f02" +dependencies = [ + "calloop", + "rustix 0.38.30", + "wayland-backend", + "wayland-client", ] [[package]] @@ -560,16 +733,16 @@ dependencies = [ [[package]] name = "cocoa" -version = "0.24.1" +version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f425db7937052c684daec3bd6375c8abe2d146dca4b8b143d6db777c39138f3a" +checksum = "f6140449f97a6e97f9511815c5632d84c8aacf8ac271ad77c559218161a1373c" dependencies = [ "bitflags 1.3.2", "block", "cocoa-foundation", "core-foundation", "core-graphics", - "foreign-types", + "foreign-types 0.5.0", "libc", "objc", ] @@ -584,7 +757,7 @@ dependencies = [ "block", "core-foundation", "core-graphics-types", - "foreign-types", + "foreign-types 0.3.2", "libc", "objc", ] @@ -662,9 +835,9 @@ dependencies = [ [[package]] name = "copypasta" -version = "0.8.2" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "133fc8675ee3a4ec9aa513584deda9aa0faeda3586b87f7f0f2ba082c66fb172" +checksum = "6d35364349bf9e9e1c3a035ddcb00d188d23a3c40c50244c03c27a99fc6a65ae" dependencies = [ "clipboard-win 3.1.1", "objc", @@ -692,14 +865,14 @@ checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" [[package]] name = "core-graphics" -version = "0.22.3" +version = "0.23.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2581bbab3b8ffc6fcbd550bf46c355135d16e9ff2a6ea032ad6b9bf1d7efe4fb" +checksum = "970a29baf4110c26fedbc7f82107d42c23f7e88e404c4577ed73fe99ff85a212" dependencies = [ "bitflags 1.3.2", "core-foundation", "core-graphics-types", - "foreign-types", + "foreign-types 0.5.0", "libc", ] @@ -711,7 +884,7 @@ checksum = "3a68b68b3446082644c91ac778bf50cd4104bfb002b5a6a7c44cca5a2c70788b" dependencies = [ "bitflags 1.3.2", "core-foundation", - "foreign-types", + "foreign-types 0.3.2", "libc", ] @@ -742,16 +915,6 @@ dependencies = [ "cfg-if", ] -[[package]] -name = "crossbeam-channel" -version = "0.5.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200" -dependencies = [ - "cfg-if", - "crossbeam-utils", -] - [[package]] name = "crossbeam-deque" version = "0.8.3" @@ -801,6 +964,12 @@ dependencies = [ "typenum", ] +[[package]] +name = "cursor-icon" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96a6ac251f4a2aca6b3f91340350eab87ae57c3f127ffeb585e92bd336717991" + [[package]] name = "dashmap" version = "5.4.0" @@ -815,6 +984,12 @@ dependencies = [ "serde", ] +[[package]] +name = "data-url" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c297a1c74b71ae29df00c3e22dd9534821d60eb9af5a0192823fa2acea70c2a" + [[package]] name = "derivative" version = "2.2.0" @@ -864,9 +1039,9 @@ checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" [[package]] name = "dlib" -version = "0.5.0" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac1b7517328c04c2aa68422fc60a41b92208182142ed04a25879c26c8f878794" +checksum = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412" dependencies = [ "libloading", ] @@ -877,6 +1052,15 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0688c2a7f92e427f44895cd63841bff7b29f8d7a1648b9e7e07a4a365b2e1257" +[[package]] +name = "document-features" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef5282ad69563b5fc40319526ba27e0e7363d552a896f0297d54f767717f9b95" +dependencies = [ + "litrs", +] + [[package]] name = "downcast-rs" version = "1.2.0" @@ -891,18 +1075,19 @@ checksum = "68b0cf012f1230e43cd00ebb729c6bb58707ecfa8ad08b52ef3a4ccd2697fc30" [[package]] name = "ecolor" -version = "0.22.0" +version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e479a7fa3f23d4e794f8b2f8b3568dd4e47886ad1b12c9c095e141cb591eb63" +checksum = "57539aabcdbb733b6806ef421b66dec158dc1582107ad6d51913db3600303354" dependencies = [ "bytemuck", + "serde", ] [[package]] name = "eframe" -version = "0.22.0" +version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf4596583a2c680c55b6feaa748f74890c4f9cb9c7cb69d6117110444cb65b2f" +checksum = "79c00143a1d564cf27570234c9a199cbe75dc3d43a135510fb2b93406a87ee8e" dependencies = [ "bytemuck", "cocoa", @@ -916,8 +1101,10 @@ dependencies = [ "js-sys", "log", "objc", + "parking_lot", "percent-encoding", - "raw-window-handle", + "raw-window-handle 0.5.2", + "static_assertions", "thiserror", "wasm-bindgen", "wasm-bindgen-futures", @@ -928,46 +1115,77 @@ dependencies = [ [[package]] name = "egui" -version = "0.22.0" +version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3aef8ec3ae1b772f340170c65bf27d5b8c28f543a0116c844d2ac08d01123e7" +checksum = "e0bf640ed7f3bf3d14ebf00d73bacc09c886443ee84ca6494bde37953012c9e3" dependencies = [ "accesskit", - "ahash 0.8.3", + "ahash 0.8.7", "epaint", "log", "nohash-hasher", + "serde", ] [[package]] name = "egui-winit" -version = "0.22.0" +version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a49155fd4a0a4fb21224407a91de0030847972ef90fc64edb63621caea61cb2" +checksum = "1d95d9762056c541bd2724de02910d8bccf3af8e37689dc114b21730e64f80a0" dependencies = [ "accesskit_winit", "arboard", "egui", - "instant", "log", - "raw-window-handle", + "raw-window-handle 0.5.2", "smithay-clipboard", + "web-time", "webbrowser", "winit", ] +[[package]] +name = "egui_extras" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "753c36d3e2f7a32425af5290af2e52efb3471ea3a263b87f003b5433351b0fd7" +dependencies = [ + "egui", + "ehttp", + "enum-map", + "image", + "log", + "mime_guess2", + "resvg", + "serde", +] + [[package]] name = "egui_glow" -version = "0.22.0" +version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f8c2752cdf1b0ef5fcda59a898cacabad974d4f5880e92a420b2c917022da64" +checksum = "cb2ef815e80d117339c7d6b813f7678d23522d699ccd3243e267ef06166009b9" dependencies = [ "bytemuck", "egui", "glow", "log", - "memoffset 0.6.5", + "memoffset 0.7.1", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "ehttp" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f88f45662356f96afc7d9e2bc9910ad8352ee01417f7c69b8b16a53c8767a75d" +dependencies = [ + "document-features", + "js-sys", + "ureq", "wasm-bindgen", + "wasm-bindgen-futures", "web-sys", ] @@ -979,11 +1197,12 @@ checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91" [[package]] name = "emath" -version = "0.22.0" +version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3857d743a6e0741cdd60b622a74c7a36ea75f5f8f11b793b41d905d2c9721a4b" +checksum = "3ee58355767587db7ba3738930d93cad3052cd834c2b48b9ef6ef26fe4823b7e" dependencies = [ "bytemuck", + "serde", ] [[package]] @@ -995,6 +1214,27 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "enum-map" +version = "2.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6866f3bfdf8207509a033af1a75a7b08abda06bbaaeae6669323fd5a097df2e9" +dependencies = [ + "enum-map-derive", + "serde", +] + +[[package]] +name = "enum-map-derive" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f282cfdfe92516eb26c2af8589c274c7c17681f5ecc03c18255fe741c6aa64eb" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.48", +] + [[package]] name = "enumflags2" version = "0.7.7" @@ -1013,24 +1253,35 @@ checksum = "5e9a1f9f7d83e59740248a6e14ecf93929ade55027844dfcea78beafccc15745" dependencies = [ "proc-macro2", "quote", - "syn 2.0.16", + "syn 2.0.48", +] + +[[package]] +name = "enumn" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fd000fd6988e73bbe993ea3db9b1aa64906ab88766d654973924340c8cddb42" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.48", ] [[package]] name = "epaint" -version = "0.22.0" +version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09333964d4d57f40a85338ba3ca5ed4716070ab184dcfed966b35491c5c64f3b" +checksum = "e638cb066bff0903bbb6143116cfd134a42279c7d68f19c0352a94f15a402de7" dependencies = [ "ab_glyph", - "ahash 0.8.3", - "atomic_refcell", + "ahash 0.8.7", "bytemuck", "ecolor", "emath", "log", "nohash-hasher", "parking_lot", + "serde", ] [[package]] @@ -1052,13 +1303,12 @@ dependencies = [ [[package]] name = "errno" -version = "0.3.1" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a" +checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" dependencies = [ - "errno-dragonfly", "libc", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -1087,6 +1337,38 @@ version = "2.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" +[[package]] +name = "event-listener" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d93877bcde0eb80ca09131a08d23f0a5c18a620b01db137dba666d18cd9b30c2" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener" +version = "4.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b215c49b2b248c855fb73579eb1f4f26c38ffdc12973e20e07b91d78d5646e" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener-strategy" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "958e4d70b6d5e81971bebec42271ec641e7ff4e170a6fa605f2b8a8b65cb97d3" +dependencies = [ + "event-listener 4.0.3", + "pin-project-lite", +] + [[package]] name = "exr" version = "1.6.3" @@ -1122,6 +1404,12 @@ dependencies = [ "instant", ] +[[package]] +name = "fastrand" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" + [[package]] name = "fdeflate" version = "0.3.0" @@ -1141,6 +1429,12 @@ dependencies = [ "miniz_oxide 0.7.1", ] +[[package]] +name = "float-cmp" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98de4bbd547a563b716d8dfa9aad1cb19bfab00f4fa09a6a4ed21dbcf44ce9c4" + [[package]] name = "flume" version = "0.10.14" @@ -1151,7 +1445,7 @@ dependencies = [ "futures-sink", "nanorand", "pin-project", - "spin", + "spin 0.9.8", ] [[package]] @@ -1166,18 +1460,45 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" dependencies = [ - "foreign-types-shared", + "foreign-types-shared 0.1.1", ] [[package]] -name = "foreign-types-shared" -version = "0.1.1" +name = "foreign-types" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" +checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" +dependencies = [ + "foreign-types-macros", + "foreign-types-shared 0.3.1", +] [[package]] -name = "form_urlencoded" -version = "1.1.0" +name = "foreign-types-macros" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.48", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "foreign-types-shared" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" + +[[package]] +name = "form_urlencoded" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8" dependencies = [ @@ -1248,7 +1569,7 @@ version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49a9d51ce47660b1e808d3c990b4709f2f415d928835a17dfd16991515c46bce" dependencies = [ - "fastrand", + "fastrand 1.9.0", "futures-core", "futures-io", "memchr", @@ -1257,6 +1578,16 @@ dependencies = [ "waker-fn", ] +[[package]] +name = "futures-lite" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "445ba825b27408685aaecefd65178908c36c6e96aaf6d8599419d46e624192ba" +dependencies = [ + "futures-core", + "pin-project-lite", +] + [[package]] name = "futures-macro" version = "0.3.28" @@ -1265,7 +1596,7 @@ checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" dependencies = [ "proc-macro2", "quote", - "syn 2.0.16", + "syn 2.0.48", ] [[package]] @@ -1318,6 +1649,26 @@ dependencies = [ "winapi", ] +[[package]] +name = "gethostname" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb65d4ba3173c56a500b555b532f72c42e8d1fe64962b518897f8959fae2c177" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "gethostname" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0176e0459c2e4a1fe232f984bca6890e681076abb9934f6cea7c326f3fc47818" +dependencies = [ + "libc", + "windows-targets 0.48.0", +] + [[package]] name = "getrandom" version = "0.2.9" @@ -1360,9 +1711,9 @@ dependencies = [ [[package]] name = "glow" -version = "0.12.1" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e007a07a24de5ecae94160f141029e9a347282cfe25d1d58d85d845cf3130f1" +checksum = "886c2a30b160c4c6fec8f987430c26b526b7988ca71f664e6a699ddf6f9601e4" dependencies = [ "js-sys", "slotmap", @@ -1372,11 +1723,11 @@ dependencies = [ [[package]] name = "glutin" -version = "0.30.8" +version = "0.31.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62f9b771a65f0a1e3ddb6aa16f867d87dc73c922411c255e6c4ab7f6d45c7327" +checksum = "005459a22af86adc706522d78d360101118e2638ec21df3852fcc626e0dbb212" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.4.1", "cfg_aliases", "cgl", "core-foundation", @@ -1384,42 +1735,43 @@ dependencies = [ "glutin_egl_sys", "glutin_glx_sys", "glutin_wgl_sys", + "icrate", "libloading", - "objc2", + "objc2 0.4.1", "once_cell", - "raw-window-handle", - "wayland-sys 0.30.1", - "windows-sys 0.45.0", + "raw-window-handle 0.5.2", + "wayland-sys", + "windows-sys 0.48.0", "x11-dl", ] [[package]] name = "glutin-winit" -version = "0.3.0" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "629a873fc04062830bfe8f97c03773bcd7b371e23bcc465d0a61448cd1588fa4" +checksum = "1ebcdfba24f73b8412c5181e56f092b5eff16671c514ce896b258a0a64bd7735" dependencies = [ "cfg_aliases", "glutin", - "raw-window-handle", + "raw-window-handle 0.5.2", "winit", ] [[package]] name = "glutin_egl_sys" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b3bcbddc51573b977fc6dca5d93867e4f29682cdbaf5d13e48f4fa4346d4d87" +checksum = "77cc5623f5309ef433c3dd4ca1223195347fe62c413da8e2fdd0eb76db2d9bcd" dependencies = [ "gl_generator", - "windows-sys 0.45.0", + "windows-sys 0.48.0", ] [[package]] name = "glutin_glx_sys" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b53cb5fe568964aa066a3ba91eac5ecbac869fb0842cd0dc9e412434f1a1494" +checksum = "a165fd686c10dcc2d45380b35796e577eacfd43d4660ee741ec8ebe2201b3b4f" dependencies = [ "gl_generator", "x11-dl", @@ -1427,9 +1779,9 @@ dependencies = [ [[package]] name = "glutin_wgl_sys" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef89398e90033fc6bc65e9bd42fd29bbbfd483bda5b56dc5562f455550618165" +checksum = "6c8098adac955faa2d31079b65dc48841251f69efd3ac25477903fc424362ead" dependencies = [ "gl_generator", ] @@ -1569,6 +1921,17 @@ dependencies = [ "tokio-native-tls", ] +[[package]] +name = "icrate" +version = "0.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d3aaff8a54577104bafdf686ff18565c3b6903ca5782a2026ef06e2c7aa319" +dependencies = [ + "block2 0.3.0", + "dispatch", + "objc2 0.4.1", +] + [[package]] name = "idna" version = "0.3.0" @@ -1598,6 +1961,12 @@ dependencies = [ "tiff", ] +[[package]] +name = "imagesize" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "029d73f573d8e8d63e6d5020011d3255b28c3ba85d6cf870a07184ed23de9284" + [[package]] name = "indenter" version = "0.3.3" @@ -1631,9 +2000,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" dependencies = [ "cfg-if", - "js-sys", - "wasm-bindgen", - "web-sys", ] [[package]] @@ -1716,9 +2082,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.62" +version = "0.3.67" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68c16e1bfd491478ab155fd8b4896b86f9ede344949b641e61501e07c2b8b4d5" +checksum = "9a1d36f1235bc969acba30b7f5990b864423a6068a10f7c90ae8f0112e3a59d1" dependencies = [ "wasm-bindgen", ] @@ -1740,6 +2106,15 @@ version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc" +[[package]] +name = "kurbo" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd85a5776cd9500c2e2059c8c76c3b01528566b7fcbaf8098b55a33fc298849b" +dependencies = [ + "arrayvec", +] + [[package]] name = "lazy-bytes-cast" version = "5.0.1" @@ -1760,18 +2135,18 @@ checksum = "03087c2bad5e1034e8cace5926dec053fb3790248370865f5117a7d0213354c8" [[package]] name = "libc" -version = "0.2.144" +version = "0.2.152" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b00cc1c228a6782d0f076e7b232802e0c5689d41bb5df366f2a6b6621cfdfe1" +checksum = "13e3bf6590cbc649f4d1a3eefc9d5d6eb746f5200ffb04e5e142700b8faa56e7" [[package]] name = "libloading" -version = "0.7.4" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" +checksum = "c571b676ddfc9a8c12f1f3d3085a7b163966a8fd8098a90640953ce5f6170161" dependencies = [ "cfg-if", - "winapi", + "windows-sys 0.48.0", ] [[package]] @@ -1786,6 +2161,18 @@ version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ece97ea872ece730aed82664c424eb4c8291e1ff2480247ccf7409044bc6479f" +[[package]] +name = "linux-raw-sys" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4cd1a83af159aa67994778be9070f0ae1bd732942279cabb14f86f986a21456" + +[[package]] +name = "litrs" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4ce301924b7887e9d637144fdade93f9dfff9b60981d4ac161db09720d39aa5" + [[package]] name = "lock_api" version = "0.4.9" @@ -1822,9 +2209,9 @@ checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" [[package]] name = "memmap2" -version = "0.5.10" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83faa42c0a078c393f6b29d5db232d8be22776a891f8f56e5284faee4a20b327" +checksum = "45fd3a57831bf88bc63f8cebc0cf956116276e97fef3966103e96416209f7c92" dependencies = [ "libc", ] @@ -1838,6 +2225,15 @@ dependencies = [ "autocfg", ] +[[package]] +name = "memoffset" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4" +dependencies = [ + "autocfg", +] + [[package]] name = "memoffset" version = "0.8.0" @@ -1853,6 +2249,16 @@ version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" +[[package]] +name = "mime_guess2" +version = "2.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25a3333bb1609500601edc766a39b4c1772874a4ce26022f4d866854dc020c41" +dependencies = [ + "mime", + "unicase", +] + [[package]] name = "minimal-lexical" version = "0.2.1" @@ -1919,15 +2325,17 @@ dependencies = [ [[package]] name = "ndk" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "451422b7e4718271c8b5b3aadf5adedba43dc76312454b387e98fae0fc951aa0" +checksum = "2076a31b7010b17a38c01907c45b945e8f11495ee4dd588309718901b1f7a5b7" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.4.1", "jni-sys", + "log", "ndk-sys", "num_enum", - "raw-window-handle", + "raw-window-handle 0.5.2", + "raw-window-handle 0.6.0", "thiserror", ] @@ -1939,9 +2347,9 @@ checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" [[package]] name = "ndk-sys" -version = "0.4.1+23.1.7779620" +version = "0.5.0+25.2.9519653" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3cf2aae958bd232cac5069850591667ad422d263686d75b52a065f9badeee5a3" +checksum = "8c196769dd60fd4f363e11d948139556a344e79d451aeb2fa2fd040738ef7691" dependencies = [ "jni-sys", ] @@ -1960,16 +2368,14 @@ dependencies = [ [[package]] name = "nix" -version = "0.25.1" +version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f346ff70e7dbfd675fe90590b92d59ef2de15a8779ae305ebcbfd3f0caf59be4" +checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b" dependencies = [ - "autocfg", "bitflags 1.3.2", "cfg-if", "libc", - "memoffset 0.6.5", - "pin-utils", + "memoffset 0.7.1", ] [[package]] @@ -2050,23 +2456,23 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.5.11" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f646caf906c20226733ed5b1374287eb97e3c2a5c227ce668c1f2ce20ae57c9" +checksum = "02339744ee7253741199f897151b38e72257d13802d4ee837285cc2990a90845" dependencies = [ "num_enum_derive", ] [[package]] name = "num_enum_derive" -version = "0.5.11" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799" +checksum = "681030a937600a36906c185595136d26abfebb4aa9c65701cefcaf8578bb982b" dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.48", ] [[package]] @@ -2095,15 +2501,31 @@ version = "0.2.0-beta.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "df3b9834c1e95694a05a828b59f55fa2afec6288359cda67146126b3f90a55d7" +[[package]] +name = "objc-sys" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7c71324e4180d0899963fc83d9d241ac39e699609fc1025a850aadac8257459" + [[package]] name = "objc2" version = "0.3.0-beta.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fe31e5425d3d0b89a15982c024392815da40689aceb34bad364d58732bcfd649" dependencies = [ - "block2", - "objc-sys", - "objc2-encode", + "block2 0.2.0-alpha.6", + "objc-sys 0.2.0-beta.2", + "objc2-encode 2.0.0-pre.2", +] + +[[package]] +name = "objc2" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "559c5a40fdd30eb5e344fbceacf7595a81e242529fb4e21cf5f43fb4f11ff98d" +dependencies = [ + "objc-sys 0.3.2", + "objc2-encode 3.0.0", ] [[package]] @@ -2112,9 +2534,15 @@ version = "2.0.0-pre.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "abfcac41015b00a120608fdaa6938c44cb983fee294351cc4bac7638b4e50512" dependencies = [ - "objc-sys", + "objc-sys 0.2.0-beta.2", ] +[[package]] +name = "objc2-encode" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d079845b37af429bfe5dfa76e6d087d788031045b25cfc6fd898486fd9847666" + [[package]] name = "objc_id" version = "0.1.1" @@ -2135,9 +2563,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.17.1" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] name = "openssl" @@ -2147,7 +2575,7 @@ checksum = "79a4c6c3a2b158f7f8f2a2fc5a969fa3a068df6fc9dbb4a43845436e3af7c800" dependencies = [ "bitflags 2.4.1", "cfg-if", - "foreign-types", + "foreign-types 0.3.2", "libc", "once_cell", "openssl-macros", @@ -2162,7 +2590,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.16", + "syn 2.0.48", ] [[package]] @@ -2314,7 +2742,7 @@ dependencies = [ "pest_meta", "proc-macro2", "quote", - "syn 2.0.16", + "syn 2.0.48", ] [[package]] @@ -2328,6 +2756,12 @@ dependencies = [ "sha2", ] +[[package]] +name = "pico-args" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5be167a7af36ee22fe3115051bc51f6e6c7054c9348e28deb4f49bd6f705a315" + [[package]] name = "pin-project" version = "1.1.0" @@ -2345,14 +2779,14 @@ checksum = "39407670928234ebc5e6e580247dd567ad73a3578460c5990f9503df207e8f07" dependencies = [ "proc-macro2", "quote", - "syn 2.0.16", + "syn 2.0.48", ] [[package]] name = "pin-project-lite" -version = "0.2.9" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" +checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" [[package]] name = "pin-utils" @@ -2360,6 +2794,17 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" +[[package]] +name = "piper" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "668d31b1c4eba19242f2088b2bf3316b82ca31082a8335764db4e083db7485d4" +dependencies = [ + "atomic-waker", + "fastrand 2.0.1", + "futures-io", +] + [[package]] name = "pkg-config" version = "0.3.27" @@ -2395,6 +2840,20 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "polling" +version = "3.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf63fa624ab313c11656b4cda960bfc46c410187ad493c41f6ba2d8c1e991c9e" +dependencies = [ + "cfg-if", + "concurrent-queue", + "pin-project-lite", + "rustix 0.38.30", + "tracing", + "windows-sys 0.52.0", +] + [[package]] name = "ppv-lite86" version = "0.2.17" @@ -2413,9 +2872,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.57" +version = "1.0.76" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4ec6d5fe0b140acb27c9a0444118cf55bfbb4e0b259739429abb4521dd67c16" +checksum = "95fc56cda0b5c3325f5fbbd7ff9fda9e02bb00bb3dac51252d2f1bfa1cb8cc8c" dependencies = [ "unicode-ident", ] @@ -2429,11 +2888,20 @@ dependencies = [ "bytemuck", ] +[[package]] +name = "quick-xml" +version = "0.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eff6510e86862b57b210fd8cbe8ed3f0d7d600b9c2863cd4549a2e033c66e956" +dependencies = [ + "memchr", +] + [[package]] name = "quote" -version = "1.0.27" +version = "1.0.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f4f29d145265ec1c483c7c654450edde0bfe043d3938d6972630663356d9500" +checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" dependencies = [ "proc-macro2", ] @@ -2474,11 +2942,17 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f2ff9a1f06a88b01621b7ae906ef0211290d1c8a168a15542486a8f61c0833b9" +[[package]] +name = "raw-window-handle" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42a9830a0e1b9fb145ebb365b8bc4ccd75f290f98c0247deafbbe2c75cefb544" + [[package]] name = "rayon" -version = "1.7.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b" +checksum = "9c27db03db7734835b3f53954b534c91069375ce6ccaa2e065441e07d9b6cdb1" dependencies = [ "either", "rayon-core", @@ -2486,16 +2960,20 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d" +checksum = "5ce3fb6ad83f861aac485e76e1985cd109d9a3713802152be56c3b1f0e0658ed" dependencies = [ - "crossbeam-channel", "crossbeam-deque", "crossbeam-utils", - "num_cpus", ] +[[package]] +name = "rctree" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b42e27ef78c35d3998403c1d26f3efd9e135d3e5121b0a4845cc5cc27547f4f" + [[package]] name = "redox_syscall" version = "0.2.16" @@ -2579,6 +3057,44 @@ dependencies = [ "winreg 0.10.1", ] +[[package]] +name = "resvg" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cadccb3d99a9efb8e5e00c16fbb732cbe400db2ec7fc004697ee7d97d86cf1f4" +dependencies = [ + "log", + "pico-args", + "rgb", + "svgtypes", + "tiny-skia", + "usvg", +] + +[[package]] +name = "rgb" +version = "0.8.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05aaa8004b64fd573fc9d002f4e632d51ad4f026c2b5ba95fcb6c2f32c2c47d8" +dependencies = [ + "bytemuck", +] + +[[package]] +name = "ring" +version = "0.16.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" +dependencies = [ + "cc", + "libc", + "once_cell", + "spin 0.5.2", + "untrusted", + "web-sys", + "winapi", +] + [[package]] name = "ron" version = "0.7.1" @@ -2592,12 +3108,9 @@ dependencies = [ [[package]] name = "roxmltree" -version = "0.18.0" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8f595a457b6b8c6cda66a48503e92ee8d19342f905948f29c383200ec9eb1d8" -dependencies = [ - "xmlparser", -] +checksum = "3cd14fd5e3b777a7422cca79358c57a8f6e3a703d9ac187448d0daf220c2407f" [[package]] name = "rust-ini" @@ -2622,13 +3135,58 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d4eb579851244c2c03e7c24f501c3432bed80b8f720af1d6e5b0e0f01555a035" dependencies = [ "bitflags 1.3.2", - "errno 0.3.1", + "errno 0.3.8", "io-lifetimes", "libc", - "linux-raw-sys", + "linux-raw-sys 0.3.7", "windows-sys 0.48.0", ] +[[package]] +name = "rustix" +version = "0.38.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "322394588aaf33c24007e8bb3238ee3e4c5c09c084ab32bc73890b99ff326bca" +dependencies = [ + "bitflags 2.4.1", + "errno 0.3.8", + "libc", + "linux-raw-sys 0.4.12", + "windows-sys 0.52.0", +] + +[[package]] +name = "rustls" +version = "0.21.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd8d6c9f025a446bc4d18ad9632e69aec8f287aa84499ee335599fabd20c3fd8" +dependencies = [ + "log", + "ring", + "rustls-webpki 0.101.6", + "sct", +] + +[[package]] +name = "rustls-webpki" +version = "0.100.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f6a5fc258f1c1276dfe3016516945546e2d5383911efc0fc4f1cdc5df3a4ae3" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "rustls-webpki" +version = "0.101.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c7d5dece342910d9ba34d259310cae3e0154b873b35408b787b59bce53d34fe" +dependencies = [ + "ring", + "untrusted", +] + [[package]] name = "rusty-leveldb" version = "3.0.0" @@ -2679,11 +3237,21 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" +[[package]] +name = "sct" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4" +dependencies = [ + "ring", + "untrusted", +] + [[package]] name = "sctk-adwaita" -version = "0.5.4" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cda4e97be1fd174ccc2aae81c8b694e803fa99b34e8fd0f057a9d70698e3ed09" +checksum = "82b2eaf3a5b264a521b988b2e73042e742df700c4f962cde845d1541adb46550" dependencies = [ "ab_glyph", "log", @@ -2732,7 +3300,7 @@ checksum = "8c805777e3930c8883389c602315a24224bcc738b63905ef87cd1420353ea93e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.16", + "syn 2.0.48", ] [[package]] @@ -2754,7 +3322,7 @@ checksum = "bcec881020c684085e55a25f7fd888954d56609ef363479dc5a1305eb0d40cab" dependencies = [ "proc-macro2", "quote", - "syn 2.0.16", + "syn 2.0.48", ] [[package]] @@ -2824,6 +3392,21 @@ version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "238abfbb77c1915110ad968465608b68e869e0772622c9656714e73e5a1a522f" +[[package]] +name = "simplecss" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a11be7c62927d9427e9f40f3444d5499d868648e2edbc4e2116de69e7ec0e89d" +dependencies = [ + "log", +] + +[[package]] +name = "siphasher" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" + [[package]] name = "slab" version = "0.4.8" @@ -2850,35 +3433,51 @@ checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" [[package]] name = "smithay-client-toolkit" -version = "0.16.0" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f307c47d32d2715eb2e0ece5589057820e0e5e70d07c247d1063e844e107f454" +checksum = "60e3d9941fa3bacf7c2bf4b065304faa14164151254cd16ce1b1bc8fc381600f" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.4.1", "calloop", - "dlib", - "lazy_static", + "calloop-wayland-source", + "cursor-icon", + "libc", "log", "memmap2", - "nix 0.24.3", - "pkg-config", + "rustix 0.38.30", + "thiserror", + "wayland-backend", "wayland-client", + "wayland-csd-frame", "wayland-cursor", "wayland-protocols", + "wayland-protocols-wlr", + "wayland-scanner", + "xkeysym", ] [[package]] name = "smithay-clipboard" -version = "0.6.6" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a345c870a1fae0b1b779085e81b51e614767c239e93503588e54c5b17f4b0e8" +checksum = "0bb62b280ce5a5cba847669933a0948d00904cf83845c944eae96a4738cea1a6" dependencies = [ + "libc", "smithay-client-toolkit", - "wayland-client", + "wayland-backend", ] [[package]] -name = "snap" +name = "smol_str" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74212e6bbe9a4352329b2f68ba3130c15a3f26fe88ff22dbdc6cdd58fa85e99c" +dependencies = [ + "serde", +] + +[[package]] +name = "snap" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e9f0ab6ef7eb7353d9119c170a436d1bf248eea575ac42d19d12f4e34130831" @@ -2893,6 +3492,12 @@ dependencies = [ "winapi", ] +[[package]] +name = "spin" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" + [[package]] name = "spin" version = "0.9.8" @@ -2904,9 +3509,9 @@ dependencies = [ [[package]] name = "sqlite" -version = "0.31.1" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05439db7afa0ce0b38f6d1b4c691f368adde108df021e15e900fec6a1af92488" +checksum = "03801c10193857d6a4a71ec46cee198a15cbc659622aabe1db0d0bdbefbcf8e6" dependencies = [ "libc", "sqlite3-sys", @@ -2973,6 +3578,19 @@ name = "strict-num" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6637bab7722d379c8b41ba849228d680cc12d0a45ba1fa2b48f2a30577a06731" +dependencies = [ + "float-cmp", +] + +[[package]] +name = "svgtypes" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e44e288cd960318917cbd540340968b90becc8bc81f171345d706e7a89d9d70" +dependencies = [ + "kurbo", + "siphasher", +] [[package]] name = "syn" @@ -2987,9 +3605,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.16" +version = "2.0.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6f671d4b5ffdb8eadec19c0ae67fe2639df8684bd7bc4b83d986b8db549cf01" +checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f" dependencies = [ "proc-macro2", "quote", @@ -2998,9 +3616,9 @@ dependencies = [ [[package]] name = "sysinfo" -version = "0.29.0" +version = "0.30.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02f1dc6930a439cc5d154221b5387d153f8183529b07c19aca24ea31e0a167e1" +checksum = "1fb4f3438c8f6389c864e61221cbc97e9bca98b4daf39a5beb7bea660f528bb2" dependencies = [ "cfg-if", "core-foundation-sys", @@ -3008,7 +3626,7 @@ dependencies = [ "ntapi", "once_cell", "rayon", - "winapi", + "windows 0.52.0", ] [[package]] @@ -3018,9 +3636,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b9fbec84f381d5795b08656e4912bec604d162bff9291d6189a78f4c8ab87998" dependencies = [ "cfg-if", - "fastrand", + "fastrand 1.9.0", "redox_syscall 0.3.5", - "rustix", + "rustix 0.37.25", "windows-sys 0.45.0", ] @@ -3041,7 +3659,7 @@ checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.16", + "syn 2.0.48", ] [[package]] @@ -3094,23 +3712,24 @@ dependencies = [ [[package]] name = "tiny-skia" -version = "0.8.4" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df8493a203431061e901613751931f047d1971337153f96d0e5e363d6dbf6a67" +checksum = "b6a067b809476893fce6a254cf285850ff69c847e6cfbade6a20b655b6c7e80d" dependencies = [ "arrayref", "arrayvec", "bytemuck", "cfg-if", + "log", "png", "tiny-skia-path", ] [[package]] name = "tiny-skia-path" -version = "0.8.4" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adbfb5d3f3dd57a0e11d12f4f13d4ebbbc1b5c15b7ab0a156d030b21da5f677c" +checksum = "5de35e8a90052baaaf61f171680ac2f8e925a1e43ea9d2e3a00514772250e541" dependencies = [ "arrayref", "bytemuck", @@ -3159,7 +3778,7 @@ checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.16", + "syn 2.0.48", ] [[package]] @@ -3266,7 +3885,7 @@ checksum = "0f57e3ca2a01450b1a921183a9c9cbfda207fd822cef4ccb00a65402cbba7a74" dependencies = [ "proc-macro2", "quote", - "syn 2.0.16", + "syn 2.0.48", ] [[package]] @@ -3334,6 +3953,15 @@ dependencies = [ "winapi", ] +[[package]] +name = "unicase" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" +dependencies = [ + "version_check", +] + [[package]] name = "unicode-bidi" version = "0.3.13" @@ -3355,6 +3983,34 @@ dependencies = [ "tinyvec", ] +[[package]] +name = "unicode-segmentation" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" + +[[package]] +name = "untrusted" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" + +[[package]] +name = "ureq" +version = "2.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b11c96ac7ee530603dcdf68ed1557050f374ce55a5a07193ebf8cbc9f8927e9" +dependencies = [ + "base64 0.21.0", + "flate2", + "log", + "once_cell", + "rustls", + "rustls-webpki 0.100.3", + "url", + "webpki-roots", +] + [[package]] name = "url" version = "2.3.1" @@ -3372,6 +4028,50 @@ version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e8db7427f936968176eaa7cdf81b7f98b980b18495ec28f1b5791ac3bfe3eea9" +[[package]] +name = "usvg" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38b0a51b72ab80ca511d126b77feeeb4fb1e972764653e61feac30adc161a756" +dependencies = [ + "base64 0.21.0", + "log", + "pico-args", + "usvg-parser", + "usvg-tree", + "xmlwriter", +] + +[[package]] +name = "usvg-parser" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9bd4e3c291f45d152929a31f0f6c819245e2921bfd01e7bd91201a9af39a2bdc" +dependencies = [ + "data-url", + "flate2", + "imagesize", + "kurbo", + "log", + "roxmltree", + "simplecss", + "siphasher", + "svgtypes", + "usvg-tree", +] + +[[package]] +name = "usvg-tree" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ee3d202ebdb97a6215604b8f5b4d6ef9024efd623cf2e373a6416ba976ec7d3" +dependencies = [ + "rctree", + "strict-num", + "svgtypes", + "tiny-skia-path", +] + [[package]] name = "valuable" version = "0.1.0" @@ -3384,12 +4084,6 @@ version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" -[[package]] -name = "vec_map" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" - [[package]] name = "version_check" version = "0.9.4" @@ -3430,9 +4124,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.86" +version = "0.2.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bba0e8cb82ba49ff4e229459ff22a191bbe9a1cb3a341610c9c33efc27ddf73" +checksum = "b1223296a201415c7fad14792dbefaace9bd52b62d33453ade1c5b5f07555406" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -3440,16 +4134,16 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.86" +version = "0.2.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19b04bc93f9d6bdee709f6bd2118f57dd6679cf1176a1af464fca3ab0d66d8fb" +checksum = "fcdc935b63408d58a32f8cc9738a0bffd8f05cc7c002086c6ef20b7312ad9dcd" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.16", + "syn 2.0.48", "wasm-bindgen-shared", ] @@ -3467,9 +4161,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.86" +version = "0.2.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14d6b024f1a526bb0234f52840389927257beb670610081360e5a03c5df9c258" +checksum = "3e4c238561b2d428924c49815533a8b9121c664599558a5d9ec51f8a1740a999" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -3477,113 +4171,147 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.86" +version = "0.2.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e128beba882dd1eb6200e1dc92ae6c5dbaa4311aa7bb211ca035779e5efc39f8" +checksum = "bae1abb6806dc1ad9e560ed242107c0f6c84335f1749dd4e8ddb012ebd5e25a7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.16", + "syn 2.0.48", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.86" +version = "0.2.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed9d5b4305409d1fc9482fee2d7f9bcbf24b3972bf59817ef757e23982242a93" +checksum = "4d91413b1c31d7539ba5ef2451af3f0b833a005eb27a631cec32bc0635a8602b" [[package]] -name = "wayland-client" -version = "0.29.5" +name = "wayland-backend" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f3b068c05a039c9f755f881dc50f01732214f5685e379829759088967c46715" +checksum = "19152ddd73f45f024ed4534d9ca2594e0ef252c1847695255dae47f34df9fbe4" dependencies = [ - "bitflags 1.3.2", + "cc", "downcast-rs", - "libc", - "nix 0.24.3", + "nix 0.26.4", "scoped-tls", - "wayland-commons", + "smallvec", + "wayland-sys", +] + +[[package]] +name = "wayland-client" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ca7d52347346f5473bf2f56705f360e8440873052e575e55890c4fa57843ed3" +dependencies = [ + "bitflags 2.4.1", + "nix 0.26.4", + "wayland-backend", "wayland-scanner", - "wayland-sys 0.29.5", ] [[package]] -name = "wayland-commons" -version = "0.29.5" +name = "wayland-csd-frame" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8691f134d584a33a6606d9d717b95c4fa20065605f798a3f350d78dced02a902" +checksum = "625c5029dbd43d25e6aa9615e88b829a5cad13b2819c4ae129fdbb7c31ab4c7e" dependencies = [ - "nix 0.24.3", - "once_cell", - "smallvec", - "wayland-sys 0.29.5", + "bitflags 2.4.1", + "cursor-icon", + "wayland-backend", ] [[package]] name = "wayland-cursor" -version = "0.29.5" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6865c6b66f13d6257bef1cd40cbfe8ef2f150fb8ebbdb1e8e873455931377661" +checksum = "a44aa20ae986659d6c77d64d808a046996a932aa763913864dc40c359ef7ad5b" dependencies = [ - "nix 0.24.3", + "nix 0.26.4", "wayland-client", "xcursor", ] [[package]] name = "wayland-protocols" -version = "0.29.5" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b950621f9354b322ee817a23474e479b34be96c2e909c14f7bc0100e9a970bc6" +checksum = "e253d7107ba913923dc253967f35e8561a3c65f914543e46843c88ddd729e21c" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.4.1", + "wayland-backend", "wayland-client", - "wayland-commons", + "wayland-scanner", +] + +[[package]] +name = "wayland-protocols-plasma" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23803551115ff9ea9bce586860c5c5a971e360825a0309264102a9495a5ff479" +dependencies = [ + "bitflags 2.4.1", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-scanner", +] + +[[package]] +name = "wayland-protocols-wlr" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad1f61b76b6c2d8742e10f9ba5c3737f6530b4c243132c2a2ccc8aa96fe25cd6" +dependencies = [ + "bitflags 2.4.1", + "wayland-backend", + "wayland-client", + "wayland-protocols", "wayland-scanner", ] [[package]] name = "wayland-scanner" -version = "0.29.5" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f4303d8fa22ab852f789e75a967f0a2cdc430a607751c0499bada3e451cbd53" +checksum = "fb8e28403665c9f9513202b7e1ed71ec56fde5c107816843fb14057910b2c09c" dependencies = [ "proc-macro2", + "quick-xml", "quote", - "xml-rs", ] [[package]] name = "wayland-sys" -version = "0.29.5" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be12ce1a3c39ec7dba25594b97b42cb3195d54953ddb9d3d95a7c3902bc6e9d4" +checksum = "15a0c8eaff5216d07f226cb7a549159267f3467b289d9a2e52fd3ef5aae2b7af" dependencies = [ "dlib", - "lazy_static", + "log", + "once_cell", "pkg-config", ] [[package]] -name = "wayland-sys" -version = "0.30.1" +name = "web-sys" +version = "0.3.67" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96b2a02ac608e07132978689a6f9bf4214949c85998c247abadd4f4129b1aa06" +checksum = "58cd2333b6e0be7a39605f0e255892fd7418a682d8da8fe042fe25128794d2ed" dependencies = [ - "dlib", - "lazy_static", - "log", - "pkg-config", + "js-sys", + "wasm-bindgen", ] [[package]] -name = "web-sys" -version = "0.3.62" +name = "web-time" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16b5f940c7edfdc6d12126d98c9ef4d1b3d470011c47c76a6581df47ad9ba721" +checksum = "aa30049b1c872b72c89866d458eae9f20380ab280ffd1b1e18df2d3e2d98cfe0" dependencies = [ "js-sys", "wasm-bindgen", @@ -3601,11 +4329,20 @@ dependencies = [ "log", "ndk-context", "objc", - "raw-window-handle", + "raw-window-handle 0.5.2", "url", "web-sys", ] +[[package]] +name = "webpki-roots" +version = "0.23.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b03058f88386e5ff5310d9111d53f48b17d732b401aeb83a8d5190f2ac459338" +dependencies = [ + "rustls-webpki 0.100.3", +] + [[package]] name = "weezl" version = "0.1.7" @@ -3654,20 +4391,39 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows" -version = "0.44.0" +version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e745dab35a0c4c77aa3ce42d595e13d2003d6902d6b08c9ef5fc326d08da12b" +checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" dependencies = [ "windows-implement", "windows-interface", - "windows-targets 0.42.2", + "windows-targets 0.48.0", +] + +[[package]] +name = "windows" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" +dependencies = [ + "windows-core", + "windows-targets 0.52.0", +] + +[[package]] +name = "windows-core" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +dependencies = [ + "windows-targets 0.52.0", ] [[package]] name = "windows-implement" -version = "0.44.0" +version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ce87ca8e3417b02dc2a8a22769306658670ec92d78f1bd420d6310a67c245c6" +checksum = "5e2ee588991b9e7e6c8338edf3333fbe4da35dc72092643958ebb43f0ab2c49c" dependencies = [ "proc-macro2", "quote", @@ -3676,9 +4432,9 @@ dependencies = [ [[package]] name = "windows-interface" -version = "0.44.0" +version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "853f69a591ecd4f810d29f17e902d40e349fb05b0b11fff63b08b826bfe39c7f" +checksum = "e6fb8df20c9bcaa8ad6ab513f7b40104840c8867d5751126e4df3b08388d0cc7" dependencies = [ "proc-macro2", "quote", @@ -3718,6 +4474,15 @@ dependencies = [ "windows-targets 0.48.0", ] +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.0", +] + [[package]] name = "windows-targets" version = "0.42.2" @@ -3748,6 +4513,21 @@ dependencies = [ "windows_x86_64_msvc 0.48.0", ] +[[package]] +name = "windows-targets" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd" +dependencies = [ + "windows_aarch64_gnullvm 0.52.0", + "windows_aarch64_msvc 0.52.0", + "windows_i686_gnu 0.52.0", + "windows_i686_msvc 0.52.0", + "windows_x86_64_gnu 0.52.0", + "windows_x86_64_gnullvm 0.52.0", + "windows_x86_64_msvc 0.52.0", +] + [[package]] name = "windows_aarch64_gnullvm" version = "0.42.2" @@ -3760,6 +4540,12 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" + [[package]] name = "windows_aarch64_msvc" version = "0.42.2" @@ -3772,6 +4558,12 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" + [[package]] name = "windows_i686_gnu" version = "0.42.2" @@ -3784,6 +4576,12 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" +[[package]] +name = "windows_i686_gnu" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" + [[package]] name = "windows_i686_msvc" version = "0.42.2" @@ -3796,6 +4594,12 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" +[[package]] +name = "windows_i686_msvc" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" + [[package]] name = "windows_x86_64_gnu" version = "0.42.2" @@ -3808,6 +4612,12 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" + [[package]] name = "windows_x86_64_gnullvm" version = "0.42.2" @@ -3820,6 +4630,12 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" + [[package]] name = "windows_x86_64_msvc" version = "0.42.2" @@ -3832,39 +4648,59 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" + [[package]] name = "winit" -version = "0.28.6" +version = "0.29.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "866db3f712fffba75d31bf0cdecf357c8aeafd158c5b7ab51dba2a2b2d47f196" +checksum = "c2376dab13e09c01ad8b679f0dbc7038af4ec43d9a91344338e37bd686481550" dependencies = [ + "ahash 0.8.7", "android-activity", - "bitflags 1.3.2", + "atomic-waker", + "bitflags 2.4.1", + "bytemuck", + "calloop", "cfg_aliases", "core-foundation", "core-graphics", - "dispatch", - "instant", + "cursor-icon", + "icrate", + "js-sys", "libc", "log", - "mio", + "memmap2", "ndk", - "objc2", + "ndk-sys", + "objc2 0.4.1", "once_cell", "orbclient", "percent-encoding", - "raw-window-handle", + "raw-window-handle 0.5.2", + "raw-window-handle 0.6.0", "redox_syscall 0.3.5", + "rustix 0.38.30", "sctk-adwaita", "smithay-client-toolkit", + "smol_str", + "unicode-segmentation", "wasm-bindgen", + "wasm-bindgen-futures", + "wayland-backend", "wayland-client", - "wayland-commons", "wayland-protocols", - "wayland-scanner", + "wayland-protocols-plasma", "web-sys", - "windows-sys 0.45.0", + "web-time", + "windows-sys 0.48.0", "x11-dl", + "x11rb 0.13.0", + "xkbcommon-dl", ] [[package]] @@ -3896,9 +4732,9 @@ dependencies = [ [[package]] name = "winreg" -version = "0.51.0" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "937f3df7948156640f46aacef17a70db0de5917bda9c92b0f751f3a955b588fc" +checksum = "a277a57398d4bfa075df44f501a17cfdf8542d224f0d36095a2adc7aee4ef0a5" dependencies = [ "cfg-if", "windows-sys 0.48.0", @@ -3915,11 +4751,11 @@ dependencies = [ [[package]] name = "x11-clipboard" -version = "0.7.1" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "980b9aa9226c3b7de8e2adb11bf20124327c054e0e5812d2aac0b5b5a87e7464" +checksum = "b41aca1115b1f195f21c541c5efb423470848d48143127d0f07f8b90c27440df" dependencies = [ - "x11rb", + "x11rb 0.12.0", ] [[package]] @@ -3939,11 +4775,39 @@ version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "592b4883219f345e712b3209c62654ebda0bb50887f330cbd018d0f654bfd507" dependencies = [ - "gethostname", + "gethostname 0.2.3", "nix 0.24.3", "winapi", "winapi-wsapoll", - "x11rb-protocol", + "x11rb-protocol 0.10.0", +] + +[[package]] +name = "x11rb" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1641b26d4dec61337c35a1b1aaf9e3cba8f46f0b43636c609ab0291a648040a" +dependencies = [ + "gethostname 0.3.0", + "nix 0.26.4", + "winapi", + "winapi-wsapoll", + "x11rb-protocol 0.12.0", +] + +[[package]] +name = "x11rb" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8f25ead8c7e4cba123243a6367da5d3990e0d3affa708ea19dce96356bd9f1a" +dependencies = [ + "as-raw-xcb-connection", + "gethostname 0.4.3", + "libc", + "libloading", + "once_cell", + "rustix 0.38.30", + "x11rb-protocol 0.13.0", ] [[package]] @@ -3955,6 +4819,21 @@ dependencies = [ "nix 0.24.3", ] +[[package]] +name = "x11rb-protocol" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82d6c3f9a0fb6701fab8f6cea9b0c0bd5d6876f1f89f7fada07e558077c344bc" +dependencies = [ + "nix 0.26.4", +] + +[[package]] +name = "x11rb-protocol" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e63e71c4b8bd9ffec2c963173a4dc4cbde9ee96961d4fcb4429db9929b606c34" + [[package]] name = "xcursor" version = "0.3.4" @@ -3964,6 +4843,35 @@ dependencies = [ "nom", ] +[[package]] +name = "xdg-home" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2769203cd13a0c6015d515be729c526d041e9cf2c0cc478d57faee85f40c6dcd" +dependencies = [ + "nix 0.26.4", + "winapi", +] + +[[package]] +name = "xkbcommon-dl" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6924668544c48c0133152e7eec86d644a056ca3d09275eb8d5cdb9855f9d8699" +dependencies = [ + "bitflags 2.4.1", + "dlib", + "log", + "once_cell", + "xkeysym", +] + +[[package]] +name = "xkeysym" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "054a8e68b76250b253f671d1268cb7f1ae089ec35e195b2efb2a4e9a836d0621" + [[package]] name = "xml-rs" version = "0.8.14" @@ -3971,10 +4879,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "52839dc911083a8ef63efa4d039d1f58b5e409f923e44c80828f206f66e5541c" [[package]] -name = "xmlparser" -version = "0.13.5" +name = "xmlwriter" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d25c75bf9ea12c4040a97f829154768bbbce366287e2dc044af160cd79a13fd" +checksum = "ec7a2a501ed189703dba8b08142f057e887dfc4b2cc4db2d343ac6376ba3e0b9" [[package]] name = "yaml-rust" @@ -3987,27 +4895,29 @@ dependencies = [ [[package]] name = "zbus" -version = "3.10.0" +version = "3.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f770930448dd412a4a7131dd968a8e6df0064db4d7916fbbd2d6c3f26b566938" +checksum = "31de390a2d872e4cd04edd71b425e29853f786dc99317ed72d73d6fcf5ebb948" dependencies = [ "async-broadcast", "async-executor", - "async-io", - "async-lock", + "async-fs", + "async-io 1.13.0", + "async-lock 2.7.0", + "async-process", "async-recursion", "async-task", "async-trait", + "blocking", "byteorder", "derivative", - "dirs", "enumflags2", - "event-listener", + "event-listener 2.5.3", "futures-core", "futures-sink", "futures-util", "hex", - "nix 0.25.1", + "nix 0.26.4", "once_cell", "ordered-stream", "rand", @@ -4018,6 +4928,7 @@ dependencies = [ "tracing", "uds_windows", "winapi", + "xdg-home", "zbus_macros", "zbus_names", "zvariant", @@ -4025,28 +4936,49 @@ dependencies = [ [[package]] name = "zbus_macros" -version = "3.10.0" +version = "3.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4832059b438689017db7340580ebabba07f114eab91bf990c6e55052408b40d8" +checksum = "41d1794a946878c0e807f55a397187c11fc7a038ba5d868e7db4f3bd7760bc9d" dependencies = [ "proc-macro-crate", "proc-macro2", "quote", "regex", "syn 1.0.109", + "zvariant_utils", ] [[package]] name = "zbus_names" -version = "2.5.1" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82441e6033be0a741157a72951a3e4957d519698f3a824439cc131c5ba77ac2a" +checksum = "fb80bb776dbda6e23d705cf0123c3b95df99c4ebeaec6c2599d4a5419902b4a9" dependencies = [ "serde", "static_assertions", "zvariant", ] +[[package]] +name = "zerocopy" +version = "0.7.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.48", +] + [[package]] name = "zune-inflate" version = "0.2.54" @@ -4058,9 +4990,9 @@ dependencies = [ [[package]] name = "zvariant" -version = "3.14.0" +version = "3.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "622cc473f10cef1b0d73b7b34a266be30ebdcfaea40ec297dd8cbda088f9f93c" +checksum = "44b291bee0d960c53170780af148dca5fa260a63cdd24f1962fa82e03e53338c" dependencies = [ "byteorder", "enumflags2", @@ -4072,9 +5004,9 @@ dependencies = [ [[package]] name = "zvariant_derive" -version = "3.14.0" +version = "3.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d9c1b57352c25b778257c661f3c4744b7cefb7fc09dd46909a153cce7773da2" +checksum = "934d7a7dfc310d6ee06c87ffe88ef4eca7d3e37bb251dece2ef93da8f17d8ecd" dependencies = [ "proc-macro-crate", "proc-macro2", diff --git a/Cargo.toml b/Cargo.toml index b023398..66a1187 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -6,7 +6,7 @@ version = "1.9.4" [dependencies] base64 = "^0.21.0" config = "^0.13.3" -copypasta = "^0.8.1" +copypasta = "^0.10.0" flate2 = "^1.0.25" is_executable = "^1.0.1" nom = "^7.1.1" @@ -15,11 +15,12 @@ serde_json = "^1.0.91" steam_shortcuts_util = "^1.1.8" steamgriddb_api = "^0.3.1" -sysinfo = "^0.29.0" +sysinfo = "^0.30.5" eyre = "^0.6.8" color-eyre = "^0.6.2" dyn-clone = "^1.0.10" time = {version="^0.3.17", features = ["formatting"]} +egui_extras = { version = "0.25.0", features = ["all_loaders"] } [target."cfg(not(windows))".dependencies] openssl = { version = "*", features = ["vendored"] } @@ -29,10 +30,10 @@ features = ["serde"] version = "^5.4.0" [dependencies.eframe] -version = "^0.22.0" +version = "^0.25.0" [dependencies.egui] -version = "^0.22.0" +version = "^0.25.0" [dependencies.futures] version = "^0.3.25" @@ -62,9 +63,9 @@ version = "^0.8.0" winres = "^0.1.12" [target."cfg(windows)".dependencies] -winreg = "^0.51.0" -sqlite = "^0.31.1" -roxmltree = "^0.18.0" +winreg = "^0.52.0" +sqlite = "^0.32.0" +roxmltree = "^0.19.0" [features] # This feature is enabled when building for a flatpak environment diff --git a/src/platforms/egs/get_manifests.rs b/src/platforms/egs/get_manifests.rs index 928ea7f..0808ec3 100644 --- a/src/platforms/egs/get_manifests.rs +++ b/src/platforms/egs/get_manifests.rs @@ -27,7 +27,7 @@ pub(crate) fn get_egs_manifests( manifests.sort_by_key(|m| m.dedupe_key()); manifests.dedup_by_key(|m| m.dedupe_key()); - for mut manifest in &mut manifests { + for manifest in &mut manifests { manifest.launcher_path = Some(locations.launcher_path.clone()); manifest.compat_folder = locations.compat_folder_path.clone(); if settings.safe_launch.contains(&manifest.display_name) diff --git a/src/platforms/playnite/playnite_platform.rs b/src/platforms/playnite/playnite_platform.rs index 3f10461..9df7fce 100644 --- a/src/platforms/playnite/playnite_platform.rs +++ b/src/platforms/playnite/playnite_platform.rs @@ -86,7 +86,7 @@ impl PlaynitePlatform { fn get_playnite_games(&self) -> eyre::Result> { let mut res = vec![]; let (launcher_path, games_file_path) = self.find_paths()?; - let games_bytes = std::fs::read(&games_file_path).map_err(|e| match e.raw_os_error() { + let games_bytes = std::fs::read(games_file_path).map_err(|e| match e.raw_os_error() { Some(32) => { eyre::format_err!("It looks like Playnite is running and preventing BoilR from reading its database, please ensure that Playnite closed.") } @@ -123,7 +123,6 @@ impl PlaynitePlatform { return Err(eyre::eyre!("Did not find Playnite installation")); } let app_data_path = env::var("APPDATA")?; - let launcher_path = launcher_path; let playnite_folder = Path::new(&app_data_path).join("Playnite"); let games_file_path = playnite_folder.join("library").join("games.db"); Ok((launcher_path, games_file_path)) diff --git a/src/steam/restarter.rs b/src/steam/restarter.rs index 0c86393..e3a6d57 100644 --- a/src/steam/restarter.rs +++ b/src/steam/restarter.rs @@ -1,6 +1,6 @@ use std::{process::Command, thread::sleep, time::Duration}; -use sysinfo::{ProcessExt, System, SystemExt}; +use sysinfo::System; pub fn ensure_steam_stopped() { #[cfg(target_os = "windows")] diff --git a/src/steam/utils.rs b/src/steam/utils.rs index ff07b0a..d7d3f3f 100644 --- a/src/steam/utils.rs +++ b/src/steam/utils.rs @@ -69,7 +69,6 @@ pub fn get_shortcuts_paths(settings: &SteamSettings) -> eyre::Result CachedSearch<'a> { } println!("Searching for {}", query.as_ref()); let search = self.client.search(query.as_ref()).await?; - let first_id = search.get(0).map(|f| f.id); + let first_id = search.first().map(|f| f.id); match first_id { Some(assumed_id) => { self.search_map.insert(app_id, (query.into(), assumed_id)); diff --git a/src/steamgriddb/image_type.rs b/src/steamgriddb/image_type.rs index f109e69..9025998 100644 --- a/src/steamgriddb/image_type.rs +++ b/src/steamgriddb/image_type.rs @@ -22,16 +22,6 @@ impl ImageType { &ALL_TYPES } - pub fn ratio(&self) -> f32{ - match self { - ImageType::Hero => 0.3, - ImageType::Grid => 1.6, - ImageType::WideGrid => 0.5, - ImageType::Logo => 0.2, - ImageType::BigPicture => 0.5, - ImageType::Icon => 1.0, - } - } pub fn name(&self) -> &str { match self { diff --git a/src/ui/components/game_image_button.rs b/src/ui/components/game_image_button.rs deleted file mode 100644 index b927306..0000000 --- a/src/ui/components/game_image_button.rs +++ /dev/null @@ -1,186 +0,0 @@ -use std::path::{Path, PathBuf}; - -use egui::{Button, ImageButton}; -use futures::executor::block_on; -use tokio::runtime::Runtime; - -use crate::steamgriddb::{ToDownload, ImageType}; -use crate::ui::images::{clamp_to_width, ImageHandles, TextureDownloadState}; -use crate::ui::ui_images::load_image_from_path; - -pub struct GameButton { - path: PathBuf, - max_width: f32, - text: String, - image_type: ImageType, -} - -impl GameButton { - pub fn new(path: &Path) -> Self { - Self { - max_width: 200.0, - path: path.to_path_buf(), - text: Default::default(), - image_type: ImageType::Grid, - } - } - pub fn width(&mut self, max_width: f32) -> &mut Self { - self.max_width = max_width; - self - } - - pub fn text(&mut self, text: &str) -> &mut Self { - self.text = text.to_string(); - self - } - - pub fn image_type(&mut self, image_type:&ImageType) -> &mut Self{ - self.image_type = *image_type; - self - } - - pub fn show_download( - &self, - ui: &mut egui::Ui, - image_handles: &ImageHandles, - rt: &Runtime, - url: &str, - ) -> bool { - self.render_possible_image(ui, image_handles, Some(rt), Some(url)) - } - - pub fn show(&self, ui: &mut egui::Ui, image_handles: &ImageHandles) -> bool { - self.render_possible_image(ui, image_handles, None, None) - } - - fn render_possible_image( - &self, - ui: &mut egui::Ui, - image_handles: &ImageHandles, - rt: Option<&Runtime>, - url: Option<&str>, - ) -> bool { - { - let path = &self.path; - let image_key = path.to_string_lossy().to_string(); - match image_handles.get_mut(&image_key) { - Some(mut state) => { - match state.value() { - TextureDownloadState::Downloading => { - ui.ctx().request_repaint(); - //nothing to do,just wait - ui.spinner(); - } - TextureDownloadState::Downloaded => { - //Need to load - let image_data = load_image_from_path(path); - match image_data { - Ok(image_data) => { - let handle = ui.ctx().load_texture( - &image_key, - image_data, - egui::TextureOptions::LINEAR, - ); - *state.value_mut() = TextureDownloadState::Loaded(handle); - ui.spinner(); - } - Err(_) => *state.value_mut() = TextureDownloadState::Failed, - } - ui.ctx().request_repaint(); - } - TextureDownloadState::Loaded(texture_handle) => { - //need to show - let mut size = texture_handle.size_vec2(); - clamp_to_width(&mut size, self.max_width); - let image_button = ImageButton::new(texture_handle, size); - if ui - .add_sized(size, image_button) - .on_hover_text(&self.text) - .clicked() - { - return true; - } - } - TextureDownloadState::Failed => { - let button = ui.add_sized( - [self.max_width, self.max_width * self.image_type.ratio()], - Button::new(&self.text).wrap(true), - ); - if button.clicked() { - return true; - } - } - } - } - None => { - match url { - Some(url) => { - download_image( - path, - image_handles, - &image_key, - url, - &self.image_type, - rt, - ); - } - None => { - //Not possible to download - if !path.exists() { - image_handles.insert(image_key, TextureDownloadState::Failed); - } - } - } - } - } - false - } - } -} -impl Default for GameButton { - fn default() -> Self { - Self::new(Path::new("")) - } -} - - -fn download_image( - path: &Path, - image_handles: &ImageHandles, - image_key: &str, - url: &str, - image_type: &ImageType, - rt: Option<&Runtime>, -) { - //We need to start a download - //Redownload if file is too small - if !path.exists() || std::fs::metadata(path).map(|m| m.len()).unwrap_or_default() < 2 { - image_handles.insert(image_key.to_string(), TextureDownloadState::Downloading); - let to_download = ToDownload { - path: path.to_path_buf(), - url: url.to_string(), - app_name: "Thumbnail".to_string(), - image_type: *image_type, - }; - let image_handles = image_handles.clone(); - let image_key = image_key.to_string(); - if let Some(rt) = rt { - rt.spawn_blocking(move || { - match block_on(crate::steamgriddb::download_to_download(&to_download)) { - Ok(_) => { - image_handles.insert(image_key, TextureDownloadState::Downloaded); - } - Err(err) => { - println!( - "Failed downloading image {} error: {:?}", - to_download.url, err - ); - image_handles.insert(image_key, TextureDownloadState::Failed); - } - } - }); - } - } else { - image_handles.insert(image_key.to_string(), TextureDownloadState::Downloaded); - } -} diff --git a/src/ui/components/mod.rs b/src/ui/components/mod.rs index 3265c39..214351e 100644 --- a/src/ui/components/mod.rs +++ b/src/ui/components/mod.rs @@ -1,5 +1,3 @@ mod steam_user_select; -mod game_image_button; -pub use steam_user_select::render_user_select; -pub use game_image_button::GameButton; \ No newline at end of file +pub use steam_user_select::render_user_select; \ No newline at end of file diff --git a/src/ui/components/steam_user_select.rs b/src/ui/components/steam_user_select.rs index 692321e..4b28ef2 100644 --- a/src/ui/components/steam_user_select.rs +++ b/src/ui/components/steam_user_select.rs @@ -26,6 +26,6 @@ pub fn render_user_select<'a>( None } } else { - return steam_users.get(0); + return steam_users.first(); } } diff --git a/src/ui/defines.rs b/src/ui/defines.rs index a4c96d6..e1d54e1 100644 --- a/src/ui/defines.rs +++ b/src/ui/defines.rs @@ -12,28 +12,11 @@ pub mod ui_colors { pub mod ui_images { - use std::thread::JoinHandle; - use eframe::IconData; - use egui::{ColorImage, ImageData}; + use egui::IconData; - pub const IMPORT_GAMES_IMAGE: &[u8] = include_bytes!("../../resources/import_games_button.png"); - pub const SAVE_IMAGE: &[u8] = include_bytes!("../../resources/save.png"); - pub const LOGO_32: &[u8] = include_bytes!("../../resources/logo32.png"); pub const LOGO_ICON: &[u8] = include_bytes!("../../resources/logo_small.png"); - pub fn get_import_image() -> ImageData { - ImageData::Color(load_image_from_memory(IMPORT_GAMES_IMAGE).unwrap_or_default()) - } - - pub fn get_save_image() -> ImageData { - ImageData::Color(load_image_from_memory(SAVE_IMAGE).unwrap_or_default()) - } - - pub fn get_logo() -> ImageData { - ImageData::Color(load_image_from_memory(LOGO_32).unwrap_or_default()) - } - pub fn get_logo_icon() -> IconData { let image = image::load_from_memory(LOGO_ICON).unwrap_or_default(); let image_buffer = image.to_rgba8(); @@ -45,66 +28,4 @@ pub mod ui_images { } } - pub fn load_image_from_path(path: &std::path::Path) -> eyre::Result { - let path_owned = path.to_owned(); - let handle: JoinHandle> = std::thread::spawn(move || { - let image = image::io::Reader::open(path_owned)? - .with_guessed_format()? - .decode()?; - let size = [image.width() as _, image.height() as _]; - let image_buffer = image.to_rgba8(); - let pixels = image_buffer.as_flat_samples(); - Ok(egui::ColorImage::from_rgba_unmultiplied( - size, - pixels.as_slice(), - )) - }); - match handle.join() { - Ok(thread_result) => thread_result, - Err(_e) => Err(eyre::format_err!("Failed to load image at {:?} ", path)), - } - } - - pub fn load_image_from_memory(image_data: &[u8]) -> Result { - let image = image::load_from_memory(image_data)?; - let size = [image.width() as _, image.height() as _]; - let image_buffer = image.to_rgba8(); - let pixels = image_buffer.as_flat_samples(); - Ok(ColorImage::from_rgba_unmultiplied(size, pixels.as_slice())) - } -} - -#[cfg(test)] -mod tests { - use super::ui_images::load_image_from_path; - - #[test] - pub fn test_image_load_that_is_broken() { - let res = load_image_from_path(std::path::Path::new("src/testdata/brokenimage.webp")); - assert!(res.is_err()); - } - - #[test] - pub fn test_image_load_that_works_png() { - let res = load_image_from_path(std::path::Path::new("src/testdata/smallpng.png")); - assert!(res.is_ok()); - } - - #[test] - pub fn test_image_load_that_works_webp() { - let res = load_image_from_path(std::path::Path::new("src/testdata/spider.webp")); - assert!(res.is_ok()); - } - - #[test] - pub fn test_image_load_animated_webp() { - let res = load_image_from_path(std::path::Path::new("src/testdata/hollow.webp")); - assert!(res.is_err()); - } - - // #[test] - // pub fn test_image_load_animated_webp2() { - // let res = load_image_from_path(std::path::Path::new("src/testdata/tunic.webp")); - // assert!(res.is_err()); - // } -} +} \ No newline at end of file diff --git a/src/ui/images/image_resize.rs b/src/ui/images/image_resize.rs deleted file mode 100644 index b3cd86b..0000000 --- a/src/ui/images/image_resize.rs +++ /dev/null @@ -1,11 +0,0 @@ -pub fn clamp_to_width(size: &mut egui::Vec2, max_width: f32) { - let mut x = size.x; - let mut y = size.y; - if size.x > max_width { - let ratio = size.y / size.x; - x = max_width; - y = x * ratio; - } - size.x = x; - size.y = y; -} \ No newline at end of file diff --git a/src/ui/images/image_select_state.rs b/src/ui/images/image_select_state.rs index 9cf34d2..ba62c61 100644 --- a/src/ui/images/image_select_state.rs +++ b/src/ui/images/image_select_state.rs @@ -1,15 +1,12 @@ -use std::sync::Arc; use steam_shortcuts_util::shortcut::ShortcutOwned; -use dashmap::DashMap; use crate::{steam::SteamUsersInfo, steamgriddb::ImageType, ui::FetcStatus}; -use super::{ gamemode::GameMode, possible_image::PossibleImage, texturestate::TextureDownloadState, gametype::GameType}; +use super::{ gamemode::GameMode, possible_image::PossibleImage, gametype::GameType}; use tokio::sync::watch::{self, Receiver}; -pub type ImageHandles = std::sync::Arc>; pub struct ImageSelectState { pub selected_shortcut: Option, @@ -23,7 +20,6 @@ pub struct ImageSelectState { pub image_type_selected: Option, pub image_options: Receiver>>, pub steam_games: Option>, - pub image_handles: ImageHandles, pub possible_names: Option>, } @@ -43,7 +39,6 @@ impl Default for ImageSelectState { image_type_selected: Default::default(), possible_names: None, image_options: watch::channel(FetcStatus::NeedsFetched).1, - image_handles: Arc::new(DashMap::new()), steam_games: None, } } diff --git a/src/ui/images/mod.rs b/src/ui/images/mod.rs index e6166e3..d75f270 100644 --- a/src/ui/images/mod.rs +++ b/src/ui/images/mod.rs @@ -1,4 +1,3 @@ -mod texturestate; mod ui_image_download; mod gamemode; mod possible_image; @@ -6,12 +5,8 @@ mod image_select_state; mod gametype; mod useraction; mod hasimagekey; -mod image_resize; mod constants; mod pages; -pub use image_select_state::ImageSelectState; -pub use image_select_state::ImageHandles; -pub use texturestate::TextureDownloadState; -pub use image_resize::clamp_to_width; \ No newline at end of file +pub use image_select_state::ImageSelectState; \ No newline at end of file diff --git a/src/ui/images/pages/pick_new_image.rs b/src/ui/images/pages/pick_new_image.rs index 7e683be..9d27d53 100644 --- a/src/ui/images/pages/pick_new_image.rs +++ b/src/ui/images/pages/pick_new_image.rs @@ -1,13 +1,12 @@ use std::path::{Path, PathBuf}; -use egui::Grid; +use egui::{Grid, ImageButton}; use futures::executor::block_on; use tokio::sync::watch; use crate::{ steamgriddb::{get_image_extension, ImageType, ToDownload}, ui::{ - components::GameButton, images::{ constants::MAX_WIDTH, hasimagekey::HasImageKey, image_select_state::ImageSelectState, possible_image::PossibleImage, useraction::UserAction, @@ -17,7 +16,6 @@ use crate::{ }; pub fn render_page_pick_image( - app: &MyEguiApp, ui: &mut egui::Ui, image_type: &ImageType, state: &ImageSelectState, @@ -57,13 +55,24 @@ pub fn render_page_pick_image( let x = Grid::new("ImageThumbnailSelectGrid") .spacing([column_padding, column_padding]) .show(ui, |ui| { - for image in images { - let path = image.thumbnail_path.as_path(); - let mut button = GameButton::new(path); - button.width(column_width); - button.text("Pick image"); - if button.show_download(ui, &state.image_handles, &app.rt,&image.thumbnail_url) { - return Some(image.clone()); + for possible_image in images { + let image = egui::Image::new(&possible_image.thumbnail_url) + .max_width(column_width) + .shrink_to_fit(); + let calced = image.calc_size( + egui::Vec2 { + x: column_width, + y: f32::INFINITY, + }, + image.size(), + ); + let button = ImageButton::new(image); + let clicked = ui + .add_sized(calced, button) + .on_hover_text("Pick image") + .clicked(); + if clicked { + return Some(possible_image); } column += 1; if column >= columns { @@ -75,7 +84,7 @@ pub fn render_page_pick_image( }) .inner; if let Some(x) = x { - return Some(UserAction::ImageSelected(x)); + return Some(UserAction::ImageSelected(x.clone())); } } _ => { @@ -106,23 +115,6 @@ pub fn handle_image_selected(app: &mut MyEguiApp, image: PossibleImage) { delete_images_of_type(user, selected_shortcut, selected_image_type); - //Put the loaded thumbnail into the image handler map, we can use that for preview - let full_image_key = to_download_to_path.to_string_lossy().to_string(); - let _ = app - .image_selected_state - .image_handles - .remove(&full_image_key); - let thumbnail_key = image.thumbnail_path.to_string_lossy().to_string(); - let thumbnail = app - .image_selected_state - .image_handles - .remove(&thumbnail_key); - if let Some((_key, thumbnail)) = thumbnail { - app.image_selected_state - .image_handles - .insert(full_image_key, thumbnail); - } - let app_name = selected_shortcut.name(); let to_download = ToDownload { path: to_download_to_path, @@ -134,7 +126,6 @@ pub fn handle_image_selected(app: &mut MyEguiApp, image: PossibleImage) { let _ = block_on(crate::steamgriddb::download_to_download(&to_download)); }); - clear_loaded_images(app); { app.image_selected_state.image_type_selected = None; app.image_selected_state.image_options = watch::channel(FetcStatus::NeedsFetched).1; @@ -164,12 +155,3 @@ fn image_path( ) -> PathBuf { selected_shortcut.key(selected_image_type, data_folder).0 } - -fn clear_loaded_images(app: &mut MyEguiApp) { - if let FetcStatus::Fetched(options) = &*app.image_selected_state.image_options.borrow() { - for option in options { - let key = option.thumbnail_path.to_string_lossy().to_string(); - app.image_selected_state.image_handles.remove(&key); - } - } -} diff --git a/src/ui/images/pages/select_image_type.rs b/src/ui/images/pages/select_image_type.rs index e629071..1fabdc9 100644 --- a/src/ui/images/pages/select_image_type.rs +++ b/src/ui/images/pages/select_image_type.rs @@ -1,11 +1,12 @@ use std::path::Path; -use crate::ui::components::GameButton; +use egui::ImageButton; + use crate::ui::images::{ gametype::GameType, hasimagekey::HasImageKey, image_select_state::ImageSelectState, - useraction::UserAction, ImageHandles, + useraction::UserAction, }; -use crate::{steamgriddb::ImageType}; +use crate::steamgriddb::ImageType; const MAX_WIDTH: f32 = 300.; @@ -20,7 +21,7 @@ pub fn render_page_shortcut_select_image_type( .map(|user| &user.steam_user_data_folder); if let (Some(shortcut), Some(user_path)) = (shortcut, user_path) { let thumbnail = |ui: &mut egui::Ui, image_type: &ImageType| { - if render_thumbnail(ui, &state.image_handles, shortcut, image_type, user_path) { + if render_thumbnail(ui, shortcut, image_type, user_path) { Some(UserAction::ImageTypeSelected(*image_type)) } else { None @@ -76,17 +77,14 @@ pub fn render_page_shortcut_select_image_type( fn render_thumbnail( ui: &mut egui::Ui, - image_handles: &ImageHandles, shortcut: &GameType, image_type: &ImageType, user_path: &String, ) -> bool { - let (path, _key) = shortcut.key(image_type, Path::new(&user_path)); + let (_path, key) = shortcut.key(image_type, Path::new(&user_path)); let text = format!("Pick {} image", image_type.name()); - let mut image = GameButton::new(&path); - image - .width(MAX_WIDTH) - .text(&text) - .image_type(image_type) - .show(ui, image_handles) + let image = egui::Image::new(format!("file://{}", key)).max_width(MAX_WIDTH).shrink_to_fit(); + let calced = image.calc_size(egui::Vec2 { x: MAX_WIDTH, y: f32::INFINITY }, image.size()); + let button = ImageButton::new(image); + ui.add_sized(calced,button).on_hover_text(text).clicked() } diff --git a/src/ui/images/pages/shortcut_images_overview.rs b/src/ui/images/pages/shortcut_images_overview.rs index db27a97..97db186 100644 --- a/src/ui/images/pages/shortcut_images_overview.rs +++ b/src/ui/images/pages/shortcut_images_overview.rs @@ -1,5 +1,6 @@ use std::path::Path; +use egui::ImageButton; use steam_shortcuts_util::shortcut::ShortcutOwned; use crate::{ @@ -7,11 +8,10 @@ use crate::{ steamgriddb::{CachedSearch, ImageType}, ui::{ images::{ - gametype::GameType, hasimagekey::HasImageKey, texturestate::TextureDownloadState, + gametype::GameType, hasimagekey::HasImageKey, useraction::UserAction, }, - ui_images::load_image_from_path, - MyEguiApp, components::GameButton, + MyEguiApp, }, }; @@ -31,7 +31,7 @@ pub fn render_page_shortcut_images_overview( if let Some(action) = egui::Grid::new("ui_images") .show(ui, |ui| { for shortcut in shortcuts { - let action = render_image(app, shortcut, user_info, column_width, ui); + let action = render_image(shortcut, user_info, column_width, ui); if action.is_some() { return action; } @@ -57,7 +57,6 @@ pub fn render_page_shortcut_images_overview( } fn render_image( - app: &MyEguiApp, shortcut: &ShortcutOwned, user_info: &SteamUsersInfo, column_width: f32, @@ -67,22 +66,20 @@ fn render_image( &ImageType::Grid, Path::new(&user_info.steam_user_data_folder), ); + let image = egui::Image::new(format!("file://{}", key)).max_width(column_width).shrink_to_fit(); + let calced = image.calc_size(egui::Vec2 { x: column_width, y: f32::INFINITY }, image.size()); + let button = ImageButton::new(image); - let mut button = GameButton::new(Path::new(&key)); - button.text(&shortcut.app_name); - button.width(column_width); - let clicked = button.show(ui, &app.image_selected_state.image_handles); - if clicked { + if ui.add_sized(calced,button).on_hover_text(&shortcut.app_name).clicked() { return Some(Some(UserAction::ShortcutSelected(GameType::Shortcut( Box::new(shortcut.clone()), )))); } None } -pub fn handle_shortcut_selected(app: &mut MyEguiApp, shortcut: GameType, ui: &mut egui::Ui) { +pub fn handle_shortcut_selected(app: &mut MyEguiApp, shortcut: GameType ) { let state = &mut app.image_selected_state; - //We must have a user to make see this action; - if let Some(user) = state.steam_user.as_ref() { + //We must have a user to get to this action; if let Some(auth_key) = &app.settings.steamgrid_db.auth_key { let client = steamgriddb_api::Client::new(auth_key); let search = CachedSearch::new(&client); @@ -92,20 +89,5 @@ pub fn handle_shortcut_selected(app: &mut MyEguiApp, shortcut: GameType, ui: &mu .ok() .flatten(); } - state.selected_shortcut = Some(shortcut.clone()); - - for image_type in ImageType::all() { - let (path, key) = shortcut.key(image_type, Path::new(&user.steam_user_data_folder)); - let image = load_image_from_path(&path); - if let Ok(image) = image { - let texture = ui - .ctx() - .load_texture(&key, image, egui::TextureOptions::LINEAR); - state - .image_handles - .insert(key, TextureDownloadState::Loaded(texture)); - } - } state.selected_shortcut = Some(shortcut); - } } diff --git a/src/ui/images/texturestate.rs b/src/ui/images/texturestate.rs deleted file mode 100644 index be513fa..0000000 --- a/src/ui/images/texturestate.rs +++ /dev/null @@ -1,7 +0,0 @@ -#[derive(Clone)] -pub enum TextureDownloadState { - Downloading, - Downloaded, - Loaded(egui::TextureHandle), - Failed, -} diff --git a/src/ui/images/ui_image_download.rs b/src/ui/images/ui_image_download.rs index 914d470..23219b8 100644 --- a/src/ui/images/ui_image_download.rs +++ b/src/ui/images/ui_image_download.rs @@ -1,7 +1,6 @@ use super::{ constants::POSSIBLE_EXTENSIONS, gamemode::GameMode, - hasimagekey::HasImageKey, image_select_state::ImageSelectState, pages::{ handle_correct_grid_request, handle_grid_change, handle_image_selected, @@ -9,11 +8,10 @@ use super::{ render_page_shortcut_select_image_type, render_page_steam_images_overview, }, possible_image::PossibleImage, - texturestate::TextureDownloadState, useraction::UserAction, }; -use std::path::Path; +use std::{ path::Path, thread, time::Duration}; use crate::{ config::get_thumbnails_folder, @@ -21,7 +19,7 @@ use crate::{ steam::{get_installed_games, SteamUsersInfo}, steamgriddb::{get_image_extension, get_query_type, ImageType}, sync::{download_images, SyncProgress}, - ui::{components::render_user_select, ui_images::load_image_from_path, FetcStatus, MyEguiApp}, + ui::{components::render_user_select, FetcStatus, MyEguiApp}, }; use egui::ScrollArea; use futures::executor::block_on; @@ -67,7 +65,7 @@ impl MyEguiApp { return value; } } else if let Some(image_type) = state.image_type_selected.as_ref() { - if let Some(action) = render_page_pick_image(self, ui, image_type, state) { + if let Some(action) = render_page_pick_image(ui, image_type, state) { return action; } } else if let Some(action) = render_page_shortcut_select_image_type(ui, state) { @@ -148,16 +146,18 @@ impl MyEguiApp { }); match action { UserAction::UserSelected(user) => { - self.handle_user_selected(user, ui); + self.handle_user_selected(user); } UserAction::ShortcutSelected(shortcut) => { - handle_shortcut_selected(self, shortcut, ui); + handle_shortcut_selected(self, shortcut); } UserAction::ImageTypeSelected(image_type) => { self.handle_image_type_selected(image_type); } UserAction::ImageSelected(image) => { handle_image_selected(self, image); + thread::sleep(Duration::from_millis(100)); + ui.ctx().forget_all_images(); } UserAction::BackButton => { self.handle_back_button_action(); @@ -173,21 +173,23 @@ impl MyEguiApp { handle_correct_grid_request(self); } UserAction::ImageTypeCleared(image_type, should_ban) => { - self.handle_image_type_cleared(image_type, should_ban) + self.handle_image_type_cleared(image_type, should_ban); + ui.ctx().forget_all_images(); } UserAction::ClearImages => { self.handle_clear_all_images(); + ui.ctx().forget_all_images(); } UserAction::DownloadAllImages => { self.handle_download_all_images(); + ui.ctx().forget_all_images(); } UserAction::RefreshImages => { - let (_, reciever) = watch::channel(SyncProgress::NotStarted); let user = self.image_selected_state.steam_user.clone(); if let Some(user) = &user { - load_image_grids(user, &mut self.image_selected_state, ui); + load_image_grids(user); } - self.status_reciever = reciever; + ui.ctx().forget_all_images(); } }; } @@ -252,8 +254,6 @@ impl MyEguiApp { if path.exists() { let _ = std::fs::remove_file(&path); } - let key = path.to_string_lossy().to_string(); - self.image_selected_state.image_handles.remove(&key); } self.image_selected_state.image_type_selected = None; } @@ -264,9 +264,9 @@ impl MyEguiApp { self.image_selected_state.steam_games = Some(get_installed_games(&self.settings.steam)); } - fn handle_user_selected(&mut self, user: SteamUsersInfo, ui: &mut egui::Ui) { + fn handle_user_selected(&mut self, user: SteamUsersInfo) { let state = &mut self.image_selected_state; - let shortcuts = load_image_grids(&user, state, ui); + let shortcuts = load_image_grids(&user); state.user_shortcuts = Some(shortcuts); state.steam_user = Some(user); } @@ -279,8 +279,6 @@ impl MyEguiApp { let settings = self.settings.clone(); if let Some(auth_key) = settings.steamgrid_db.auth_key { if let Some(grid_id) = self.image_selected_state.grid_id { - let auth_key = auth_key; - let image_type = image_type; self.rt.spawn_blocking(move || { let thumbnails_folder = get_thumbnails_folder(); let client = steamgriddb_api::Client::new(auth_key); @@ -316,18 +314,14 @@ impl MyEguiApp { } else if state.selected_shortcut.is_some() { state.selected_shortcut = None; } else { - state.image_handles.clear(); state.user_shortcuts = None; state.steam_user = None; } } } -fn load_image_grids( - user: &SteamUsersInfo, - state: &mut ImageSelectState, - ui: &mut egui::Ui, -) -> Vec { +//TODO remove this +fn load_image_grids(user: &SteamUsersInfo) -> Vec { let user_info = crate::steam::get_shortcuts_for_user(user); match user_info { Ok(user_info) => { @@ -336,22 +330,6 @@ fn load_image_grids( user_folder.pop(); let mut shortcuts = user_info.shortcuts; shortcuts.sort_by_key(|s| s.app_name.clone()); - let image_type = &ImageType::Grid; - for shortcut in &shortcuts { - let (path, key) = shortcut.key(image_type, &user_folder); - let loaded = state.image_handles.contains_key(&key); - if !loaded && path.exists() { - let image = load_image_from_path(&path); - if let Ok(image) = image { - let texture = - ui.ctx() - .load_texture(&key, image, egui::TextureOptions::LINEAR); - state - .image_handles - .insert(key, TextureDownloadState::Loaded(texture)); - } - } - } shortcuts } Err(_err) => { diff --git a/src/ui/ui_disconnect.rs b/src/ui/ui_disconnect.rs index 6c4aa25..98648d7 100644 --- a/src/ui/ui_disconnect.rs +++ b/src/ui/ui_disconnect.rs @@ -81,7 +81,7 @@ impl MyEguiApp { } fn set_scroll_style(ui: &mut egui::Ui) { - let mut scroll_style = ui.style_mut(); + let scroll_style = ui.style_mut(); scroll_style.visuals.extreme_bg_color = BACKGROUND_COLOR; scroll_style.visuals.widgets.inactive.bg_fill = EXTRA_BACKGROUND_COLOR; scroll_style.visuals.widgets.active.bg_fill = EXTRA_BACKGROUND_COLOR; diff --git a/src/ui/ui_import_games.rs b/src/ui/ui_import_games.rs index 2496a79..c5fa889 100644 --- a/src/ui/ui_import_games.rs +++ b/src/ui/ui_import_games.rs @@ -42,7 +42,7 @@ impl MyEguiApp { pub(crate) fn render_import_games(&mut self, ui: &mut egui::Ui) { ui.heading("Import Games"); - let mut scroll_style = ui.style_mut(); + let scroll_style = ui.style_mut(); scroll_style.visuals.extreme_bg_color = BACKGROUND_COLOR; scroll_style.visuals.widgets.inactive.bg_fill = EXTRA_BACKGROUND_COLOR; scroll_style.visuals.widgets.active.bg_fill = EXTRA_BACKGROUND_COLOR; diff --git a/src/ui/ui_settings.rs b/src/ui/ui_settings.rs index 593b839..166ba42 100644 --- a/src/ui/ui_settings.rs +++ b/src/ui/ui_settings.rs @@ -13,7 +13,7 @@ impl MyEguiApp { pub(crate) fn render_settings(&mut self, ui: &mut egui::Ui) { ui.heading("Settings"); - let mut scroll_style = ui.style_mut(); + let scroll_style = ui.style_mut(); scroll_style.visuals.extreme_bg_color = BACKGROUND_COLOR; scroll_style.visuals.widgets.inactive.bg_fill = EXTRA_BACKGROUND_COLOR; scroll_style.visuals.widgets.active.bg_fill = EXTRA_BACKGROUND_COLOR; diff --git a/src/ui/uiapp.rs b/src/ui/uiapp.rs index b75d3e5..7e5eeac 100644 --- a/src/ui/uiapp.rs +++ b/src/ui/uiapp.rs @@ -1,7 +1,9 @@ use std::{collections::HashMap, error::Error, time::Duration}; use eframe::{egui, App, Frame}; -use egui::{ImageButton, Rounding, Stroke, TextureHandle}; +use egui::{ + ImageButton, Rounding, Stroke, Vec2 +}; use tokio::{ runtime::Runtime, sync::watch::{self, Receiver}, @@ -20,19 +22,14 @@ use super::{ BACKGROUND_COLOR, BG_STROKE_COLOR, EXTRA_BACKGROUND_COLOR, LIGHT_ORANGE, ORANGE, PURLPLE, TEXT_COLOR, }, - ui_images::{get_import_image, get_logo, get_logo_icon, get_save_image}, + ui_images::get_logo_icon, ui_import_games::FetcStatus, BackupState, DiconnectState, }; const SECTION_SPACING: f32 = 25.0; -#[derive(Default)] -struct UiImages { - import_button: Option, - save_button: Option, - logo_32: Option, -} + type GamesToSync = Vec<( String, Receiver>>>, @@ -59,7 +56,6 @@ pub struct MyEguiApp { selected_menu: Menues, pub(crate) settings: Settings, pub(crate) rt: Runtime, - ui_images: UiImages, pub(crate) games_to_sync: GamesToSync, pub(crate) status_reciever: Receiver, pub(crate) image_selected_state: ImageSelectState, @@ -81,7 +77,6 @@ impl MyEguiApp { settings, rt: runtime, games_to_sync, - ui_images: UiImages::default(), status_reciever: watch::channel(SyncProgress::NotStarted).1, image_selected_state: ImageSelectState::default(), backup_state: BackupState::default(), @@ -119,22 +114,22 @@ impl MyEguiApp { } } let all_ready = all_ready(&self.games_to_sync); - let texture = self.get_import_image(ui); - let size = texture.size_vec2(); - let image_button = ImageButton::new(texture, size * 0.40); + let import_image = egui::include_image!("../../resources/import_games_button.png"); + let size = Vec2::new(200.,100.); + let image_button = ImageButton::new(import_image); if all_ready && !syncing { if ui - .add(image_button) + .add_sized(size,image_button) .on_hover_text("Import your games into steam") .clicked() { - if let Err(err) = save_settings(&self.settings, &self.platforms){ + if let Err(err) = save_settings(&self.settings, &self.platforms) { eprintln!("Failed to save settings {err:?}"); } self.run_sync_async(); } } else { - ui.add(image_button) + ui.add_sized(size,image_button) .on_hover_text("Waiting for sync to finish"); } } @@ -187,9 +182,8 @@ impl App for MyEguiApp { .default_width(40.0) .frame(frame) .show(ctx, |ui| { - let texture = self.get_logo_image(ui); - let size = texture.size_vec2(); - ui.image(texture, size); + let image = egui::include_image!("../../resources/logo32.png"); + ui.image(image); ui.add_space(SECTION_SPACING); let menu_before = self.selected_menu.clone(); @@ -258,12 +252,15 @@ impl App for MyEguiApp { egui::TopBottomPanel::new(egui::panel::TopBottomSide::Bottom, "Bottom Panel") .frame(frame) .show(ctx, |ui| { - let texture = self.get_save_image(ui); - let size = texture.size_vec2(); - let save_button = ImageButton::new(texture, size * 0.5); - - if ui.add(save_button).on_hover_text("Save settings").clicked() { - if let Err(err) = save_settings(&self.settings, &self.platforms){ + let image = egui::include_image!("../../resources/save.png"); + let size = image.texture_size().unwrap_or_default(); + let save_button = ImageButton::new(image); + if ui + .add_sized(size * 0.5, save_button) + .on_hover_text("Save settings") + .clicked() + { + if let Err(err) = save_settings(&self.settings, &self.platforms) { eprintln!("Failed to save settings: {err:?}"); } } @@ -303,36 +300,6 @@ fn create_style(style: &mut egui::Style) { style.visuals.widgets.hovered.fg_stroke = Stroke::new(2.0, LIGHT_ORANGE); style.visuals.selection.bg_fill = PURLPLE; } - -impl MyEguiApp { - fn get_import_image(&mut self, ui: &mut egui::Ui) -> &mut TextureHandle { - self.ui_images.import_button.get_or_insert_with(|| { - // Load the texture only once. - ui.ctx().load_texture( - "import_image", - get_import_image(), - egui::TextureOptions::LINEAR, - ) - }) - } - - fn get_save_image(&mut self, ui: &mut egui::Ui) -> &mut TextureHandle { - self.ui_images.save_button.get_or_insert_with(|| { - // Load the texture only once. - ui.ctx() - .load_texture("save_image", get_save_image(), egui::TextureOptions::LINEAR) - }) - } - - fn get_logo_image(&mut self, ui: &mut egui::Ui) -> &mut TextureHandle { - self.ui_images.logo_32.get_or_insert_with(|| { - // Load the texture only once. - ui.ctx() - .load_texture("logo32", get_logo(), egui::TextureOptions::LINEAR) - }) - } -} - fn setup(ctx: &egui::Context) { #[cfg(target_family = "unix")] ctx.set_pixels_per_point(0.999); @@ -340,8 +307,9 @@ fn setup(ctx: &egui::Context) { let mut style: egui::Style = (*ctx.style()).clone(); create_style(&mut style); ctx.set_style(style); + egui_extras::install_image_loaders(ctx); } -pub fn run_sync() -> eyre::Result<()>{ +pub fn run_sync() -> eyre::Result<()> { let mut app = MyEguiApp::new()?; while !all_ready(&app.games_to_sync) { println!("Finding games, trying again in 500ms"); @@ -350,15 +318,14 @@ pub fn run_sync() -> eyre::Result<()>{ app.run_sync_blocking() } -pub fn run_ui(args: Vec) -> eyre::Result<()>{ +pub fn run_ui(args: Vec) -> eyre::Result<()> { let app = MyEguiApp::new()?; let no_v_sync = args.contains(&"--no-vsync".to_string()); let fullscreen = is_fullscreen(&args); + let logo = get_logo_icon(); + let viewport = egui::ViewportBuilder { fullscreen: Some(fullscreen), icon: Some(logo.into()), ..Default::default() }; let native_options = eframe::NativeOptions { - fullscreen, - maximized: true, - //initial_window_size: Some(egui::Vec2 { x: 1280., y: 800. }), - icon_data: Some(get_logo_icon()), + viewport, vsync: !no_v_sync, ..Default::default() }; @@ -368,7 +335,8 @@ pub fn run_ui(args: Vec) -> eyre::Result<()>{ Box::new(|cc| { setup(&cc.egui_ctx); Box::new(app) - })); + }), + ); run_result.map_err(|e| eyre::eyre!("Could not initialize: {:?}", e)) }