diff --git a/Cargo.lock b/Cargo.lock index a72b038..6939aed 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,18 +4,18 @@ version = 3 [[package]] name = "addr2line" -version = "0.21.0" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" +checksum = "f5fb1d8e4442bd405fdfd1dacb42792696b0cf9cb15882e5d097b742a676d375" dependencies = [ "gimli", ] [[package]] -name = "adler" -version = "1.0.2" +name = "adler2" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" [[package]] name = "android-tzdata" @@ -43,9 +43,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.86" +version = "1.0.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" +checksum = "10f00e1f6e58a40e807377c75c6a7f97bf9044fab57816f2414e6f5f4499d7b8" [[package]] name = "async-channel" @@ -84,17 +84,17 @@ checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "backtrace" -version = "0.3.71" +version = "0.3.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26b05800d2e817c8b3b4b54abd461726265fa9789ae34330622f2db9ee696f9d" +checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" dependencies = [ "addr2line", - "cc", "cfg-if", "libc", "miniz_oxide", "object", "rustc-demangle", + "windows-targets", ] [[package]] @@ -121,9 +121,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.5.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" [[package]] name = "bumpalo" @@ -139,22 +139,21 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "cairo-rs" -version = "0.19.4" +version = "0.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2ac2a4d0e69036cf0062976f6efcba1aaee3e448594e6514bb2ddf87acce562" +checksum = "e8a0ea147c94108c9613235388f540e4d14c327f7081c9e471fc8ee8a2533e69" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "cairo-sys-rs", "glib", "libc", - "thiserror", ] [[package]] name = "cairo-sys-rs" -version = "0.19.2" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd3bb3119664efbd78b5e6c93957447944f16bdbced84c17a9f41c7829b81e64" +checksum = "428290f914b9b86089f60f5d8a9f6e440508e1bcff23b25afd51502b0a2da88f" dependencies = [ "glib-sys", "libc", @@ -163,15 +162,18 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.98" +version = "1.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41c270e7540d725e65ac7f1b212ac8ce349719624d7bcff99f8e2e488e8cf03f" +checksum = "b62ac837cdb5cb22e10a256099b4fc502b1dfe560cb282963a974d7abd80e476" +dependencies = [ + "shlex", +] [[package]] name = "cfg-expr" -version = "0.15.8" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d067ad48b8650848b989a59a86c6c36a995d02d2bf778d45c3c5d57bc2718f02" +checksum = "345c78335be0624ed29012dc10c49102196c6882c12dde65d9f35b02da2aada8" dependencies = [ "smallvec", "target-lexicon", @@ -223,9 +225,9 @@ dependencies = [ [[package]] name = "core-foundation-sys" -version = "0.8.6" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "crossbeam-utils" @@ -241,9 +243,9 @@ checksum = "56899898ce76aaf4a0f24d914c97ea6ed976d42fec6ad33fcbb0a1103e07b2b0" [[package]] name = "either" -version = "1.12.0" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dca9240753cf90908d7e4aac30f630662b02aebaa1b58a3cadabdb23385b58b" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" [[package]] name = "equivalent" @@ -262,9 +264,9 @@ dependencies = [ [[package]] name = "event-listener" -version = "5.3.0" +version = "5.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d9944b8ca13534cdfb2800775f8dd4902ff3fc75a50101466decadfdf322a24" +checksum = "6032be9bd27023a771701cc49f9f053c751055f71efb2e0ae5c15809093675ba" dependencies = [ "concurrent-queue", "parking", @@ -353,7 +355,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.65", + "syn 2.0.77", ] [[package]] @@ -378,9 +380,9 @@ dependencies = [ [[package]] name = "gdk-pixbuf" -version = "0.19.2" +version = "0.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6a23f8a0b5090494fd04924662d463f8386cc678dd3915015a838c1a3679b92" +checksum = "8730751991b97419fc3f0c2dca2c9e45b48edf46e48e0f965964ecf33889812f" dependencies = [ "gdk-pixbuf-sys", "gio", @@ -390,9 +392,9 @@ dependencies = [ [[package]] name = "gdk-pixbuf-sys" -version = "0.19.5" +version = "0.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fdbf021f8b9d19e30fb9ea6d6e5f2b6a712fe4645417c69f86f6ff1e1444a8f" +checksum = "1ffbf649fd5b1c8c0f0feeb015b7533c3ef92da2887fb95ddd338bc2b1644a7c" dependencies = [ "gio-sys", "glib-sys", @@ -403,9 +405,9 @@ dependencies = [ [[package]] name = "gdk4" -version = "0.8.2" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db265c9dd42d6a371e09e52deab3a84808427198b86ac792d75fd35c07990a07" +checksum = "4b7d7237c1487ed4b300aac7744efcbf1319e12d60d7afcd6f505414bd5b5dea" dependencies = [ "cairo-rs", "gdk-pixbuf", @@ -418,9 +420,9 @@ dependencies = [ [[package]] name = "gdk4-sys" -version = "0.8.2" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9418fb4e8a67074919fe7604429c45aa74eb9df82e7ca529767c6d4e9dc66dd" +checksum = "a67576c8ec012156d7f680e201a807b4432a77babb3157e0555e990ab6bcd878" dependencies = [ "cairo-sys-rs", "gdk-pixbuf-sys", @@ -435,9 +437,9 @@ dependencies = [ [[package]] name = "gdk4-win32" -version = "0.8.2" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3294d0d08b179198a01ac2623786e6227e3d7a98e042e26e4d020f31ba8fac41" +checksum = "05afbcc8165b10f9143d2c4e4a589fce3a5071c6b20d75dd40704266d6eb4bb4" dependencies = [ "gdk4", "gdk4-win32-sys", @@ -448,9 +450,9 @@ dependencies = [ [[package]] name = "gdk4-win32-sys" -version = "0.8.2" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6682a82d3a1616fbe17a9a757528bd3ef0ede3eab7487f0ecf6ed2a499de117d" +checksum = "198c0604ceb45732c76b1fdb696d92b99400ea3a1c549fc5e40f4d79f8033205" dependencies = [ "gdk4-sys", "glib-sys", @@ -460,15 +462,15 @@ dependencies = [ [[package]] name = "gimli" -version = "0.28.1" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" +checksum = "32085ea23f3234fc7846555e85283ba4de91e21016dc0455a16286d87a292d64" [[package]] name = "gio" -version = "0.19.5" +version = "0.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be548be810e45dd31d3bbb89c6210980bb7af9bca3ea1292b5f16b75f8e394a7" +checksum = "dcacaa37401cad0a95aadd266bc39c72a131d454fc012f6dfd217f891d76cc52" dependencies = [ "futures-channel", "futures-core", @@ -479,29 +481,28 @@ dependencies = [ "libc", "pin-project-lite", "smallvec", - "thiserror", ] [[package]] name = "gio-sys" -version = "0.19.5" +version = "0.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4bdbef451b0f0361e7f762987cc6bebd5facab1d535e85a3cf1115dfb08db40" +checksum = "5237611e97e9b86ab5768adc3eef853ae713ea797aa3835404acdfacffc9fb38" dependencies = [ "glib-sys", "gobject-sys", "libc", "system-deps", - "windows-sys", + "windows-sys 0.52.0", ] [[package]] name = "glib" -version = "0.19.6" +version = "0.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0116c428e4841cab183a32a71b900fd6712194c20f9c424f01d2c016c96bd23" +checksum = "95648aac01b75503000bb3bcaa5ec7a7a2dd61e43636b8b1814854de94dd80e4" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "futures-channel", "futures-core", "futures-executor", @@ -514,27 +515,26 @@ dependencies = [ "libc", "memchr", "smallvec", - "thiserror", ] [[package]] name = "glib-macros" -version = "0.19.5" +version = "0.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ed782fa3e949c31146671da6e7a227a5e7d354660df1db6d0aac4974dc82a3c" +checksum = "302f1d633c9cdef4350330e7b68fd8016e2834bb106c93fdf9789fcde753c1ab" dependencies = [ "heck 0.5.0", "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.65", + "syn 2.0.77", ] [[package]] name = "glib-sys" -version = "0.19.5" +version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "767d23ead9bbdfcbb1c2242c155c8128a7d13dde7bf69c176f809546135e2282" +checksum = "92eee4531c1c9abba945d19378b205031b5890e1f99c319ba0503b6e0c06a163" dependencies = [ "libc", "system-deps", @@ -542,9 +542,9 @@ dependencies = [ [[package]] name = "gobject-sys" -version = "0.19.5" +version = "0.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3787b0bfacca12bb25f8f822b0dbee9f7e4a86e6469a29976d332d2c14c945b" +checksum = "fa3d1dcd8a1eb2e7c22be3d5e792b14b186f3524f79b25631730f9a8c169d49a" dependencies = [ "glib-sys", "libc", @@ -553,9 +553,9 @@ dependencies = [ [[package]] name = "graphene-rs" -version = "0.19.2" +version = "0.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99e4d388e96c5f29e2b2f67045d229ddf826d0a8d6d282f94ed3b34452222c91" +checksum = "80aac87f74e81c0e13433e892a047237abdc37945c86887f5eed905038356e69" dependencies = [ "glib", "graphene-sys", @@ -564,9 +564,9 @@ dependencies = [ [[package]] name = "graphene-sys" -version = "0.19.5" +version = "0.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a60e7381afdd7be43bd10a89d3b6741d162aabbca3a8db73505afb6a3aea59d" +checksum = "cc2f91ecd32989efad60326cc20a8fb252bd2852239a08e4e70cde8c100de9ca" dependencies = [ "glib-sys", "libc", @@ -576,9 +576,9 @@ dependencies = [ [[package]] name = "gsk4" -version = "0.8.2" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7563884bf6939f4468e5d94654945bdd9afcaf8c3ba4c5dd17b5342b747221be" +checksum = "1f3cf2091e1af185b347b3450817d93dea6fe435df7abd4c2cd7fb5bcb4cfda8" dependencies = [ "cairo-rs", "gdk4", @@ -591,9 +591,9 @@ dependencies = [ [[package]] name = "gsk4-sys" -version = "0.8.2" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23024bf2636c38bbd1f822f58acc9d1c25b28da896ff0f291a1a232d4272b3dc" +checksum = "6aa69614a26d8760c186c3690f1b0fbb917572ca23ef83137445770ceddf8cde" dependencies = [ "cairo-sys-rs", "gdk4-sys", @@ -618,20 +618,20 @@ dependencies = [ "gstreamer", "gtk4", "lazy_static", - "log 0.4.21", + "log 0.4.22", "once_cell", "serde", "serde_any", "simplelog", "structopt", - "xml-rs 0.8.20", + "xml-rs 0.8.22", ] [[package]] name = "gst-plugin-gtk4" -version = "0.12.5" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56e483cb1452f056ae94ccd5f63bdec697e04c87b30d89eb30c3f934042e1022" +checksum = "44b3fe6a92ebf2e62366d9f2d8633cc634187bb7c40fe4db05edfb809e928197" dependencies = [ "async-channel", "gdk4-win32", @@ -642,7 +642,7 @@ dependencies = [ "gstreamer-video", "gtk4", "once_cell", - "windows-sys", + "windows-sys 0.52.0", ] [[package]] @@ -652,14 +652,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4e5e874f1660252fd2ec81c602066df3633b3a6fcbe2b196f7f93c27cf069b2a" dependencies = [ "chrono", - "toml_edit 0.22.13", + "toml_edit", ] [[package]] name = "gstreamer" -version = "0.22.4" +version = "0.23.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc6f2d7dcde4b42b5297d25e9f51914cacfa148c99ba6ddabebf006fb2b18c20" +checksum = "683e15f8cc3a1a2646d9fe2181a58b7abb4c166256d8d15cce368e420c741140" dependencies = [ "cfg-if", "futures-channel", @@ -682,9 +682,9 @@ dependencies = [ [[package]] name = "gstreamer-base" -version = "0.22.0" +version = "0.23.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "514c71195b53c7eced4842b66ca9149833e41cf6a1d949e45e2ca4a4fa929850" +checksum = "ed5d73cb5cbf229c8904fba5ff93b1863f186bccc062064c1b2a9000750cc06e" dependencies = [ "atomic_refcell", "cfg-if", @@ -696,9 +696,9 @@ dependencies = [ [[package]] name = "gstreamer-base-sys" -version = "0.22.0" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "286591e0f85bbda1adf9bab6f21d015acd9ca0a4d4acb61da65e3d0487e23c4e" +checksum = "4a6643ef963c636b8022adc93aa19eac6f356bd174a187c499339fc5d64c1e05" dependencies = [ "glib-sys", "gobject-sys", @@ -709,9 +709,9 @@ dependencies = [ [[package]] name = "gstreamer-gl" -version = "0.22.0" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d21c0c5fbf74018a0254b3ab77bca0a5b2c0f002bcfd910c09113ae90a95d98" +checksum = "cfe28e4b7c72022958add8a3d86e7293ff227a5086c426731b5ec5a15ffbc759" dependencies = [ "glib", "gstreamer", @@ -724,9 +724,9 @@ dependencies = [ [[package]] name = "gstreamer-gl-sys" -version = "0.22.0" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61d1e3b9b02abc23835e9d770f2bd705b67a50406ea37e963b4526a77c6a7cd8" +checksum = "2bc2ff7c20ae47c4a80f42a67d85d6889a5fad3bc2385aec6dc9b58795920c5b" dependencies = [ "glib-sys", "gobject-sys", @@ -739,9 +739,9 @@ dependencies = [ [[package]] name = "gstreamer-sys" -version = "0.22.2" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5ddf526b3bf90ea627224c804f00b8bcb0452e3b447978b4d5092f8e8ff5918" +checksum = "d9c9005b55dd2b1784645963c1ec409f9d420a56f6348d0ae69c2eaff584bcc3" dependencies = [ "glib-sys", "gobject-sys", @@ -751,9 +751,9 @@ dependencies = [ [[package]] name = "gstreamer-video" -version = "0.22.4" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fc0a96481ecfcdd120d5057bb7ab5a6f6cd392cc34ba1e8b86cac3ba082f788" +checksum = "57332bca1ae7825a53fe57d993b63389f132d335aed691ac76f0ffe4304548e3" dependencies = [ "cfg-if", "futures-channel", @@ -768,9 +768,9 @@ dependencies = [ [[package]] name = "gstreamer-video-sys" -version = "0.22.1" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1ea7996ba44fbbf563aeeda96e24259efc9f06b407854d837ee58e260d7ba78" +checksum = "0f5c334d143384e8dc714af948c2e5d7d12cb588fdcfb56f3bf37c24daf350ef" dependencies = [ "glib-sys", "gobject-sys", @@ -782,9 +782,9 @@ dependencies = [ [[package]] name = "gtk4" -version = "0.8.2" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b04e11319b08af11358ab543105a9e49b0c491faca35e2b8e7e36bfba8b671ab" +checksum = "f4fe572bf318e5dbc6f5a2f8a25d853f1ae3f42768c0b08af6ca20a18f4057e1" dependencies = [ "cairo-rs", "field-offset", @@ -803,21 +803,21 @@ dependencies = [ [[package]] name = "gtk4-macros" -version = "0.8.2" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec655a7ef88d8ce9592899deb8b2d0fa50bab1e6dd69182deb764e643c522408" +checksum = "e9e7b362c8fccd2712297903717d65d30defdab2b509bc9d209cbe5ffb9fabaf" dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.65", + "syn 2.0.77", ] [[package]] name = "gtk4-sys" -version = "0.8.2" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c8aa86b7f85ea71d66ea88c1d4bae1cfacf51ca4856274565133838d77e57b5" +checksum = "1114a207af8ada02cf4658a76692f4190f06f093380d5be07e3ca8b43aa7c666" dependencies = [ "cairo-sys-rs", "gdk-pixbuf-sys", @@ -898,9 +898,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.2.6" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" +checksum = "68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5" dependencies = [ "equivalent", "hashbrown", @@ -908,9 +908,9 @@ dependencies = [ [[package]] name = "itertools" -version = "0.12.1" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" dependencies = [ "either", ] @@ -929,24 +929,24 @@ checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" [[package]] name = "js-sys" -version = "0.3.69" +version = "0.3.70" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" +checksum = "1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a" dependencies = [ "wasm-bindgen", ] [[package]] name = "lazy_static" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.155" +version = "0.2.158" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" +checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439" [[package]] name = "linked-hash-map" @@ -960,14 +960,14 @@ version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e19e8d5c34a3e0e2223db8e060f9e8264aeeb5c5fc64a4ee9965c062211c024b" dependencies = [ - "log 0.4.21", + "log 0.4.22", ] [[package]] name = "log" -version = "0.4.21" +version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" [[package]] name = "matches" @@ -977,9 +977,9 @@ checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" [[package]] name = "memchr" -version = "2.7.2" +version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" [[package]] name = "memoffset" @@ -992,11 +992,11 @@ dependencies = [ [[package]] name = "miniz_oxide" -version = "0.7.3" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87dfd01fe195c66b572b37921ad8803d010623c0aca821bea2302239d155cdae" +checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" dependencies = [ - "adler", + "adler2", ] [[package]] @@ -1035,9 +1035,9 @@ dependencies = [ [[package]] name = "object" -version = "0.32.2" +version = "0.36.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" +checksum = "084f1a5821ac4c651660a94a7153d27ac9d8a53736203f58b31945ded098070a" dependencies = [ "memchr", ] @@ -1059,9 +1059,9 @@ dependencies = [ [[package]] name = "pango" -version = "0.19.5" +version = "0.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "504ce6e805439ea2c6791168fe7ef8e3da0c1b2ef82c44bc450dbc330592920d" +checksum = "5764e5a174a5a0ec054fe5962ce6d4fc7052e2d0dcc23bbc77202b40a4a403d3" dependencies = [ "gio", "glib", @@ -1071,9 +1071,9 @@ dependencies = [ [[package]] name = "pango-sys" -version = "0.19.5" +version = "0.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4829555bdbb83692ddeaf5a6927fb2d025c8131e5ecaa4f7619fff6985d3505" +checksum = "fd317e1de76b14b3d3efe05518c08b360327f1ab7fec150473a89ffcad4b072d" dependencies = [ "glib-sys", "gobject-sys", @@ -1083,9 +1083,9 @@ dependencies = [ [[package]] name = "parking" -version = "2.2.0" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae" +checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" [[package]] name = "paste" @@ -1119,11 +1119,11 @@ checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" [[package]] name = "proc-macro-crate" -version = "3.1.0" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" +checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" dependencies = [ - "toml_edit 0.21.1", + "toml_edit", ] [[package]] @@ -1152,18 +1152,18 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.83" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b33eb56c327dec362a9e55b3ad14f9d2f0904fb5a5b03b513ab5465399e9f43" +checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" dependencies = [ "unicode-ident", ] [[package]] name = "quote" -version = "1.0.36" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" dependencies = [ "proc-macro2", ] @@ -1187,9 +1187,9 @@ checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" [[package]] name = "rustc_version" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ "semver", ] @@ -1214,9 +1214,9 @@ checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" [[package]] name = "serde" -version = "1.0.202" +version = "1.0.210" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "226b61a0d411b2ba5ff6d7f73a476ac4f8bb900373459cd00fab8512828ba395" +checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" dependencies = [ "serde_derive", ] @@ -1251,31 +1251,32 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.202" +version = "1.0.210" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6048858004bcff69094cd972ed40a32500f153bd3be9f716b2eed2e8217c4838" +checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.65", + "syn 2.0.77", ] [[package]] name = "serde_json" -version = "1.0.117" +version = "1.0.128" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "455182ea6142b14f93f4bc5320a2b31c1f266b66a4a5c858b013302a5d8cbfc3" +checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" dependencies = [ "itoa 1.0.11", + "memchr", "ryu", "serde", ] [[package]] name = "serde_spanned" -version = "0.6.6" +version = "0.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79e674e01f999af37c49f70a6ede167a8a60b2503e56c5599532a65baa5969a0" +checksum = "eb5b1b31579f3811bf615c144393417496f152e12ac8b7663bf664f4a815306d" dependencies = [ "serde", ] @@ -1304,6 +1305,12 @@ dependencies = [ "yaml-rust", ] +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + [[package]] name = "simplelog" version = "0.11.2" @@ -1311,7 +1318,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c1348164456f72ca0116e4538bdaabb0ddb622c7d9f16387c725af3e96d6001c" dependencies = [ "chrono", - "log 0.4.21", + "log 0.4.22", "termcolor", ] @@ -1373,9 +1380,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.65" +version = "2.0.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2863d96a84c6439701d7a38f9de935ec562c8832cc55d1dde0f513b52fad106" +checksum = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed" dependencies = [ "proc-macro2", "quote", @@ -1396,22 +1403,22 @@ dependencies = [ [[package]] name = "system-deps" -version = "6.2.2" +version = "7.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e535eb8dded36d55ec13eddacd30dec501792ff23a0b1682c38601b8cf2349" +checksum = "070a0a5e7da2d24be457809c4b3baa57a835fd2829ad8b86f9a049052fe71031" dependencies = [ "cfg-expr", "heck 0.5.0", "pkg-config", - "toml 0.8.13", + "toml 0.8.19", "version-compare", ] [[package]] name = "target-lexicon" -version = "0.12.14" +version = "0.12.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f" +checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" [[package]] name = "termcolor" @@ -1433,29 +1440,29 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.61" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709" +checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.61" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" +checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" dependencies = [ "proc-macro2", "quote", - "syn 2.0.65", + "syn 2.0.77", ] [[package]] name = "tinyvec" -version = "1.6.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" dependencies = [ "tinyvec_macros", ] @@ -1477,47 +1484,36 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.13" +version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4e43f8cc456c9704c851ae29c67e17ef65d2c30017c17a9765b89c382dc8bba" +checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.22.13", + "toml_edit", ] [[package]] name = "toml_datetime" -version = "0.6.6" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4badfd56924ae69bcc9039335b2e017639ce3f9b001c393c1b2d1ef846ce2cbf" +checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" dependencies = [ "serde", ] [[package]] name = "toml_edit" -version = "0.21.1" +version = "0.22.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" -dependencies = [ - "indexmap", - "toml_datetime", - "winnow 0.5.40", -] - -[[package]] -name = "toml_edit" -version = "0.22.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c127785850e8c20836d49732ae6abfa47616e60bf9d9f57c43c250361a9db96c" +checksum = "583c44c02ad26b0c3f3066fe629275e50627026c51ac2e595cca4c230ce1ce1d" dependencies = [ "indexmap", "serde", "serde_spanned", "toml_datetime", - "winnow 0.6.8", + "winnow", ] [[package]] @@ -1549,15 +1545,15 @@ checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" [[package]] name = "unicode-width" -version = "0.1.12" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68f5e5f3158ecfd4b8ff6fe086db7c8467a2dfdac97fe420f2b7c4aa97af66d6" +checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" [[package]] name = "unicode-xid" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" +checksum = "229730647fbc343e3a80e463c1db7f78f3855d3f3739bee0dda773c9a037c90a" [[package]] name = "url" @@ -1584,40 +1580,41 @@ checksum = "852e951cb7832cb45cb1169900d19760cfa39b82bc0ea9c0e5a14ae88411c98b" [[package]] name = "version_check" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "wasm-bindgen" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" +checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5" dependencies = [ "cfg-if", + "once_cell", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" +checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b" dependencies = [ "bumpalo", - "log 0.4.21", + "log 0.4.22", "once_cell", "proc-macro2", "quote", - "syn 2.0.65", + "syn 2.0.77", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" +checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -1625,22 +1622,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" +checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" dependencies = [ "proc-macro2", "quote", - "syn 2.0.65", + "syn 2.0.77", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" +checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484" [[package]] name = "winapi" @@ -1660,11 +1657,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ - "windows-sys", + "windows-sys 0.59.0", ] [[package]] @@ -1692,10 +1689,19 @@ dependencies = [ ] [[package]] -name = "windows-targets" -version = "0.52.5" +name = "windows-sys" +version = "0.59.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ "windows_aarch64_gnullvm", "windows_aarch64_msvc", @@ -1709,66 +1715,57 @@ dependencies = [ [[package]] name = "windows_aarch64_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] name = "windows_aarch64_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] name = "windows_i686_gnu" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" [[package]] name = "windows_i686_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] name = "windows_i686_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] name = "windows_x86_64_gnu" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] name = "windows_x86_64_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winnow" -version = "0.5.40" +version = "0.6.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" -dependencies = [ - "memchr", -] - -[[package]] -name = "winnow" -version = "0.6.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3c52e9c97a68071b23e836c9380edae937f17b9c4667bd021973efc689f618d" +checksum = "68a9bda4691f099d435ad181000724da8e5899daa10713c2d432552b9ccd3a6f" dependencies = [ "memchr", ] @@ -1784,9 +1781,9 @@ dependencies = [ [[package]] name = "xml-rs" -version = "0.8.20" +version = "0.8.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "791978798f0597cfc70478424c2b4fdc2b7a8024aaff78497ef00f24ef674193" +checksum = "af4e2e2f7cba5a093896c1e150fbfe177d1883e7448200efb81d40b9d339ef26" [[package]] name = "yaml-rust" diff --git a/Cargo.toml b/Cargo.toml index a4ba7a6..3d4196a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,9 +7,9 @@ rust-version = "1.70.0" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -gtk = { version = "0.8.2", package = "gtk4" } -gst = { package = "gstreamer", version = "0.22.2" } -gst-plugin-gtk4 = { version = "0.12.1", optional=true } +gtk = { version = "0.9.1", package = "gtk4" } +gst = { package = "gstreamer", version = "0.23.1" } +gst-plugin-gtk4 = { version = "0.13.1", optional=true } anyhow = "1" log = "0.4.11" once_cell = "1.7.2" diff --git a/src/graphbook.rs b/src/graphbook.rs index b8bbae3..6285d6a 100644 --- a/src/graphbook.rs +++ b/src/graphbook.rs @@ -208,10 +208,14 @@ pub fn create_graphtab(app: &GPSApp, id: u32, name: Option<&str>) { close_button.add_css_class("image-button"); close_button.add_css_class("flat"); let app_weak = app.downgrade(); - close_button.connect_clicked(glib::clone!(@weak graphbook => move |_| { - let app = upgrade_weak!(app_weak); - graphbook.remove_page(Some(current_graphtab(&app).id())); - })); + close_button.connect_clicked(glib::clone!( + #[weak] + graphbook, + move |_| { + let app = upgrade_weak!(app_weak); + graphbook.remove_page(Some(current_graphtab(&app).id())); + } + )); tab_box.append(&close_button); graphbook.append_page(&scrollwindow, Some(&tab_box)); graphbook.set_tab_reorderable(&scrollwindow, true); @@ -219,7 +223,7 @@ pub fn create_graphtab(app: &GPSApp, id: u32, name: Option<&str>) { gt.graphview().connect_local( "graph-updated", false, - glib::clone!(@weak graphbook => @default-return None, move |values: &[Value]| { + glib::clone!(move |values: &[Value]| { let app = upgrade_weak!(app_weak, None); let id = values[1].get::().expect("id in args[1]"); GPS_DEBUG!("Graph updated id={}", id); @@ -238,7 +242,7 @@ pub fn create_graphtab(app: &GPSApp, id: u32, name: Option<&str>) { gt.graphview().connect_local( "node-added", false, - glib::clone!(@weak graphbook => @default-return None, move |values: &[Value]| { + glib::clone!(move |values: &[Value]| { let app = upgrade_weak!(app_weak, None); let graph_id = values[1].get::().expect("graph id in args[1]"); let node_id = values[2].get::().expect("node id in args[2]"); @@ -246,12 +250,16 @@ pub fn create_graphtab(app: &GPSApp, id: u32, name: Option<&str>) { if let Some(node) = current_graphtab(&app).graphview().node(node_id) { let description = GPS::ElementInfo::element_description(&node.name()).ok(); node.set_tooltip_markup(description.as_deref()); - if !GPS::ElementInfo::element_factory_exists(&node.name()) { + if !GPS::ElementInfo::element_factory_exists(&node.name()) { node.set_light(true); } for port in node.all_ports(GM::PortDirection::All) { - let caps = PropertyExt::property(&port,"_caps"); - GPS_DEBUG!("caps={} for port id {}", caps.clone().unwrap_or_else(|| "caps unknown".to_string()), port.id()); + let caps = PropertyExt::property(&port, "_caps"); + GPS_DEBUG!( + "caps={} for port id {}", + caps.clone().unwrap_or_else(|| "caps unknown".to_string()), + port.id() + ); port.set_tooltip_markup(caps.as_deref()); } } @@ -263,16 +271,25 @@ pub fn create_graphtab(app: &GPSApp, id: u32, name: Option<&str>) { gt.graphview().connect_local( "port-added", false, - glib::clone!(@weak graphbook => @default-return None, move |values: &[Value]| { + glib::clone!(move |values: &[Value]| { let app = upgrade_weak!(app_weak, None); let graph_id = values[1].get::().expect("graph id in args[1]"); let node_id = values[2].get::().expect("node id in args[2]"); let port_id = values[3].get::().expect("port id in args[3]"); - GPS_DEBUG!("Port added port id={} to node id={} in graph id={}", port_id, node_id, graph_id); + GPS_DEBUG!( + "Port added port id={} to node id={} in graph id={}", + port_id, + node_id, + graph_id + ); if let Some(node) = current_graphtab(&app).graphview().node(node_id) { if let Some(port) = node.port(port_id) { let caps = PropertyExt::property(&port, "_caps"); - GPS_DEBUG!("caps={} for port id {}", caps.clone().unwrap_or_else(|| "caps unknown".to_string()), port.id()); + GPS_DEBUG!( + "caps={} for port id {}", + caps.clone().unwrap_or_else(|| "caps unknown".to_string()), + port.id() + ); port.set_tooltip_markup(caps.as_deref()); } } @@ -281,49 +298,61 @@ pub fn create_graphtab(app: &GPSApp, id: u32, name: Option<&str>) { ); // When user clicks on port with right button let app_weak = app.downgrade(); - gt.graphview() - .connect_local( - "graph-right-clicked", - false, - glib::clone!(@weak graphbook => @default-return None, move |values: &[Value]| { - let app = upgrade_weak!(app_weak, None); - let point = values[1].get::().expect("point in args[2]"); - let pop_menu = app.app_pop_menu_at_position(&*current_graphtab(&app).graphview(), point.to_vec2().x() as f64, point.to_vec2().y() as f64); - let menu: gio::MenuModel = app + gt.graphview().connect_local( + "graph-right-clicked", + false, + glib::clone!(move |values: &[Value]| { + let app = upgrade_weak!(app_weak, None); + let point = values[1] + .get::() + .expect("point in args[2]"); + let pop_menu = app.app_pop_menu_at_position( + &*current_graphtab(&app).graphview(), + point.to_vec2().x() as f64, + point.to_vec2().y() as f64, + ); + let menu: gio::MenuModel = app .builder .object("graph_menu") .expect("Couldn't graph_menu"); - pop_menu.set_menu_model(Some(&menu)); - let app_weak = app.downgrade(); - app.connect_app_menu_action("graph.clear", - move |_,_| { - let app = upgrade_weak!(app_weak); - current_graphtab(&app).graphview().clear(); - } - ); - let app_weak = app.downgrade(); - app.connect_app_menu_action("graph.check", - move |_,_| { - let app = upgrade_weak!(app_weak); - let render_parse_launch = current_graphtab(&app).player().pipeline_description_from_graphview(¤t_graphtab(&app).graphview()); - if current_graphtab(&app).player().create_pipeline(&render_parse_launch).is_ok() { - GPSUI::message::display_message_dialog(&render_parse_launch,gtk::MessageType::Info, |_| {}); - } else { - GPSUI::message::display_error_dialog(false, &format!("Unable to render:\n\n{render_parse_launch}")); - } - } - ); - let app_weak = app.downgrade(); - app.connect_app_menu_action("graph.pipeline_details", - move |_,_| { - let app = upgrade_weak!(app_weak); - GPSUI::properties::display_pipeline_details(&app); - } - ); - pop_menu.show(); - None - }), - ); + pop_menu.set_menu_model(Some(&menu)); + let app_weak = app.downgrade(); + app.connect_app_menu_action("graph.clear", move |_, _| { + let app = upgrade_weak!(app_weak); + current_graphtab(&app).graphview().clear(); + }); + let app_weak = app.downgrade(); + app.connect_app_menu_action("graph.check", move |_, _| { + let app = upgrade_weak!(app_weak); + let render_parse_launch = current_graphtab(&app) + .player() + .pipeline_description_from_graphview(¤t_graphtab(&app).graphview()); + if current_graphtab(&app) + .player() + .create_pipeline(&render_parse_launch) + .is_ok() + { + GPSUI::message::display_message_dialog( + &render_parse_launch, + gtk::MessageType::Info, + |_| {}, + ); + } else { + GPSUI::message::display_error_dialog( + false, + &format!("Unable to render:\n\n{render_parse_launch}"), + ); + } + }); + let app_weak = app.downgrade(); + app.connect_app_menu_action("graph.pipeline_details", move |_, _| { + let app = upgrade_weak!(app_weak); + GPSUI::properties::display_pipeline_details(&app); + }); + pop_menu.show(); + None + }), + ); // When user clicks on port with right button let app_weak = app.downgrade(); @@ -382,92 +411,101 @@ pub fn create_graphtab(app: &GPSApp, id: u32, name: Option<&str>) { // When user clicks on node with right button let app_weak = app.downgrade(); - gt.graphview() - .connect_local( - "node-right-clicked", - false, - glib::clone!(@weak graphbook => @default-return None, move |values: &[Value]| { - let app = upgrade_weak!(app_weak, None); - let node_id = values[1].get::().expect("node id args[1]"); - let node = current_graphtab(&app).graphview().node(node_id).unwrap(); - let element_exists = GPS::ElementInfo::element_factory_exists(&node.name()); - let point = values[2].get::().expect("point in args[2]"); - let pop_menu = app.app_pop_menu_at_position(&*current_graphtab(&app).graphview(), point.to_vec2().x() as f64, point.to_vec2().y() as f64); - let menu: gio::MenuModel = app - .builder - .object("node_menu") - .expect("Couldn't get menu model for node"); - pop_menu.set_menu_model(Some(&menu)); + gt.graphview().connect_local( + "node-right-clicked", + false, + glib::clone!(move |values: &[Value]| { + let app = upgrade_weak!(app_weak, None); + let node_id = values[1].get::().expect("node id args[1]"); + let node = current_graphtab(&app).graphview().node(node_id).unwrap(); + let element_exists = GPS::ElementInfo::element_factory_exists(&node.name()); + let point = values[2] + .get::() + .expect("point in args[2]"); + let pop_menu = app.app_pop_menu_at_position( + &*current_graphtab(&app).graphview(), + point.to_vec2().x() as f64, + point.to_vec2().y() as f64, + ); + let menu: gio::MenuModel = app + .builder + .object("node_menu") + .expect("Couldn't get menu model for node"); + pop_menu.set_menu_model(Some(&menu)); + let app_weak = app.downgrade(); + app.connect_app_menu_action("node.delete", move |_, _| { + let app = upgrade_weak!(app_weak); + GPS_DEBUG!("node.delete id: {}", node_id); + current_graphtab(&app).graphview().remove_node(node_id); + }); + if element_exists { + let app_weak = app.downgrade(); + app.connect_app_menu_action("node.add-to-favorite", move |_, _| { + let app = upgrade_weak!(app_weak); + GPS_DEBUG!("node.add-to-favorite id: {}", node_id); + if let Some(node) = current_graphtab(&app).graphview().node(node_id) { + GPSUI::elements::add_to_favorite_list(&app, node.name()); + }; + }); + + let node = app.node(node_id); + if let Some(input) = GPS::ElementInfo::element_supports_new_pad_request( + &node.name(), + GM::PortDirection::Input, + ) { + let app_weak = app.downgrade(); + app.connect_app_menu_action("node.request-pad-input", move |_, _| { + let app = upgrade_weak!(app_weak); + GPS_DEBUG!("node.request-pad-input id: {}", node_id); + app.create_port_with_caps( + node_id, + GM::PortDirection::Input, + GM::PortPresence::Sometimes, + input.caps().to_string(), + ); + }); + } else { + app.disconnect_app_menu_action("node.request-pad-input"); + } + let node = app.node(node_id); + if let Some(output) = GPS::ElementInfo::element_supports_new_pad_request( + &node.name(), + GM::PortDirection::Output, + ) { + let app_weak = app.downgrade(); + app.connect_app_menu_action("node.request-pad-output", move |_, _| { + let app = upgrade_weak!(app_weak); + GPS_DEBUG!("node.request-pad-output id: {}", node_id); + app.create_port_with_caps( + node_id, + GM::PortDirection::Output, + GM::PortPresence::Sometimes, + output.caps().to_string(), + ); + }); + } else { + app.disconnect_app_menu_action("node.request-pad-output"); + } let app_weak = app.downgrade(); - app.connect_app_menu_action("node.delete", - move |_,_| { - let app = upgrade_weak!(app_weak); - GPS_DEBUG!("node.delete id: {}", node_id); - current_graphtab(&app).graphview().remove_node(node_id); - } - ); - if element_exists { - let app_weak = app.downgrade(); - app.connect_app_menu_action("node.add-to-favorite", - move |_,_| { - let app = upgrade_weak!(app_weak); - GPS_DEBUG!("node.add-to-favorite id: {}", node_id); - if let Some(node) = current_graphtab(&app).graphview().node(node_id) { - GPSUI::elements::add_to_favorite_list(&app, node.name()); - }; - } - ); - - - let node = app.node(node_id); - if let Some(input) = GPS::ElementInfo::element_supports_new_pad_request(&node.name(), GM::PortDirection::Input) { - let app_weak = app.downgrade(); - app.connect_app_menu_action("node.request-pad-input", - move |_,_| { - let app = upgrade_weak!(app_weak); - GPS_DEBUG!("node.request-pad-input id: {}", node_id); - app.create_port_with_caps(node_id, GM::PortDirection::Input, GM::PortPresence::Sometimes, input.caps().to_string()); - } - ); - } else { - app.disconnect_app_menu_action("node.request-pad-input"); - } - let node = app.node(node_id); - if let Some(output) = GPS::ElementInfo::element_supports_new_pad_request(&node.name(), GM::PortDirection::Output) { - let app_weak = app.downgrade(); - app.connect_app_menu_action("node.request-pad-output", - move |_,_| { - let app = upgrade_weak!(app_weak); - GPS_DEBUG!("node.request-pad-output id: {}", node_id); - app.create_port_with_caps(node_id, GM::PortDirection::Output, GM::PortPresence::Sometimes, output.caps().to_string()); - } - ); - } else { - app.disconnect_app_menu_action("node.request-pad-output"); - } - - let app_weak = app.downgrade(); - app.connect_app_menu_action("node.properties", - move |_,_| { - let app = upgrade_weak!(app_weak); - GPS_DEBUG!("node.properties id {}", node_id); - let node = current_graphtab(&app).graphview().node(node_id).unwrap(); - GPSUI::properties::display_plugin_properties(&app, &node.name(), node_id); - } - ); - } - pop_menu.show(); - None - }), - ); + app.connect_app_menu_action("node.properties", move |_, _| { + let app = upgrade_weak!(app_weak); + GPS_DEBUG!("node.properties id {}", node_id); + let node = current_graphtab(&app).graphview().node(node_id).unwrap(); + GPSUI::properties::display_plugin_properties(&app, &node.name(), node_id); + }); + } + pop_menu.show(); + None + }), + ); let app_weak = app.downgrade(); gt.graphview().connect_local( "node-double-clicked", false, - glib::clone!(@weak graphbook => @default-return None, move |values: &[Value]| { + glib::clone!(move |values: &[Value]| { let app = upgrade_weak!(app_weak, None); let node_id = values[1].get::().expect("node id args[1]"); GPS_TRACE!("Node double clicked id={}", node_id); @@ -482,7 +520,7 @@ pub fn create_graphtab(app: &GPSApp, id: u32, name: Option<&str>) { gt.graphview().connect_local( "link-double-clicked", false, - glib::clone!(@weak graphbook => @default-return None, move |values: &[Value]| { + glib::clone!(move |values: &[Value]| { let app = upgrade_weak!(app_weak, None); let link_id = values[1].get::().expect("link id args[1]"); GPS_TRACE!("link double clicked id={}", link_id); @@ -493,7 +531,9 @@ pub fn create_graphtab(app: &GPSApp, id: u32, name: Option<&str>) { &link.name(), &app, move |app, link_desc| { - current_graphtab(&app).graphview().set_link_name(link.id(), link_desc.as_str()); + current_graphtab(&app) + .graphview() + .set_link_name(link.id(), link_desc.as_str()); GPS_DEBUG!("link double clicked id={} name={}", link.id(), link.name()); }, ); diff --git a/src/ui/dialog.rs b/src/ui/dialog.rs index 874292b..ac350de 100644 --- a/src/ui/dialog.rs +++ b/src/ui/dialog.rs @@ -23,10 +23,14 @@ pub fn create_dialog( dialog.set_default_size(640, 480); dialog.set_modal(true); let app_weak = app.downgrade(); - dialog.connect_response(glib::clone!(@weak dialog => move |_,_| { - let app = upgrade_weak!(app_weak); - f(app, dialog) - })); + dialog.connect_response(glib::clone!( + #[weak] + dialog, + move |_, _| { + let app = upgrade_weak!(app_weak); + f(app, dialog) + } + )); let scrolledwindow = gtk::ScrolledWindow::builder() .hexpand(true) @@ -84,13 +88,17 @@ pub fn create_input_dialog( content_area.append(&label); content_area.append(&entry); let app_weak = app.downgrade(); - dialog.connect_response(glib::clone!(@weak entry => move |dialog, response_type| { - let app = upgrade_weak!(app_weak); - if response_type == gtk::ResponseType::Apply { - f(app, entry.text().to_string()); + dialog.connect_response(glib::clone!( + #[weak] + entry, + move |dialog, response_type| { + let app = upgrade_weak!(app_weak); + if response_type == gtk::ResponseType::Apply { + f(app, entry.text().to_string()); + } + dialog.close() } - dialog.close() - })); + )); dialog.show(); } diff --git a/src/ui/elements.rs b/src/ui/elements.rs index def49aa..fb17c92 100644 --- a/src/ui/elements.rs +++ b/src/ui/elements.rs @@ -54,36 +54,34 @@ pub fn setup_favorite_list(app: &GPSApp) { let gesture = gtk::GestureClick::new(); gesture.set_button(0); let app_weak = app.downgrade(); - gesture.connect_pressed( - glib::clone!(@weak favorite_list => move |gesture, _n_press, x, y| { + gesture.connect_pressed(glib::clone!( + #[weak] + favorite_list, + move |gesture, _n_press, x, y| { let app = upgrade_weak!(app_weak); if gesture.current_button() == BUTTON_SECONDARY { let selection = favorite_list.selection(); if let Some((model, iter)) = selection.selected() { - let element_name = model - .get::(&iter, 0); + let element_name = model.get::(&iter, 0); GPS_DEBUG!("Element {} selected", element_name); let pop_menu = app.app_pop_menu_at_position(&favorite_list, x, y); let menu: gio::MenuModel = app - .builder - .object("fav_menu") - .expect("Couldn't get fav_menu model"); + .builder + .object("fav_menu") + .expect("Couldn't get fav_menu model"); pop_menu.set_menu_model(Some(&menu)); - app.connect_app_menu_action("favorite.remove", - move |_,_| { - Settings::remove_favorite(&element_name); - reset_favorite_list(&favorite_list); - } - ); + app.connect_app_menu_action("favorite.remove", move |_, _| { + Settings::remove_favorite(&element_name); + reset_favorite_list(&favorite_list); + }); pop_menu.show(); } - } - }), - ); + } + )); favorite_list.add_controller(gesture); } diff --git a/src/ui/logger.rs b/src/ui/logger.rs index 6930261..be03818 100644 --- a/src/ui/logger.rs +++ b/src/ui/logger.rs @@ -55,27 +55,27 @@ pub fn setup_logger_list(app: &GPSApp, logger_name: &str, log_type: logger::LogT let gesture = gtk::GestureClick::new(); gesture.set_button(0); let app_weak = app.downgrade(); - gesture.connect_pressed( - glib::clone!(@weak logger_list => move |gesture, _n_press, x, y| { + gesture.connect_pressed(glib::clone!( + #[weak] + logger_list, + move |gesture, _n_press, x, y| { let app = upgrade_weak!(app_weak); if gesture.current_button() == gtk::gdk::BUTTON_SECONDARY { - let pop_menu = app.app_pop_menu_at_position(&logger_list, x, y); - let menu: gio::MenuModel = app + let pop_menu = app.app_pop_menu_at_position(&logger_list, x, y); + let menu: gio::MenuModel = app .builder .object("logger_menu") .expect("Couldn't get fav_menu model"); - pop_menu.set_menu_model(Some(&menu)); + pop_menu.set_menu_model(Some(&menu)); - app.connect_app_menu_action("logger.clear", - move |_,_| { - reset_logger_list(&logger_list); - } - ); + app.connect_app_menu_action("logger.clear", move |_, _| { + reset_logger_list(&logger_list); + }); - pop_menu.show(); + pop_menu.show(); } - }), - ); + } + )); logger_list.add_controller(gesture); } diff --git a/src/ui/preferences.rs b/src/ui/preferences.rs index cf7b41b..ba09ae8 100644 --- a/src/ui/preferences.rs +++ b/src/ui/preferences.rs @@ -41,9 +41,11 @@ pub fn display_settings(app: &GPSApp) { .parse::() .expect("Should a boolean value"), ); - widget.connect_toggled(glib::clone!(@weak widget => move |c| { + widget.connect_toggled(glib::clone!(move |c| { let mut settings = settings::Settings::load_settings(); - settings.preferences.insert("use_gtk4_sink".to_string(), c.is_active().to_string()); + settings + .preferences + .insert("use_gtk4_sink".to_string(), c.is_active().to_string()); settings::Settings::save_settings(&settings); })); @@ -66,9 +68,11 @@ pub fn display_settings(app: &GPSApp) { .parse::() .expect("Should a f64 value"), ); - widget.connect_value_changed(glib::clone!(@weak widget => move |c| { + widget.connect_value_changed(glib::clone!(move |c| { let mut settings = settings::Settings::load_settings(); - settings.preferences.insert("log_level".to_string(), c.value().to_string()); + settings + .preferences + .insert("log_level".to_string(), c.value().to_string()); logger::set_log_level(logger::LogLevel::from_u32(c.value() as u32)); settings::Settings::save_settings(&settings); })); @@ -84,9 +88,11 @@ pub fn display_settings(app: &GPSApp) { let widget = gtk::Entry::new(); widget.set_text(settings::Settings::gst_log_level().as_str()); - widget.connect_changed(glib::clone!(@weak widget => move |c| { + widget.connect_changed(glib::clone!(move |c| { let mut settings = settings::Settings::load_settings(); - settings.preferences.insert("gst_log_level".to_string(), c.text().to_string()); + settings + .preferences + .insert("gst_log_level".to_string(), c.text().to_string()); settings::Settings::save_settings(&settings); })); let widget = widget diff --git a/src/ui/properties.rs b/src/ui/properties.rs index 8a3e20c..2d7ac57 100644 --- a/src/ui/properties.rs +++ b/src/ui/properties.rs @@ -46,8 +46,8 @@ pub fn property_to_widget( } else if let Some(value) = common::value_as_str(param.default_value()) { check_button.set_active(value.parse::().unwrap_or(false)); } - check_button.connect_toggled(glib::clone!(@weak check_button => move |c| { - f(c.widget_name().to_string(), c.is_active().to_string() ); + check_button.connect_toggled(glib::clone!(move |c| { + f(c.widget_name().to_string(), c.is_active().to_string()); })); Some(check_button.upcast::()) } @@ -79,7 +79,7 @@ pub fn property_to_widget( entry.set_text(&value); } - entry.connect_changed(glib::clone!(@weak entry=> move |e| { + entry.connect_changed(glib::clone!(move |e| { f(e.widget_name().to_string(), e.text().to_string()) })); Some(entry.upcast::()) @@ -182,10 +182,14 @@ pub fn display_plugin_properties(app: &GPSApp, element_name: &str, node_id: u32) element_name, name, param, - glib::clone!(@strong update_properties => move |name, value| { - GPS_INFO!("property changed: {}:{}", name, value); - update_properties.borrow_mut().insert(name, value); - }), + glib::clone!( + #[strong] + update_properties, + move |name, value| { + GPS_INFO!("property changed: {}:{}", name, value); + update_properties.borrow_mut().insert(name, value); + } + ), ); if let Some(widget) = widget { let label = gtk::Label::builder() @@ -204,10 +208,14 @@ pub fn display_plugin_properties(app: &GPSApp, element_name: &str, node_id: u32) &format!("{element_name} properties"), app, &grid, - glib::clone!(@strong update_properties => move |app, dialog| { - app.update_element_properties(node_id, &update_properties.borrow()); - dialog.close(); - }), + glib::clone!( + #[strong] + update_properties, + move |app, dialog| { + app.update_element_properties(node_id, &update_properties.borrow()); + dialog.close(); + } + ), ); dialog.show(); @@ -240,11 +248,20 @@ pub fn display_pad_properties( let property_value = gtk::Entry::new(); property_value.set_width_request(150); property_value.set_text(&value); - property_value.connect_changed( - glib::clone!(@weak property_name, @weak property_value, @strong update_properties=> move |_| { - update_properties.borrow_mut().insert(property_name.text().to_string(), property_value.text().to_string()); - }), - ); + property_value.connect_changed(glib::clone!( + #[weak] + property_name, + #[weak] + property_value, + #[strong] + update_properties, + move |_| { + update_properties.borrow_mut().insert( + property_name.text().to_string(), + property_value.text().to_string(), + ); + } + )); grid.attach(&property_name, 0, i, 1, 1); grid.attach(&property_value, 1, i, 1, 1); i += 1; @@ -263,17 +280,35 @@ pub fn display_pad_properties( let property_value = gtk::Entry::new(); property_value.set_width_request(150); - property_name.connect_changed( - glib::clone!(@weak property_name, @weak property_value, @strong update_properties=> move |_| { - update_properties.borrow_mut().insert(property_name.text().to_string(), property_value.text().to_string()); - }), - ); + property_name.connect_changed(glib::clone!( + #[weak] + property_name, + #[weak] + property_value, + #[strong] + update_properties, + move |_| { + update_properties.borrow_mut().insert( + property_name.text().to_string(), + property_value.text().to_string(), + ); + } + )); - property_value.connect_changed( - glib::clone!(@weak property_name, @weak property_value, @strong update_properties=> move |_| { - update_properties.borrow_mut().insert(property_name.text().to_string(), property_value.text().to_string()); - }), - ); + property_value.connect_changed(glib::clone!( + #[weak] + property_name, + #[weak] + property_value, + #[strong] + update_properties, + move |_| { + update_properties.borrow_mut().insert( + property_name.text().to_string(), + property_value.text().to_string(), + ); + } + )); grid.attach(&label, 0, i, 1, 1); grid.attach(&property_name, 1, i, 1, 1); grid.attach(&property_value, 2, i, 1, 1); @@ -284,13 +319,17 @@ pub fn display_pad_properties( &format!("{port_name} properties from {element_name}"), app, &grid, - glib::clone!(@strong update_properties => move |app, dialog| { - for p in update_properties.borrow().values() { - GPS_INFO!("updated properties {}", p); + glib::clone!( + #[strong] + update_properties, + move |app, dialog| { + for p in update_properties.borrow().values() { + GPS_INFO!("updated properties {}", p); + } + app.update_pad_properties(node_id, port_id, &update_properties.borrow()); + dialog.close(); } - app.update_pad_properties(node_id, port_id, &update_properties.borrow()); - dialog.close(); - }), + ), ); dialog.show();