diff --git a/Cargo.lock b/Cargo.lock index c091f2f..d46c1a9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -22,15 +22,15 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.68" +version = "1.0.70" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cb2f989d18dd141ab8ae82f64d1a8cdd37e0840f73a406896cf5e99502fab61" +checksum = "7de8ce5e0f9f8d88245311066a578d72b7af3e7088f32783804676302df237e4" [[package]] name = "atomic_refcell" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73b5e5f48b927f04e952dedc932f31995a65a0bf65ec971c74436e51bf6e970d" +checksum = "857253367827bd9d0fd973f0ef15506a96e79e41b0ad7aa691203a4e3214f6c8" [[package]] name = "autocfg" @@ -40,9 +40,9 @@ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "base64" -version = "0.13.1" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" +checksum = "a4a4ddaa51a5bc52a6948f74c06d20aaaddb71924eab79b8c97a8c556e942d6a" [[package]] name = "bitflags" @@ -58,28 +58,28 @@ checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" [[package]] name = "block-buffer" -version = "0.10.3" +version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69cce20737498f97b993470a6e536b8523f0af7892a4f928cceb1ac5e52ebe7e" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" dependencies = [ "generic-array", ] [[package]] name = "bumpalo" -version = "3.11.1" +version = "3.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "572f695136211188308f16ad2ca5c851a712c464060ae6974944458eb83880ba" +checksum = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535" [[package]] name = "cairo-rs" -version = "0.16.7" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3125b15ec28b84c238f6f476c6034016a5f6cc0221cb514ca46c532139fc97d" +checksum = "a8af54f5d48af1226928adc1f57edd22f5df1349e7da1fc96ae15cf43db0e871" dependencies = [ "bitflags", "cairo-sys-rs", - "glib 0.16.7", + "glib 0.17.5", "libc", "once_cell", "thiserror", @@ -87,26 +87,26 @@ dependencies = [ [[package]] name = "cairo-sys-rs" -version = "0.16.3" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c48f4af05fabdcfa9658178e1326efa061853f040ce7d72e33af6885196f421" +checksum = "f55382a01d30e5e53f185eee269124f5e21ab526595b872751278dfbb463594e" dependencies = [ - "glib-sys 0.16.3", + "glib-sys 0.17.4", "libc", "system-deps", ] [[package]] name = "cc" -version = "1.0.78" +version = "1.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a20104e2335ce8a659d6dd92a51a767a0c062599c73b343fd152cb401e828c3d" +checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" [[package]] name = "cfg-expr" -version = "0.11.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0357a6402b295ca3a86bc148e84df46c02e41f41fef186bda662557ef6328aa" +checksum = "a35b255461940a32985c627ce82900867c61db1659764d3675ea81963f72a4c6" dependencies = [ "smallvec", ] @@ -119,9 +119,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.23" +version = "0.4.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16b0a3d9ed01224b22057780a37bb8c5dbfe1be8ba48678e7bf57ec4b385411f" +checksum = "4e3c5919066adf22df73762e50cffcde3a758f2a848b113b586d1f86728b673b" dependencies = [ "iana-time-zone", "js-sys", @@ -150,9 +150,9 @@ checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" [[package]] name = "cpufeatures" -version = "0.2.5" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28d997bd5e24a5928dd43e46dc529867e207907fe0b239c3477d924f7f2ca320" +checksum = "280a9f2d8b3a38871a3c8a46fb80db65e5e5ed97da80c4d08bf27fb63e35e181" dependencies = [ "libc", ] @@ -169,9 +169,9 @@ dependencies = [ [[package]] name = "cxx" -version = "1.0.85" +version = "1.0.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5add3fc1717409d029b20c5b6903fc0c0b02fa6741d820054f4a2efa5e5816fd" +checksum = "f61f1b6389c3fe1c316bf8a4dccc90a38208354b330925bce1f74a6c4756eb93" dependencies = [ "cc", "cxxbridge-flags", @@ -181,9 +181,9 @@ dependencies = [ [[package]] name = "cxx-build" -version = "1.0.85" +version = "1.0.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4c87959ba14bc6fbc61df77c3fcfe180fc32b93538c4f1031dd802ccb5f2ff0" +checksum = "12cee708e8962df2aeb38f594aae5d827c022b6460ac71a7a3e2c3c2aae5a07b" dependencies = [ "cc", "codespan-reporting", @@ -191,24 +191,24 @@ dependencies = [ "proc-macro2", "quote", "scratch", - "syn", + "syn 2.0.11", ] [[package]] name = "cxxbridge-flags" -version = "1.0.85" +version = "1.0.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69a3e162fde4e594ed2b07d0f83c6c67b745e7f28ce58c6df5e6b6bef99dfb59" +checksum = "7944172ae7e4068c533afbb984114a56c46e9ccddda550499caa222902c7f7bb" [[package]] name = "cxxbridge-macro" -version = "1.0.85" +version = "1.0.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e7e2adeb6a0d4a282e581096b06e1791532b7d576dcde5ccd9382acf55db8e6" +checksum = "2345488264226bf682893e25de0769f3360aac9957980ec49361b083ddaa5bc5" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.11", ] [[package]] @@ -223,9 +223,9 @@ dependencies = [ [[package]] name = "diesel" -version = "2.0.2" +version = "2.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68c186a7418a2aac330bb76cde82f16c36b03a66fb91db32d20214311f9f6545" +checksum = "4391a22b19c916e50bec4d6140f29bdda3e3bb187223fe6e3ea0b6e4d1021c04" dependencies = [ "diesel_derives", "libsqlite3-sys", @@ -233,14 +233,14 @@ dependencies = [ [[package]] name = "diesel_derives" -version = "2.0.1" +version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "143b758c91dbc3fe1fdcb0dba5bd13276c6a66422f2ef5795b58488248a310aa" +checksum = "0ad74fdcf086be3d4fdd142f67937678fe60ed431c3b2f08599e7687269410c4" dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -266,9 +266,9 @@ dependencies = [ [[package]] name = "field-offset" -version = "0.3.4" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e1c54951450cbd39f3dbcf1005ac413b49487dabf18a720ad2383eccfeffb92" +checksum = "a3cf3a800ff6e860c863ca6d4b16fd999db8b752819c1606884047b73e468535" dependencies = [ "memoffset", "rustc_version", @@ -282,24 +282,24 @@ checksum = "6c2141d6d6c8512188a7891b4b01590a45f6dac67afb4f255c4124dbb86d4eaa" [[package]] name = "futures-channel" -version = "0.3.25" +version = "0.3.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52ba265a92256105f45b719605a571ffe2d1f0fea3807304b522c1d778f79eed" +checksum = "164713a5a0dcc3e7b4b1ed7d3b433cabc18025386f9339346e8daf15963cf7ac" dependencies = [ "futures-core", ] [[package]] name = "futures-core" -version = "0.3.25" +version = "0.3.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04909a7a7e4633ae6c4a9ab280aeb86da1236243a77b694a49eacd659a4bd3ac" +checksum = "86d7a0c1aa76363dac491de0ee99faf6941128376f1cf96f07db7603b7de69dd" [[package]] name = "futures-executor" -version = "0.3.25" +version = "0.3.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7acc85df6714c176ab5edf386123fafe217be88c0840ec11f199441134a074e2" +checksum = "1997dd9df74cdac935c76252744c1ed5794fac083242ea4fe77ef3ed60ba0f83" dependencies = [ "futures-core", "futures-task", @@ -308,32 +308,32 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.25" +version = "0.3.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00f5fb52a06bdcadeb54e8d3671f8888a39697dcb0b81b23b55174030427f4eb" +checksum = "89d422fa3cbe3b40dca574ab087abb5bc98258ea57eea3fd6f1fa7162c778b91" [[package]] name = "futures-macro" -version = "0.3.25" +version = "0.3.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdfb8ce053d86b91919aad980c220b1fb8401a9394410e1c289ed7e66b61835d" +checksum = "3eb14ed937631bd8b8b8977f2c198443447a8355b6e3ca599f38c975e5a963b6" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] name = "futures-task" -version = "0.3.25" +version = "0.3.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ffb393ac5d9a6eaa9d3fdf37ae2776656b706e200c8e16b1bdb227f5198e6ea" +checksum = "fd65540d33b37b16542a0438c12e6aeead10d4ac5d05bd3f805b8f35ab592879" [[package]] name = "futures-util" -version = "0.3.25" +version = "0.3.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "197676987abd2f9cadff84926f410af1c183608d36641465df73ae8211dc65d6" +checksum = "3ef6b17e481503ec85211fed8f39d1970f128935ca1f814cd32ac4a6842e84ab" dependencies = [ "futures-core", "futures-macro", @@ -345,57 +345,58 @@ dependencies = [ [[package]] name = "gdk-pixbuf" -version = "0.16.7" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3578c60dee9d029ad86593ed88cb40f35c1b83360e12498d055022385dd9a05" +checksum = "b023fbe0c6b407bd3d9805d107d9800da3829dc5a676653210f1d5f16d7f59bf" dependencies = [ "bitflags", "gdk-pixbuf-sys", "gio", - "glib 0.16.7", + "glib 0.17.5", "libc", + "once_cell", ] [[package]] name = "gdk-pixbuf-sys" -version = "0.16.3" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3092cf797a5f1210479ea38070d9ae8a5b8e9f8f1be9f32f4643c529c7d70016" +checksum = "7b41bd2b44ed49d99277d3925652a163038bd5ed943ec9809338ffb2f4391e3b" dependencies = [ "gio-sys", - "glib-sys 0.16.3", - "gobject-sys 0.16.3", + "glib-sys 0.17.4", + "gobject-sys 0.17.4", "libc", "system-deps", ] [[package]] name = "gdk4" -version = "0.5.4" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "272db1bbb9b152ea1fea946f9d464085c86cfe14cafba450d7defa433caff8ec" +checksum = "c3abf96408a26e3eddf881a7f893a1e111767137136e347745e8ea6ed12731ff" dependencies = [ "bitflags", "cairo-rs", "gdk-pixbuf", "gdk4-sys", "gio", - "glib 0.16.7", + "glib 0.17.5", "libc", "pango", ] [[package]] name = "gdk4-sys" -version = "0.5.4" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45b571f36b889ab529b2e173248dafe83d75c703f5685b9845e490c7994ae309" +checksum = "1bc92aa1608c089c49393d014c38ac0390d01e4841e1fedaa75dbcef77aaed64" dependencies = [ "cairo-sys-rs", "gdk-pixbuf-sys", "gio-sys", - "glib-sys 0.16.3", - "gobject-sys 0.16.3", + "glib-sys 0.17.4", + "gobject-sys 0.17.4", "libc", "pango-sys", "pkg-config", @@ -404,9 +405,9 @@ dependencies = [ [[package]] name = "generic-array" -version = "0.14.6" +version = "0.14.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bff49e947297f3312447abdca79f45f4738097cc82b06e72054d2223f601f1b9" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" dependencies = [ "typenum", "version_check", @@ -445,9 +446,9 @@ dependencies = [ [[package]] name = "gio" -version = "0.16.7" +version = "0.17.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a1c84b4534a290a29160ef5c6eff2a9c95833111472e824fc5cb78b513dd092" +checksum = "2261a3b4e922ec676d1c27ac466218c38cf5dcb49a759129e54bb5046e442125" dependencies = [ "bitflags", "futures-channel", @@ -455,7 +456,7 @@ dependencies = [ "futures-io", "futures-util", "gio-sys", - "glib 0.16.7", + "glib 0.17.5", "libc", "once_cell", "pin-project-lite", @@ -465,12 +466,12 @@ dependencies = [ [[package]] name = "gio-sys" -version = "0.16.3" +version = "0.17.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9b693b8e39d042a95547fc258a7b07349b1f0b48f4b2fa3108ba3c51c0b5229" +checksum = "6b1d43b0d7968b48455244ecafe41192871257f5740aa6b095eb19db78e362a5" dependencies = [ - "glib-sys 0.16.3", - "gobject-sys 0.16.3", + "glib-sys 0.17.4", + "gobject-sys 0.17.4", "libc", "system-deps", "winapi", @@ -487,7 +488,7 @@ dependencies = [ "futures-core", "futures-executor", "futures-task", - "glib-macros 0.15.11", + "glib-macros 0.15.13", "glib-sys 0.15.10", "gobject-sys 0.15.10", "libc", @@ -498,9 +499,9 @@ dependencies = [ [[package]] name = "glib" -version = "0.16.7" +version = "0.17.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddd4df61a866ed7259d6189b8bcb1464989a77f1d85d25d002279bbe9dd38b2f" +checksum = "cfb53061756195d76969292c2d2e329e01259276524a9bae6c9b73af62854773" dependencies = [ "bitflags", "futures-channel", @@ -509,10 +510,11 @@ dependencies = [ "futures-task", "futures-util", "gio-sys", - "glib-macros 0.16.3", - "glib-sys 0.16.3", - "gobject-sys 0.16.3", + "glib-macros 0.17.6", + "glib-sys 0.17.4", + "gobject-sys 0.17.4", "libc", + "memchr", "once_cell", "smallvec", "thiserror", @@ -520,9 +522,9 @@ dependencies = [ [[package]] name = "glib-macros" -version = "0.15.11" +version = "0.15.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25a68131a662b04931e71891fb14aaf65ee4b44d08e8abc10f49e77418c86c64" +checksum = "10c6ae9f6fa26f4fb2ac16b528d138d971ead56141de489f8111e259b9df3c4a" dependencies = [ "anyhow", "heck", @@ -530,14 +532,14 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] name = "glib-macros" -version = "0.16.3" +version = "0.17.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e084807350b01348b6d9dbabb724d1a0bb987f47a2c85de200e98e12e30733bf" +checksum = "32e73a9790e243f6d55d8e302426419f6084a1de7a84cd07f7268300408a19de" dependencies = [ "anyhow", "heck", @@ -545,7 +547,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -560,9 +562,9 @@ dependencies = [ [[package]] name = "glib-sys" -version = "0.16.3" +version = "0.17.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c61a4f46316d06bfa33a7ac22df6f0524c8be58e3db2d9ca99ccb1f357b62a65" +checksum = "49f00ad0a1bf548e61adfff15d83430941d9e1bb620e334f779edd1c745680a5" dependencies = [ "libc", "system-deps", @@ -581,33 +583,33 @@ dependencies = [ [[package]] name = "gobject-sys" -version = "0.16.3" +version = "0.17.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3520bb9c07ae2a12c7f2fbb24d4efc11231c8146a86956413fb1a79bb760a0f1" +checksum = "15e75b0000a64632b2d8ca3cf856af9308e3a970844f6e9659bd197f026793d0" dependencies = [ - "glib-sys 0.16.3", + "glib-sys 0.17.4", "libc", "system-deps", ] [[package]] name = "graphene-rs" -version = "0.16.3" +version = "0.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95ecb4d347e6d09820df3bdfd89a74a8eec07753a06bb92a3aac3ad31d04447b" +checksum = "21cf11565bb0e4dfc2f99d4775b6c329f0d40a2cff9c0066214d31a0e1b46256" dependencies = [ - "glib 0.16.7", + "glib 0.17.5", "graphene-sys", "libc", ] [[package]] name = "graphene-sys" -version = "0.16.3" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9aa82337d3972b4eafdea71e607c23f47be6f27f749aab613f1ad8ddbe6dcd6" +checksum = "cf80a4849a8d9565410a8fec6fc3678e9c617f4ac7be182ca55ab75016e07af9" dependencies = [ - "glib-sys 0.16.3", + "glib-sys 0.17.4", "libc", "pkg-config", "system-deps", @@ -615,14 +617,14 @@ dependencies = [ [[package]] name = "gsk4" -version = "0.5.4" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4053293b79099bdfecd9ab0d811d118a0eafce613dfe0b26075419d955f1f652" +checksum = "6f01ef44fa7cac15e2da9978529383e6bee03e570ba5bf7036b4c10a15cc3a3c" dependencies = [ "bitflags", "cairo-rs", "gdk4", - "glib 0.16.7", + "glib 0.17.5", "graphene-rs", "gsk4-sys", "libc", @@ -631,14 +633,14 @@ dependencies = [ [[package]] name = "gsk4-sys" -version = "0.5.4" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08e0642edffdb35028d7d67b830678da98844216b6442e11eee52c91ad2a6dc2" +checksum = "c07a84fb4dcf1323d29435aa85e2f5f58bef564342bef06775ec7bd0da1f01b0" dependencies = [ "cairo-sys-rs", "gdk4-sys", - "glib-sys 0.16.3", - "gobject-sys 0.16.3", + "glib-sys 0.17.4", + "gobject-sys 0.17.4", "graphene-sys", "libc", "pango-sys", @@ -647,16 +649,16 @@ dependencies = [ [[package]] name = "gstreamer" -version = "0.19.4" +version = "0.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87a7570ad1d3c1cbf64561ada514fe0c03cf834f2076b85ffc616756c840b665" +checksum = "4c46cc10a7ab79329feb68bef54a242ced84c3147cc1b81bc5c6140346a1dbf9" dependencies = [ "bitflags", "cfg-if", "futures-channel", "futures-core", "futures-util", - "glib 0.16.7", + "glib 0.17.5", "gstreamer-sys", "libc", "muldiv", @@ -666,18 +668,19 @@ dependencies = [ "option-operations", "paste", "pretty-hex", + "smallvec", "thiserror", ] [[package]] name = "gstreamer-audio" -version = "0.19.4" +version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c77f86675dd2ea500bcbe17c11a146354df354a24dc222cbda793707e75833" +checksum = "8ca6d26ab15835a268939e2367ed4ddb1e7157b03d0bb56ba4a0b036c1ac8393" dependencies = [ "bitflags", "cfg-if", - "glib 0.16.7", + "glib 0.17.5", "gstreamer", "gstreamer-audio-sys", "gstreamer-base", @@ -687,12 +690,12 @@ dependencies = [ [[package]] name = "gstreamer-audio-sys" -version = "0.19.4" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b328f1bd487ef22e5ec6c03113515a2b1be10ea9bc12ecab646966d1b48361d5" +checksum = "9d4001b779e4707b32acd6ec0960e327b926369c1a34f7c41d477ac42b2670e8" dependencies = [ - "glib-sys 0.16.3", - "gobject-sys 0.16.3", + "glib-sys 0.17.4", + "gobject-sys 0.17.4", "gstreamer-base-sys", "gstreamer-sys", "libc", @@ -701,14 +704,14 @@ dependencies = [ [[package]] name = "gstreamer-base" -version = "0.19.3" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a61a299f9ea2ca892b43e2e428b86c679875e95ba23f8ae06fd730308df630f0" +checksum = "5598bfedbff12675a6cddbe420b6a3ba5039c64aaf7df130db6339d09b634b0e" dependencies = [ "atomic_refcell", "bitflags", "cfg-if", - "glib 0.16.7", + "glib 0.17.5", "gstreamer", "gstreamer-base-sys", "libc", @@ -716,12 +719,12 @@ dependencies = [ [[package]] name = "gstreamer-base-sys" -version = "0.19.3" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbc3c4476e1503ae245c89fbe20060c30ec6ade5f44620bcc402cbc70a3911a1" +checksum = "26114ed96f6668380f5a1554128159e98e06c3a7a8460f216d7cd6dce28f928c" dependencies = [ - "glib-sys 0.16.3", - "gobject-sys 0.16.3", + "glib-sys 0.17.4", + "gobject-sys 0.17.4", "gstreamer-sys", "libc", "system-deps", @@ -729,12 +732,12 @@ dependencies = [ [[package]] name = "gstreamer-pbutils" -version = "0.19.2" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0355d5896223bc988655bb61ad9ed18c9d6dbd26eefd82d5240de2b2579cab4a" +checksum = "573aa7032124a61ddebad128f85fac777f58907621d08f3309d9d97fad6d1131" dependencies = [ "bitflags", - "glib 0.16.7", + "glib 0.17.5", "gstreamer", "gstreamer-audio", "gstreamer-pbutils-sys", @@ -745,12 +748,12 @@ dependencies = [ [[package]] name = "gstreamer-pbutils-sys" -version = "0.19.2" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c816eccb95427cbf15df5fe30e168979894bba277d96944adcc2e4ff1154e4a" +checksum = "7cb4493d59f28023656686c7a3581ddbd510b309a861776586afcf9a52ed222b" dependencies = [ - "glib-sys 0.16.3", - "gobject-sys 0.16.3", + "glib-sys 0.17.4", + "gobject-sys 0.17.4", "gstreamer-audio-sys", "gstreamer-sys", "gstreamer-video-sys", @@ -760,12 +763,12 @@ dependencies = [ [[package]] name = "gstreamer-player" -version = "0.19.4" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d058cf1a5db88fdfdc370a3e7c88335cba2f238578a794e1f8e58d8f903835d" +checksum = "76566698a39a2d80b17fa80b5bacb7f1ae728facb7f2b2090532380250b5cbfe" dependencies = [ "bitflags", - "glib 0.16.7", + "glib 0.17.5", "gstreamer", "gstreamer-player-sys", "gstreamer-video", @@ -775,12 +778,12 @@ dependencies = [ [[package]] name = "gstreamer-player-sys" -version = "0.19.2" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4725bb801f8c7976f93d3846eca66c8ababf263bafcca3c43a7b17f9f01fae19" +checksum = "15321aaaf3bb247b4af3e09456a62dc17f030515d6328377a34081d9ed5803c0" dependencies = [ - "glib-sys 0.16.3", - "gobject-sys 0.16.3", + "glib-sys 0.17.4", + "gobject-sys 0.17.4", "gstreamer-sys", "gstreamer-video-sys", "libc", @@ -789,26 +792,26 @@ dependencies = [ [[package]] name = "gstreamer-sys" -version = "0.19.4" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "545f52ad8a480732cc4290fd65dfe42952c8ae374fe581831ba15981fedf18a4" +checksum = "e56fe047adef7d47dbafa8bc1340fddb53c325e16574763063702fc94b5786d2" dependencies = [ - "glib-sys 0.16.3", - "gobject-sys 0.16.3", + "glib-sys 0.17.4", + "gobject-sys 0.17.4", "libc", "system-deps", ] [[package]] name = "gstreamer-video" -version = "0.19.4" +version = "0.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e99623fb99436c4b2da66ae94b25881c94db5144afc1bd7c84cee5cabb72f18" +checksum = "467cddb6a4135e72fefb6ba21262b1cca5493e9928792e88fe672ec0a37b761c" dependencies = [ "bitflags", "cfg-if", "futures-channel", - "glib 0.16.7", + "glib 0.17.5", "gstreamer", "gstreamer-base", "gstreamer-video-sys", @@ -818,12 +821,12 @@ dependencies = [ [[package]] name = "gstreamer-video-sys" -version = "0.19.4" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9206e9df0ed84824bfe4cc13e3359154ad7624221c7d3d6242585db3f19a15d9" +checksum = "66ddb6112d438aac0004d2db6053a572f92b1c5e0e9d6ff6c71d9245f7f73e46" dependencies = [ - "glib-sys 0.16.3", - "gobject-sys 0.16.3", + "glib-sys 0.17.4", + "gobject-sys 0.17.4", "gstreamer-base-sys", "gstreamer-sys", "libc", @@ -838,9 +841,9 @@ checksum = "da5bf7748fd4cd0b2490df8debcc911809dbcbee4ece9531b96c29a9c729de5a" [[package]] name = "gtk4" -version = "0.5.4" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8954da3659ff1cb35aa95110021b33fadcd8e306e8fe41f32146ffa009665a79" +checksum = "1e30e124b5a605f6f5513db13958bfcd51d746607b20bc7bb718b33e303274ed" dependencies = [ "bitflags", "cairo-rs", @@ -849,7 +852,7 @@ dependencies = [ "gdk-pixbuf", "gdk4", "gio", - "glib 0.16.7", + "glib 0.17.5", "graphene-rs", "gsk4", "gtk4-macros", @@ -861,30 +864,30 @@ dependencies = [ [[package]] name = "gtk4-macros" -version = "0.5.4" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58138cd3c595e04f82df050390aa7d2bd093795ce569e5f1d49eb496ef67fe7b" +checksum = "f041a797fb098bfb06e432c61738133604bfa3af57f13f1da3b9d46271422ef0" dependencies = [ "anyhow", "proc-macro-crate", "proc-macro-error", "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] name = "gtk4-sys" -version = "0.5.4" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef29e09e055b2f2550eb1882caa6961a1ae3c971a70bcb25cb9d5ab6cbd63821" +checksum = "5f8283f707b07e019e76c7f2934bdd4180c277e08aa93f4c0d8dd07b7a34e22f" dependencies = [ "cairo-sys-rs", "gdk-pixbuf-sys", "gdk4-sys", "gio-sys", - "glib-sys 0.16.3", - "gobject-sys 0.16.3", + "glib-sys 0.17.4", + "gobject-sys 0.17.4", "graphene-sys", "gsk4-sys", "libc", @@ -893,23 +896,29 @@ dependencies = [ ] [[package]] -name = "heck" -version = "0.4.0" +name = "hashbrown" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" [[package]] name = "iana-time-zone" -version = "0.1.53" +version = "0.1.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64c122667b287044802d6ce17ee2ddf13207ed924c712de9a66a5814d5b64765" +checksum = "0c17cc76786e99f8d2f055c11159e7f0091c42474dcc3189fbab96072e873e6d" dependencies = [ "android_system_properties", "core-foundation-sys", "iana-time-zone-haiku", "js-sys", "wasm-bindgen", - "winapi", + "windows", ] [[package]] @@ -923,10 +932,20 @@ dependencies = [ ] [[package]] -name = "js-sys" -version = "0.3.60" +name = "indexmap" +version = "1.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49409df3e3bf0856b916e2ceaca09ee28e6871cf7d9ce97a692cacfdb2a25a47" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown", +] + +[[package]] +name = "js-sys" +version = "0.3.61" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730" dependencies = [ "wasm-bindgen", ] @@ -939,16 +958,16 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libadwaita" -version = "0.2.1" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9dfa0722d4f1724f661cbf668c273c5926296ca411ed3814e206f8fd082b6c48" +checksum = "b1c4efd2020a4fcedbad2c4a97de97bf6045e5dc49d61d5a5d0cfd753db60700" dependencies = [ "bitflags", "futures-channel", "gdk-pixbuf", "gdk4", "gio", - "glib 0.16.7", + "glib 0.17.5", "gtk4", "libadwaita-sys", "libc", @@ -958,14 +977,14 @@ dependencies = [ [[package]] name = "libadwaita-sys" -version = "0.2.1" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de902982372b454a0081d7fd9dd567b37b73ae29c8f6da1820374d345fd95d5b" +checksum = "0727b85b4fe2b1bed5ac90df6343de15cbf8118bfb96d7c3cc1512681a4b34ac" dependencies = [ "gdk4-sys", "gio-sys", - "glib-sys 0.16.3", - "gobject-sys 0.16.3", + "glib-sys 0.17.4", + "gobject-sys 0.17.4", "gtk4-sys", "libc", "pango-sys", @@ -974,24 +993,24 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.138" +version = "0.2.140" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db6d7e329c562c5dfab7a46a2afabc8b987ab9a4834c9d1ca04dc54c1546cef8" +checksum = "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c" [[package]] name = "libdbus-sys" -version = "0.2.2" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c185b5b7ad900923ef3a8ff594083d4d9b5aea80bb4f32b8342363138c0d456b" +checksum = "9f8d7ae751e1cb825c840ae5e682f59b098cdfd213c350ac268b61449a5f58a0" dependencies = [ "pkg-config", ] [[package]] name = "libsqlite3-sys" -version = "0.22.2" +version = "0.25.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "290b64917f8b0cb885d9de0f9959fe1f775d7fa12f1da2db9001c1c8ab60f89d" +checksum = "29f835d03d717946d28b1d1ed632eb6f0e24a299388ee623d0c23118d3e8a7fa" dependencies = [ "pkg-config", "vcpkg", @@ -1045,9 +1064,9 @@ checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" [[package]] name = "memoffset" -version = "0.6.5" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" +checksum = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1" dependencies = [ "autocfg", ] @@ -1059,7 +1078,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c493c09323068c01e54c685f7da41a9ccf9219735c3766fbfd6099806ea08fbc" dependencies = [ "serde", - "toml", + "toml 0.5.11", ] [[package]] @@ -1097,7 +1116,7 @@ dependencies = [ "futures-channel", "gettext-rs", "gio", - "glib 0.16.7", + "glib 0.17.5", "gstreamer", "gtk-macros", "gtk4", @@ -1116,7 +1135,7 @@ dependencies = [ "chrono", "fragile", "gio", - "glib 0.16.7", + "glib 0.17.5", "gstreamer", "gstreamer-player", "log", @@ -1145,7 +1164,7 @@ name = "musicus_import" version = "0.1.0" dependencies = [ "base64", - "glib 0.16.7", + "glib 0.17.5", "gstreamer", "gstreamer-pbutils", "log", @@ -1217,9 +1236,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.16.0" +version = "1.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86f0b0d4bf799edbc74508c1e8bf170ff5f41238e5f8225603ca7caaae2b7860" +checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3" [[package]] name = "option-operations" @@ -1232,13 +1251,13 @@ dependencies = [ [[package]] name = "pango" -version = "0.16.5" +version = "0.17.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdff66b271861037b89d028656184059e03b0b6ccb36003820be19f7200b1e94" +checksum = "52c280b82a881e4208afb3359a8e7fde27a1b272280981f1f34610bed5770d37" dependencies = [ "bitflags", "gio", - "glib 0.16.7", + "glib 0.17.5", "libc", "once_cell", "pango-sys", @@ -1246,31 +1265,21 @@ dependencies = [ [[package]] name = "pango-sys" -version = "0.16.3" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e134909a9a293e04d2cc31928aa95679c5e4df954d0b85483159bd20d8f047f" +checksum = "4293d0f0b5525eb5c24734d30b0ed02cd02aa734f216883f376b54de49625de8" dependencies = [ - "glib-sys 0.16.3", - "gobject-sys 0.16.3", + "glib-sys 0.17.4", + "gobject-sys 0.17.4", "libc", "system-deps", ] [[package]] name = "paste" -version = "1.0.11" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d01a5bd0424d00070b0098dd17ebca6f961a959dead1dbcbbbc1d1cd8d3deeba" - -[[package]] -name = "pest" -version = "2.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc8bed3549e0f9b0a2a78bf7c0018237a2cdf085eecbbc048e52612438e4e9d0" -dependencies = [ - "thiserror", - "ucd-trie", -] +checksum = "9f746c4065a8fa3fe23974dd82f15431cc8d40779821001404d10d2e79ca7d79" [[package]] name = "pin-project-lite" @@ -1304,13 +1313,12 @@ checksum = "c6fa0831dd7cc608c38a5e323422a0077678fa5744aa2be4ad91c4ece8eec8d5" [[package]] name = "proc-macro-crate" -version = "1.2.1" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eda0fc3b0fb7c975631757e14d9049da17374063edb6ebbcbc54d880d4fe94e9" +checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" dependencies = [ "once_cell", - "thiserror", - "toml", + "toml_edit", ] [[package]] @@ -1322,7 +1330,7 @@ dependencies = [ "proc-macro-error-attr", "proc-macro2", "quote", - "syn", + "syn 1.0.109", "version_check", ] @@ -1339,18 +1347,18 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.49" +version = "1.0.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57a8eca9f9c4ffde41714334dee777596264c7825420f521abc92b5b5deb63a5" +checksum = "e472a104799c74b514a57226160104aa483546de37e839ec50e3c2e41dd87534" dependencies = [ "unicode-ident", ] [[package]] name = "quote" -version = "1.0.23" +version = "1.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8856d8364d252a14d474036ea1358d63c9e6965c8e5c1885c18f73d70bff9c7b" +checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc" dependencies = [ "proc-macro2", ] @@ -1387,9 +1395,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.7.0" +version = "1.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e076559ef8e241f2ae3479e36f97bd5741c0330689e217ad51ce2c76808b868a" +checksum = "8b1f693b24f6ac912f4893ef08244d70b6067480d2f1a46e950c9691e6749d1d" dependencies = [ "aho-corasick", "memchr", @@ -1398,15 +1406,15 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.6.28" +version = "0.6.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848" +checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] name = "rustc_version" -version = "0.3.3" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee" +checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" dependencies = [ "semver", ] @@ -1423,46 +1431,43 @@ dependencies = [ [[package]] name = "scratch" -version = "1.0.3" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddccb15bcce173023b3fedd9436f882a0739b8dfb45e4f6b6002bee5929f61b2" +checksum = "1792db035ce95be60c3f8853017b3999209281c24e2ba5bc8e59bf97a0c590c1" [[package]] name = "semver" -version = "0.11.0" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" -dependencies = [ - "semver-parser", -] - -[[package]] -name = "semver-parser" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b0bef5b7f9e0df16536d3961cfb6e84331c065b4066afb39768d0e319411f7" -dependencies = [ - "pest", -] +checksum = "bebd363326d05ec3e2f532ab7660680f3b02130d780c299bca73469d521bc0ed" [[package]] name = "serde" -version = "1.0.151" +version = "1.0.159" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97fed41fc1a24994d044e6db6935e69511a1153b52c15eb42493b26fa87feba0" +checksum = "3c04e8343c3daeec41f58990b9d77068df31209f2af111e059e9fe9646693065" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.151" +version = "1.0.159" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "255abe9a125a985c05190d687b320c12f9b1f0b99445e608c21ba0782c719ad8" +checksum = "4c614d17805b093df4b147b51339e7e44bf05ef59fba1e45d83500bcfb4d8585" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.11", +] + +[[package]] +name = "serde_spanned" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0efd8caf556a6cebd3b285caf480045fcc1ac04f6bd786b09a6f11af30c4fcf4" +dependencies = [ + "serde", ] [[package]] @@ -1478,9 +1483,9 @@ dependencies = [ [[package]] name = "slab" -version = "0.4.7" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4614a76b2a8be0058caa9dbbaf66d988527d86d003c11a94fbd335d7661edcef" +checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d" dependencies = [ "autocfg", ] @@ -1493,9 +1498,20 @@ checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" [[package]] name = "syn" -version = "1.0.107" +version = "1.0.109" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f4064b5b16e03ae50984a5a8ed5d4f8803e6bc1fd170a3cda91a1be4b18e3f5" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21e3787bb71465627110e7d87ed4faaa36c1f61042ee67badb9e2ef173accc40" dependencies = [ "proc-macro2", "quote", @@ -1504,14 +1520,14 @@ dependencies = [ [[package]] name = "system-deps" -version = "6.0.3" +version = "6.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2955b1fe31e1fa2fbd1976b71cc69a606d7d4da16f6de3333d0c92d51419aeff" +checksum = "555fc8147af6256f3931a36bb83ad0023240ce9cf2b319dec8236fd1f220b05f" dependencies = [ "cfg-expr", "heck", "pkg-config", - "toml", + "toml 0.7.3", "version-compare", ] @@ -1523,31 +1539,31 @@ checksum = "af547b166dd1ea4b472165569fc456cfb6818116f854690b0ff205e636523dab" [[package]] name = "termcolor" -version = "1.1.3" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755" +checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6" dependencies = [ "winapi-util", ] [[package]] name = "thiserror" -version = "1.0.38" +version = "1.0.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a9cd18aa97d5c45c6603caea1da6628790b37f7a34b6ca89522331c5180fed0" +checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.38" +version = "1.0.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fb327af4685e4d03fa8cbcf1716380da910eeb2bb8be417e7f9fd3fb164f36f" +checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.11", ] [[package]] @@ -1563,9 +1579,9 @@ dependencies = [ [[package]] name = "tokio" -version = "1.23.0" +version = "1.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eab6d665857cc6ca78d6e80303a02cea7a7851e85dfbd77cbdc09bd129f1ef46" +checksum = "d0de47a4eecbe11f498978a9b29d792f0d2692d1dd003650c24c76510e3bc001" dependencies = [ "autocfg", "pin-project-lite", @@ -1574,30 +1590,58 @@ dependencies = [ [[package]] name = "toml" -version = "0.5.10" +version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1333c76748e868a4d9d1017b5ab53171dfd095f70c712fdb4653a406547f598f" +checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" dependencies = [ "serde", ] +[[package]] +name = "toml" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b403acf6f2bb0859c93c7f0d967cb4a75a7ac552100f9322faf64dc047669b21" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit", +] + +[[package]] +name = "toml_datetime" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ab8ed2edee10b50132aed5f331333428b011c99402b5a534154ed15746f9622" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_edit" +version = "0.19.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "239410c8609e8125456927e6707163a3b1fdb40561e4b803bc041f466ccfdc13" +dependencies = [ + "indexmap", + "serde", + "serde_spanned", + "toml_datetime", + "winnow", +] + [[package]] name = "typenum" version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" -[[package]] -name = "ucd-trie" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e79c4d996edb816c91e4308506774452e55e95c3c9de07b6729e17e15a5ef81" - [[package]] name = "unicode-ident" -version = "1.0.6" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84a22b9f218b40614adcb3f4ff08b703773ad44fa9423e4e0d346d5db86e4ebc" +checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4" [[package]] name = "unicode-width" @@ -1607,9 +1651,9 @@ checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" [[package]] name = "uuid" -version = "1.2.2" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "422ee0de9031b5b948b97a8fc04e3aa35230001a722ddd27943e0be31564ce4c" +checksum = "1674845326ee10d37ca60470760d4288a6f80f304007d92e5c53bab78c9cfd79" dependencies = [ "getrandom", ] @@ -1646,9 +1690,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.83" +version = "0.2.84" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eaf9f5aceeec8be17c128b2e93e031fb8a4d469bb9c4ae2d7dc1888b26887268" +checksum = "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -1656,24 +1700,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.83" +version = "0.2.84" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c8ffb332579b0557b52d268b91feab8df3615f265d5270fec2a8c95b17c1142" +checksum = "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn", + "syn 1.0.109", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.83" +version = "0.2.84" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "052be0f94026e6cbc75cdefc9bae13fd6052cdcaf532fa6c45e7ae33a1e6c810" +checksum = "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -1681,22 +1725,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.83" +version = "0.2.84" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07bc0c051dc5f23e307b13285f9d75df86bfdf816c5721e573dec1f9b8aa193c" +checksum = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.109", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.83" +version = "0.2.84" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c38c045535d93ec4f0b4defec448e4291638ee608530863b1e2ba115d4fff7f" +checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d" [[package]] name = "winapi" @@ -1730,10 +1774,28 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] -name = "windows-sys" -version = "0.42.0" +name = "windows" +version = "0.46.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" +checksum = "cdacb41e6a96a052c6cb63a144f24900236121c6f63f4f8219fef5977ecb0c25" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-sys" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-targets" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" dependencies = [ "windows_aarch64_gnullvm", "windows_aarch64_msvc", @@ -1746,42 +1808,51 @@ dependencies = [ [[package]] name = "windows_aarch64_gnullvm" -version = "0.42.0" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41d2aa71f6f0cbe00ae5167d90ef3cfe66527d6f613ca78ac8024c3ccab9a19e" +checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" [[package]] name = "windows_aarch64_msvc" -version = "0.42.0" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd0f252f5a35cac83d6311b2e795981f5ee6e67eb1f9a7f64eb4500fbc4dcdb4" +checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" [[package]] name = "windows_i686_gnu" -version = "0.42.0" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbeae19f6716841636c28d695375df17562ca208b2b7d0dc47635a50ae6c5de7" +checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" [[package]] name = "windows_i686_msvc" -version = "0.42.0" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84c12f65daa39dd2babe6e442988fc329d6243fdce47d7d2d155b8d874862246" +checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" [[package]] name = "windows_x86_64_gnu" -version = "0.42.0" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf7b1b21b5362cbc318f686150e5bcea75ecedc74dd157d874d754a2ca44b0ed" +checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" [[package]] name = "windows_x86_64_gnullvm" -version = "0.42.0" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09d525d2ba30eeb3297665bd434a54297e4170c7f1a44cad4ef58095b4cd2028" +checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" [[package]] name = "windows_x86_64_msvc" -version = "0.42.0" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f40009d85759725a34da6d89a94e63d7bdc50a862acf0dbc7c8e488f1edcb6f5" +checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" + +[[package]] +name = "winnow" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae8970b36c66498d8ff1d66685dc86b91b29db0c7739899012f63a63814b4b28" +dependencies = [ + "memchr", +] diff --git a/crates/backend/Cargo.toml b/crates/backend/Cargo.toml index 4fd886b..22fe818 100644 --- a/crates/backend/Cargo.toml +++ b/crates/backend/Cargo.toml @@ -6,10 +6,10 @@ edition = "2021" [dependencies] chrono = "0.4" fragile = "2" -gio = "0.16" -glib = "0.16" -gstreamer = "0.19" -gstreamer-player = "0.19" +gio = "0.17" +glib = "0.17" +gstreamer = "0.20" +gstreamer-player = "0.20" log = { version = "0.4", features = ["std"] } musicus_database = { version = "0.1.0", path = "../database" } musicus_import = { version = "0.1.0", path = "../import" } diff --git a/crates/backend/src/logger.rs b/crates/backend/src/logger.rs index d0fe413..5f4c15a 100644 --- a/crates/backend/src/logger.rs +++ b/crates/backend/src/logger.rs @@ -1,6 +1,9 @@ -use chrono::{Local, DateTime}; +use chrono::{DateTime, Local}; use log::{Level, LevelFilter, Log, Metadata, Record}; -use std::{fmt::Display, sync::{Arc, Mutex}}; +use std::{ + fmt::Display, + sync::{Arc, Mutex}, +}; /// Register the custom logger. This will panic if called more than once. pub fn register() -> Arc { @@ -72,6 +75,10 @@ impl<'a> From<&Record<'a>> for LogMessage { impl Display for LogMessage { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(f, "{} {} ({}): {}", self.time, self.module, self.level, self.message) + write!( + f, + "{} {} ({}): {}", + self.time, self.module, self.level, self.message + ) } } diff --git a/crates/backend/src/player.rs b/crates/backend/src/player.rs index df914f4..e18bd31 100644 --- a/crates/backend/src/player.rs +++ b/crates/backend/src/player.rs @@ -1,6 +1,7 @@ use crate::{Backend, Error, Result}; use db::Track; use glib::clone; +use gstreamer_player::PlayerVideoRenderer; use musicus_database as db; use std::cell::{Cell, RefCell}; use std::path::PathBuf; @@ -32,10 +33,7 @@ pub struct Player { impl Player { pub fn new(music_library_path: PathBuf) -> Rc { let dispatcher = gstreamer_player::PlayerGMainContextSignalDispatcher::new(None); - let player = gstreamer_player::Player::new( - gstreamer_player::PlayerVideoRenderer::NONE, - Some(&dispatcher), - ); + let player = gstreamer_player::Player::new(None::, Some(dispatcher)); let mut config = player.config(); config.set_position_update_interval(250); player.set_config(config).unwrap(); diff --git a/crates/database/src/ensembles.rs b/crates/database/src/ensembles.rs index 421c73e..13896be 100644 --- a/crates/database/src/ensembles.rs +++ b/crates/database/src/ensembles.rs @@ -2,7 +2,7 @@ use chrono::Utc; use diesel::prelude::*; use log::info; -use crate::{Result, schema::ensembles, defer_foreign_keys}; +use crate::{defer_foreign_keys, schema::ensembles, Result}; /// An ensemble that takes part in recordings. #[derive(Insertable, Queryable, PartialEq, Eq, Hash, Debug, Clone)] diff --git a/crates/database/src/medium.rs b/crates/database/src/medium.rs index 4ae34e2..8a4f32b 100644 --- a/crates/database/src/medium.rs +++ b/crates/database/src/medium.rs @@ -82,7 +82,7 @@ impl Track { /// Table data for a [`Medium`]. #[derive(Insertable, Queryable, Debug, Clone)] -#[table_name = "mediums"] +#[diesel(table_name = mediums)] struct MediumRow { pub id: String, pub name: String, @@ -93,7 +93,7 @@ struct MediumRow { /// Table data for a [`Track`]. #[derive(Insertable, Queryable, QueryableByName, Debug, Clone)] -#[table_name = "tracks"] +#[diesel(table_name = tracks)] struct TrackRow { pub id: String, pub medium: Option, diff --git a/crates/database/src/recordings.rs b/crates/database/src/recordings.rs index b62f488..37bc72b 100644 --- a/crates/database/src/recordings.rs +++ b/crates/database/src/recordings.rs @@ -97,7 +97,7 @@ impl PersonOrEnsemble { /// Database table data for a recording. #[derive(Insertable, Queryable, QueryableByName, Debug, Clone)] -#[table_name = "recordings"] +#[diesel(table_name = recordings)] struct RecordingRow { pub id: String, pub work: String, @@ -120,7 +120,7 @@ impl From for RecordingRow { /// Database table data for a performance. #[derive(Insertable, Queryable, Debug, Clone)] -#[table_name = "performances"] +#[diesel(table_name = performances)] struct PerformanceRow { pub id: i64, pub recording: String, diff --git a/crates/database/src/works.rs b/crates/database/src/works.rs index ecb8a2c..1fb4245 100644 --- a/crates/database/src/works.rs +++ b/crates/database/src/works.rs @@ -10,7 +10,7 @@ use crate::{ /// Table row data for a work. #[derive(Insertable, Queryable, Debug, Clone)] -#[table_name = "works"] +#[diesel(table_name = works)] struct WorkRow { pub id: String, pub composer: String, @@ -33,7 +33,7 @@ impl From for WorkRow { /// Definition that a work uses an instrument. #[derive(Insertable, Queryable, Debug, Clone)] -#[table_name = "instrumentations"] +#[diesel(table_name = instrumentations)] struct InstrumentationRow { pub id: i64, pub work: String, @@ -42,7 +42,7 @@ struct InstrumentationRow { /// Table row data for a work part. #[derive(Insertable, Queryable, Debug, Clone)] -#[table_name = "work_parts"] +#[diesel(table_name = work_parts)] struct WorkPartRow { pub id: i64, pub work: String, diff --git a/crates/import/Cargo.toml b/crates/import/Cargo.toml index 8011656..2935658 100644 --- a/crates/import/Cargo.toml +++ b/crates/import/Cargo.toml @@ -4,10 +4,10 @@ version = "0.1.0" edition = "2021" [dependencies] -base64 = "0.13" -glib = "0.16" -gstreamer = "0.19" -gstreamer-pbutils = "0.19" +base64 = "0.21" +glib = "0.17" +gstreamer = "0.20" +gstreamer-pbutils = "0.20" log = "0.4" once_cell = "1" rand = "0.8" diff --git a/crates/import/src/disc.rs b/crates/import/src/disc.rs index 48960cc..84d7e4c 100644 --- a/crates/import/src/disc.rs +++ b/crates/import/src/disc.rs @@ -1,5 +1,6 @@ use crate::error::{Error, Result}; use crate::session::{ImportSession, ImportTrack, State}; +use base64::Engine; use gstreamer::prelude::*; use gstreamer::tags::{Duration, TrackNumber}; use gstreamer::{ClockTime, ElementFactory, MessageType, MessageView, TocEntryType}; @@ -108,7 +109,7 @@ pub(super) fn new() -> Result { } } - let source_id = base64::encode_config(hasher.finalize(), base64::URL_SAFE); + let source_id = base64::engine::general_purpose::URL_SAFE_NO_PAD.encode(hasher.finalize()); info!("Successfully loaded audio CD with {} tracks.", tracks.len()); info!("Source ID: {}", source_id); diff --git a/crates/import/src/folder.rs b/crates/import/src/folder.rs index 313db01..dabde90 100644 --- a/crates/import/src/folder.rs +++ b/crates/import/src/folder.rs @@ -1,5 +1,6 @@ use crate::error::{Error, Result}; use crate::session::{ImportSession, ImportTrack, State}; +use base64::Engine; use gstreamer::ClockTime; use gstreamer_pbutils::Discoverer; use log::{info, warn}; @@ -64,7 +65,7 @@ pub(super) fn new(path: PathBuf) -> Result { } } - let source_id = base64::encode_config(hasher.finalize(), base64::URL_SAFE); + let source_id = base64::engine::general_purpose::URL_SAFE_NO_PAD.encode(hasher.finalize()); info!("Source ID: {}", source_id); diff --git a/crates/musicus/Cargo.toml b/crates/musicus/Cargo.toml index 704402c..2ede063 100644 --- a/crates/musicus/Cargo.toml +++ b/crates/musicus/Cargo.toml @@ -5,13 +5,13 @@ edition = "2021" [dependencies] anyhow = "1" -adw = { package = "libadwaita", version = "0.2", features = ["v1_2"] } +adw = { package = "libadwaita", version = "0.3", features = ["v1_2"] } futures-channel = "0.3" gettext-rs = { version = "0.7", features = ["gettext-system"] } -gio = "0.16" -glib = "0.16" -gstreamer = "0.19" -gtk = { package = "gtk4", version = "0.5" } +gio = "0.17" +glib = "0.17" +gstreamer = "0.20" +gtk = { package = "gtk4", version = "0.6" } gtk-macros = "0.3" log = "0.4" musicus_backend = { version = "0.1.0", path = "../backend" } diff --git a/crates/musicus/src/editors/ensemble.rs b/crates/musicus/src/editors/ensemble.rs index 1f72dff..7e92652 100644 --- a/crates/musicus/src/editors/ensemble.rs +++ b/crates/musicus/src/editors/ensemble.rs @@ -2,8 +2,8 @@ use crate::navigator::{NavigationHandle, Screen}; use crate::widgets::{Editor, Section, Widget}; use anyhow::Result; use gettextrs::gettext; -use gtk::{builders::ListBoxBuilder, glib::clone, prelude::*}; -use musicus_backend::db::{generate_id, Ensemble, self}; +use gtk::{glib::clone, prelude::*}; +use musicus_backend::db::{self, generate_id, Ensemble}; use std::rc::Rc; /// A dialog for creating or editing a ensemble. @@ -23,12 +23,12 @@ impl Screen, Ensemble> for EnsembleEditor { let editor = Editor::new(); editor.set_title("Ensemble"); - let list = ListBoxBuilder::new() + let list = gtk::ListBox::builder() .selection_mode(gtk::SelectionMode::None) .css_classes(vec![String::from("boxed-list")]) .build(); - let name = adw::EntryRow::builder().title(&gettext("Name")).build(); + let name = adw::EntryRow::builder().title(gettext("Name")).build(); list.append(&name); let section = Section::new(&gettext("General"), &list); @@ -88,7 +88,10 @@ impl EnsembleEditor { let ensemble = Ensemble::new(self.id.clone(), name.to_string()); - db::update_ensemble(&mut self.handle.backend.db().lock().unwrap(), ensemble.clone())?; + db::update_ensemble( + &mut self.handle.backend.db().lock().unwrap(), + ensemble.clone(), + )?; self.handle.backend.library_changed(); Ok(ensemble) diff --git a/crates/musicus/src/editors/instrument.rs b/crates/musicus/src/editors/instrument.rs index daaea20..a1350fc 100644 --- a/crates/musicus/src/editors/instrument.rs +++ b/crates/musicus/src/editors/instrument.rs @@ -2,7 +2,7 @@ use crate::navigator::{NavigationHandle, Screen}; use crate::widgets::{Editor, Section, Widget}; use anyhow::Result; use gettextrs::gettext; -use gtk::{builders::ListBoxBuilder, glib::clone, prelude::*}; +use gtk::{glib::clone, prelude::*}; use musicus_backend::db::{self, generate_id, Instrument}; use std::rc::Rc; @@ -23,12 +23,12 @@ impl Screen, Instrument> for InstrumentEditor { let editor = Editor::new(); editor.set_title("Instrument/Role"); - let list = ListBoxBuilder::new() + let list = gtk::ListBox::builder() .selection_mode(gtk::SelectionMode::None) .css_classes(vec![String::from("boxed-list")]) .build(); - let name = adw::EntryRow::builder().title(&gettext("Name")).build(); + let name = adw::EntryRow::builder().title(gettext("Name")).build(); list.append(&name); let section = Section::new(&gettext("General"), &list); diff --git a/crates/musicus/src/editors/performance.rs b/crates/musicus/src/editors/performance.rs index 9a47771..5b1cee9 100644 --- a/crates/musicus/src/editors/performance.rs +++ b/crates/musicus/src/editors/performance.rs @@ -3,8 +3,8 @@ use crate::selectors::{EnsembleSelector, InstrumentSelector, PersonSelector}; use crate::widgets::{ButtonRow, Editor, Section, Widget}; use adw::prelude::*; use gettextrs::gettext; -use gtk::builders::ButtonBuilder; -use gtk::{builders::ListBoxBuilder, glib::clone}; + +use gtk::glib::clone; use log::error; use musicus_backend::db::{Ensemble, Instrument, Performance, Person, PersonOrEnsemble}; use std::cell::RefCell; @@ -30,7 +30,7 @@ impl Screen, Performance> for PerformanceEditor { editor.set_title("Performance"); editor.set_may_save(false); - let performer_list = ListBoxBuilder::new() + let performer_list = gtk::ListBox::builder() .selection_mode(gtk::SelectionMode::None) .css_classes(vec![String::from("boxed-list")]) .build(); @@ -46,12 +46,12 @@ impl Screen, Performance> for PerformanceEditor { "Select either a person or an ensemble as a performer.", )); - let role_list = ListBoxBuilder::new() + let role_list = gtk::ListBox::builder() .selection_mode(gtk::SelectionMode::None) .css_classes(vec![String::from("boxed-list")]) .build(); - let reset_role_button = ButtonBuilder::new() + let reset_role_button = gtk::Button::builder() .icon_name("user-trash-symbolic") .valign(gtk::Align::Center) .visible(false) diff --git a/crates/musicus/src/editors/person.rs b/crates/musicus/src/editors/person.rs index 1d2f692..0add45d 100644 --- a/crates/musicus/src/editors/person.rs +++ b/crates/musicus/src/editors/person.rs @@ -3,8 +3,8 @@ use crate::widgets::{Editor, Section, Widget}; use anyhow::Result; use gettextrs::gettext; use glib::clone; -use gtk::{builders::ListBoxBuilder, prelude::*}; -use musicus_backend::db::{generate_id, Person, self}; +use gtk::prelude::*; +use musicus_backend::db::{self, generate_id, Person}; use std::rc::Rc; /// A dialog for creating or editing a person. @@ -25,18 +25,16 @@ impl Screen, Person> for PersonEditor { let editor = Editor::new(); editor.set_title("Person"); - let list = ListBoxBuilder::new() + let list = gtk::ListBox::builder() .selection_mode(gtk::SelectionMode::None) .css_classes(vec![String::from("boxed-list")]) .build(); let first_name = adw::EntryRow::builder() - .title(&gettext("First name")) + .title(gettext("First name")) .build(); - let last_name = adw::EntryRow::builder() - .title(&gettext("Last name")) - .build(); + let last_name = adw::EntryRow::builder().title(gettext("Last name")).build(); list.append(&first_name); list.append(&last_name); diff --git a/crates/musicus/src/editors/recording.rs b/crates/musicus/src/editors/recording.rs index c9b8155..b47cf34 100644 --- a/crates/musicus/src/editors/recording.rs +++ b/crates/musicus/src/editors/recording.rs @@ -2,7 +2,7 @@ use super::performance::PerformanceEditor; use crate::navigator::{NavigationHandle, Screen}; use crate::selectors::WorkSelector; use crate::widgets::{List, Widget}; -use adw::builders::ActionRowBuilder; + use adw::prelude::*; use anyhow::Result; use gettextrs::gettext; @@ -129,10 +129,10 @@ impl Screen, Recording> for RecordingEditor { }); })); - let row = ActionRowBuilder::new() + let row = adw::ActionRow::builder() .focusable(false) .activatable_widget(&edit_button) - .title(&performance.get_title()) + .title(performance.get_title()) .build(); row.add_suffix(&delete_button); diff --git a/crates/musicus/src/editors/work.rs b/crates/musicus/src/editors/work.rs index 1d0e9f4..37fbc13 100644 --- a/crates/musicus/src/editors/work.rs +++ b/crates/musicus/src/editors/work.rs @@ -2,7 +2,7 @@ use super::work_part::WorkPartEditor; use crate::navigator::{NavigationHandle, Screen}; use crate::selectors::{InstrumentSelector, PersonSelector}; use crate::widgets::{List, Widget}; -use adw::builders::ActionRowBuilder; + use adw::prelude::*; use anyhow::Result; use gettextrs::gettext; @@ -125,7 +125,7 @@ impl Screen, Work> for WorkEditor { this.instrument_list.update(length); })); - let row = ActionRowBuilder::new() + let row = adw::ActionRow::builder() .title(&instrument.name) .build(); @@ -184,7 +184,7 @@ impl Screen, Work> for WorkEditor { }); })); - let row = ActionRowBuilder::new() + let row = adw::ActionRow::builder() .focusable(false) .title(&part.title) .activatable_widget(&edit_button) diff --git a/crates/musicus/src/import/import_screen.rs b/crates/musicus/src/import/import_screen.rs index 3ae46e2..5d85648 100644 --- a/crates/musicus/src/import/import_screen.rs +++ b/crates/musicus/src/import/import_screen.rs @@ -3,7 +3,7 @@ use super::medium_preview::MediumPreview; use crate::navigator::{NavigationHandle, Screen}; use crate::selectors::MediumSelector; use crate::widgets::Widget; -use adw::builders::ActionRowBuilder; + use adw::prelude::*; use glib::clone; use gtk_macros::get_widget; @@ -68,10 +68,10 @@ impl ImportScreen { let this = self; for medium in mediums { - let row = ActionRowBuilder::new() + let row = adw::ActionRow::builder() .activatable(true) .title(&medium.name) - .subtitle(&format!("{} Tracks", medium.tracks.len())) + .subtitle(format!("{} Tracks", medium.tracks.len())) .build(); row.connect_activated(clone!(@weak this => move |_| { diff --git a/crates/musicus/src/import/medium_editor.rs b/crates/musicus/src/import/medium_editor.rs index b490abf..8ca10a1 100644 --- a/crates/musicus/src/import/medium_editor.rs +++ b/crates/musicus/src/import/medium_editor.rs @@ -1,7 +1,7 @@ use super::track_set_editor::{TrackData, TrackSetData, TrackSetEditor}; use crate::navigator::{NavigationHandle, Screen}; use crate::widgets::{List, Widget}; -use adw::builders::ActionRowBuilder; + use adw::prelude::*; use anyhow::Result; use glib::clone; @@ -109,10 +109,10 @@ impl Screen<(Arc, Option), Medium> for MediumEditor { edit_button.set_valign(gtk::Align::Center); edit_button.set_child(Some(&edit_image)); - let row = ActionRowBuilder::new() + let row = adw::ActionRow::builder() .focusable(false) - .title(&title) - .subtitle(&subtitle) + .title(title) + .subtitle(subtitle) .activatable_widget(&edit_button) .build(); diff --git a/crates/musicus/src/import/medium_preview.rs b/crates/musicus/src/import/medium_preview.rs index 88b479d..a2591ab 100644 --- a/crates/musicus/src/import/medium_preview.rs +++ b/crates/musicus/src/import/medium_preview.rs @@ -1,11 +1,11 @@ use super::medium_editor::MediumEditor; use crate::navigator::{NavigationHandle, Screen}; use crate::widgets::Widget; -use adw::builders::ActionRowBuilder; + use anyhow::{anyhow, Result}; use gettextrs::gettext; use glib::clone; -use gtk::builders::{FrameBuilder, ListBoxBuilder}; + use gtk::prelude::*; use gtk_macros::get_widget; use musicus_backend::db::{self, Medium}; @@ -141,16 +141,16 @@ impl MediumPreview { if track.recording.id != last_recording_id { last_recording_id = &track.recording.id; - let list = ListBoxBuilder::new() + let list = gtk::ListBox::builder() .selection_mode(gtk::SelectionMode::None) .margin_bottom(12) .css_classes(vec![String::from("boxed-list")]) .build(); - let header = ActionRowBuilder::new() + let header = adw::ActionRow::builder() .activatable(false) - .title(&track.recording.work.get_title()) - .subtitle(&track.recording.get_performers()) + .title(track.recording.work.get_title()) + .subtitle(track.recording.get_performers()) .build(); list.append(&header); @@ -174,9 +174,9 @@ impl MediumPreview { parts.join(", ") }; - let row = ActionRowBuilder::new() + let row = adw::ActionRow::builder() .activatable(false) - .title(&title) + .title(title) .subtitle(&import_tracks[track.source_index].name) .margin_start(12) .build(); @@ -186,7 +186,7 @@ impl MediumPreview { } if let Some(list) = &last_list { - let frame = FrameBuilder::new().margin_bottom(12).build(); + let frame = gtk::Frame::builder().margin_bottom(12).build(); frame.set_child(Some(list)); self.medium_box.append(&frame); diff --git a/crates/musicus/src/import/track_editor.rs b/crates/musicus/src/import/track_editor.rs index fc93bee..678a243 100644 --- a/crates/musicus/src/import/track_editor.rs +++ b/crates/musicus/src/import/track_editor.rs @@ -1,9 +1,9 @@ use crate::navigator::{NavigationHandle, Screen}; use crate::widgets::Widget; -use adw::builders::ActionRowBuilder; + use adw::prelude::*; use glib::clone; -use gtk::builders::ListBoxBuilder; + use gtk_macros::get_widget; use musicus_backend::db::Recording; use std::cell::RefCell; @@ -31,7 +31,7 @@ impl Screen<(Recording, Vec), Vec> for TrackEditor { get_widget!(builder, gtk::Button, select_button); get_widget!(builder, adw::Clamp, clamp); - let parts_list = ListBoxBuilder::new() + let parts_list = gtk::ListBox::builder() .selection_mode(gtk::SelectionMode::None) .css_classes(vec![String::from("boxed-list")]) .build(); @@ -68,7 +68,7 @@ impl Screen<(Recording, Vec), Vec> for TrackEditor { } })); - let row = ActionRowBuilder::new() + let row = adw::ActionRow::builder() .focusable(false) .title(&part.title) .activatable_widget(&check) diff --git a/crates/musicus/src/import/track_selector.rs b/crates/musicus/src/import/track_selector.rs index c474180..8a3c4fd 100644 --- a/crates/musicus/src/import/track_selector.rs +++ b/crates/musicus/src/import/track_selector.rs @@ -1,9 +1,9 @@ use crate::navigator::{NavigationHandle, Screen}; use crate::widgets::Widget; -use adw::builders::ActionRowBuilder; + use adw::prelude::*; use glib::clone; -use gtk::builders::ListBoxBuilder; + use gtk_macros::get_widget; use musicus_backend::import::ImportSession; use std::cell::RefCell; @@ -31,7 +31,7 @@ impl Screen, Vec> for TrackSelector { get_widget!(builder, gtk::Button, select_button); get_widget!(builder, adw::Clamp, clamp); - let track_list = ListBoxBuilder::new() + let track_list = gtk::ListBox::builder() .selection_mode(gtk::SelectionMode::None) .css_classes(vec![String::from("boxed-list")]) .build(); @@ -78,7 +78,7 @@ impl Screen, Vec> for TrackSelector { } })); - let row = ActionRowBuilder::new() + let row = adw::ActionRow::builder() .focusable(false) .title(&track.name) .activatable_widget(&check) diff --git a/crates/musicus/src/import/track_set_editor.rs b/crates/musicus/src/import/track_set_editor.rs index 83e3947..526d626 100644 --- a/crates/musicus/src/import/track_set_editor.rs +++ b/crates/musicus/src/import/track_set_editor.rs @@ -3,7 +3,7 @@ use super::track_selector::TrackSelector; use crate::navigator::{NavigationHandle, Screen}; use crate::selectors::RecordingSelector; use crate::widgets::{List, Widget}; -use adw::builders::ActionRowBuilder; + use adw::prelude::*; use gettextrs::gettext; use glib::clone; @@ -145,9 +145,9 @@ impl Screen, TrackSetData> for TrackSetEditor { edit_button.set_valign(gtk::Align::Center); edit_button.set_child(Some(&edit_image)); - let row = ActionRowBuilder::new() + let row = adw::ActionRow::builder() .focusable(false) - .title(&title) + .title(title) .subtitle(track_name) .activatable_widget(&edit_button) .build(); diff --git a/crates/musicus/src/navigator/mod.rs b/crates/musicus/src/navigator/mod.rs index 526ae7f..b59b45d 100644 --- a/crates/musicus/src/navigator/mod.rs +++ b/crates/musicus/src/navigator/mod.rs @@ -2,7 +2,7 @@ use crate::widgets::Widget; use futures_channel::oneshot; use futures_channel::oneshot::{Receiver, Sender}; use glib::clone; -use gtk::builders::StackBuilder; + use gtk::prelude::*; use musicus_backend::Backend; use std::cell::{Cell, RefCell}; @@ -97,7 +97,7 @@ impl Navigator { W: IsA, E: IsA, { - let widget = StackBuilder::new() + let widget = gtk::Stack::builder() .hhomogeneous(false) .vhomogeneous(false) .interpolate_size(true) diff --git a/crates/musicus/src/screens/ensemble.rs b/crates/musicus/src/screens/ensemble.rs index 9a78944..f8df788 100644 --- a/crates/musicus/src/screens/ensemble.rs +++ b/crates/musicus/src/screens/ensemble.rs @@ -3,7 +3,7 @@ use crate::editors::EnsembleEditor; use crate::navigator::{NavigationHandle, NavigatorWindow, Screen}; use crate::widgets; use crate::widgets::{List, Section, Widget}; -use adw::builders::ActionRowBuilder; + use adw::prelude::*; use gettextrs::gettext; use glib::clone; @@ -75,10 +75,10 @@ impl Screen for EnsembleScreen { clone!(@weak this => @default-panic, move |index| { let recording = &this.recordings.borrow()[index]; - let row = ActionRowBuilder::new() + let row = adw::ActionRow::builder() .activatable(true) - .title(&recording.work.get_title()) - .subtitle(&recording.get_performers()) + .title(recording.work.get_title()) + .subtitle(recording.get_performers()) .build(); let recording = recording.to_owned(); @@ -105,7 +105,7 @@ impl Screen for EnsembleScreen { .set_make_widget_cb(clone!(@weak this => @default-panic, move |index| { let medium = &this.mediums.borrow()[index]; - let row = ActionRowBuilder::new() + let row = adw::ActionRow::builder() .activatable(true) .title(&medium.name) .build(); diff --git a/crates/musicus/src/screens/main.rs b/crates/musicus/src/screens/main.rs index 9c2c38f..c8dbd70 100644 --- a/crates/musicus/src/screens/main.rs +++ b/crates/musicus/src/screens/main.rs @@ -4,7 +4,7 @@ use crate::import::SourceSelector; use crate::navigator::{NavigationHandle, Navigator, NavigatorWindow, Screen}; use crate::preferences::Preferences; use crate::widgets::{List, PlayerBar, Widget}; -use adw::builders::ActionRowBuilder; + use adw::prelude::*; use gettextrs::gettext; use glib::clone; @@ -102,9 +102,9 @@ impl Screen<(), ()> for MainScreen { .set_make_widget_cb(clone!(@weak this => @default-panic, move |index| { let poe = &this.poes.borrow()[index]; - let row = ActionRowBuilder::new() + let row = adw::ActionRow::builder() .activatable(true) - .title(&poe.get_title()) + .title(poe.get_title()) .build(); let poe = poe.to_owned(); @@ -207,13 +207,13 @@ impl MainScreen { copy_button.connect_clicked(clone!(@weak logger, @weak toast_overlay => move |widget| { widget.clipboard().set_text(&logger.messages().into_iter().map(|m| m.to_string()).collect::>().join("\n")); - toast_overlay.add_toast(&adw::Toast::builder().title(&gettext("Copied to clipboard")).build()); + toast_overlay.add_toast(adw::Toast::builder().title(gettext("Copied to clipboard")).build()); })); let header = adw::HeaderBar::builder() .title_widget( &adw::WindowTitle::builder() - .title(&gettext("Debug log")) + .title(gettext("Debug log")) .build(), ) .build(); @@ -227,7 +227,7 @@ impl MainScreen { for message in logger.messages() { log_list.append( &adw::ActionRow::builder() - .title(&format!( + .title(format!( "{} {} {}", message.level, message.time.format("%Y-%m-%d %H:%M:%S"), @@ -255,7 +255,7 @@ impl MainScreen { adw::Window::builder() .transient_for(&self.handle.window) .modal(true) - .title(&gettext("Debug log")) + .title(gettext("Debug log")) .default_width(640) .default_height(480) .content(&toast_overlay) @@ -269,10 +269,10 @@ impl MainScreen { .transient_for(&self.handle.window) .modal(true) .application_icon("de.johrpan.musicus") - .application_name(&gettext("Musicus")) + .application_name(gettext("Musicus")) .developer_name("Elias Projahn") .version(config::VERSION) - .comments(&gettext("The classical music player and organizer.")) + .comments(gettext("The classical music player and organizer.")) .website("https://code.johrpan.de/johrpan/musicus") .developers(vec![String::from("Elias Projahn ")]) .copyright("© 2022 Elias Projahn") diff --git a/crates/musicus/src/screens/medium.rs b/crates/musicus/src/screens/medium.rs index ec789f7..98567de 100644 --- a/crates/musicus/src/screens/medium.rs +++ b/crates/musicus/src/screens/medium.rs @@ -1,7 +1,7 @@ use crate::navigator::{NavigationHandle, Screen}; use crate::widgets; use crate::widgets::{List, Section, Widget}; -use adw::builders::ActionRowBuilder; + use adw::prelude::*; use gettextrs::gettext; use glib::clone; @@ -75,10 +75,10 @@ impl Screen for MediumScreen { parts.join(", ") }; - let row = ActionRowBuilder::new() + let row = adw::ActionRow::builder() .margin_start(12) .selectable(false) - .title(&title) + .title(title) .build(); row.upcast() diff --git a/crates/musicus/src/screens/person.rs b/crates/musicus/src/screens/person.rs index 3ceb2f0..664abb2 100644 --- a/crates/musicus/src/screens/person.rs +++ b/crates/musicus/src/screens/person.rs @@ -3,7 +3,7 @@ use crate::editors::PersonEditor; use crate::navigator::{NavigationHandle, NavigatorWindow, Screen}; use crate::widgets; use crate::widgets::{List, Section, Widget}; -use adw::builders::ActionRowBuilder; + use adw::prelude::*; use gettextrs::gettext; use glib::clone; @@ -81,7 +81,7 @@ impl Screen for PersonScreen { .set_make_widget_cb(clone!(@weak this => @default-panic, move |index| { let work = &this.works.borrow()[index]; - let row = ActionRowBuilder::new() + let row = adw::ActionRow::builder() .activatable(true) .title(&work.title) .build(); @@ -109,10 +109,10 @@ impl Screen for PersonScreen { clone!(@weak this => @default-panic, move |index| { let recording = &this.recordings.borrow()[index]; - let row = ActionRowBuilder::new() + let row = adw::ActionRow::builder() .activatable(true) - .title(&recording.work.get_title()) - .subtitle(&recording.get_performers()) + .title(recording.work.get_title()) + .subtitle(recording.get_performers()) .build(); let recording = recording.to_owned(); @@ -139,7 +139,7 @@ impl Screen for PersonScreen { .set_make_widget_cb(clone!(@weak this => @default-panic, move |index| { let medium = &this.mediums.borrow()[index]; - let row = ActionRowBuilder::new() + let row = adw::ActionRow::builder() .activatable(true) .title(&medium.name) .build(); diff --git a/crates/musicus/src/screens/player.rs b/crates/musicus/src/screens/player.rs index e4232d7..ca8a92c 100644 --- a/crates/musicus/src/screens/player.rs +++ b/crates/musicus/src/screens/player.rs @@ -65,7 +65,7 @@ impl Screen<(), ()> for PlayerScreen { content.append(&list.widget); let event_controller = gtk::EventControllerLegacy::new(); - position_scale.add_controller(&event_controller); + position_scale.add_controller(event_controller.clone()); let this = Rc::new(Self { handle, diff --git a/crates/musicus/src/screens/recording.rs b/crates/musicus/src/screens/recording.rs index 29666b0..49d272a 100644 --- a/crates/musicus/src/screens/recording.rs +++ b/crates/musicus/src/screens/recording.rs @@ -2,7 +2,7 @@ use crate::editors::RecordingEditor; use crate::navigator::{NavigationHandle, NavigatorWindow, Screen}; use crate::widgets; use crate::widgets::{List, Section, Widget}; -use adw::builders::ActionRowBuilder; + use adw::prelude::*; use gettextrs::gettext; use glib::clone; @@ -85,8 +85,8 @@ impl Screen for RecordingScreen { title_parts.join(", ") }; - let row = ActionRowBuilder::new() - .title(&title) + let row = adw::ActionRow::builder() + .title(title) .build(); row.upcast() diff --git a/crates/musicus/src/screens/welcome.rs b/crates/musicus/src/screens/welcome.rs index b287a39..3f41826 100644 --- a/crates/musicus/src/screens/welcome.rs +++ b/crates/musicus/src/screens/welcome.rs @@ -1,9 +1,7 @@ use crate::navigator::{NavigationHandle, Screen}; use crate::widgets::Widget; -use adw::builders::{HeaderBarBuilder, StatusPageBuilder}; use gettextrs::gettext; use glib::clone; -use gtk::builders::{BoxBuilder, ButtonBuilder}; use gtk::prelude::*; use std::rc::Rc; @@ -17,23 +15,23 @@ pub struct WelcomeScreen { impl Screen<(), ()> for WelcomeScreen { fn new(_: (), handle: NavigationHandle<()>) -> Rc { - let widget = BoxBuilder::new() + let widget = gtk::Box::builder() .orientation(gtk::Orientation::Vertical) .build(); - let header = HeaderBarBuilder::new() + let header = gtk::HeaderBar::builder() .title_widget(&adw::WindowTitle::new("Musicus", "")) .build(); - let button = ButtonBuilder::new() + let button = gtk::Button::builder() .halign(gtk::Align::Center) - .label(&gettext("Select folder")) + .label(gettext("Select folder")) .build(); - let welcome = StatusPageBuilder::new() + let welcome = adw::StatusPage::builder() .icon_name("folder-music-symbolic") - .title(&gettext("Welcome to Musicus!")) - .description(&gettext( + .title(gettext("Welcome to Musicus!")) + .description(gettext( "Get startet by selecting the folder containing your music \ files! Musicus will create a new database there or open one that already exists.", )) diff --git a/crates/musicus/src/screens/work.rs b/crates/musicus/src/screens/work.rs index 02780f7..e8bf5bc 100644 --- a/crates/musicus/src/screens/work.rs +++ b/crates/musicus/src/screens/work.rs @@ -3,7 +3,7 @@ use crate::editors::WorkEditor; use crate::navigator::{NavigationHandle, NavigatorWindow, Screen}; use crate::widgets; use crate::widgets::{List, Section, Widget}; -use adw::builders::ActionRowBuilder; + use adw::prelude::*; use gettextrs::gettext; use glib::clone; @@ -70,10 +70,10 @@ impl Screen for WorkScreen { clone!(@weak this => @default-panic, move |index| { let recording = &this.recordings.borrow()[index]; - let row = ActionRowBuilder::new() + let row = adw::ActionRow::builder() .activatable(true) - .title(&recording.work.get_title()) - .subtitle(&recording.get_performers()) + .title(recording.work.get_title()) + .subtitle(recording.get_performers()) .build(); let recording = recording.to_owned(); diff --git a/crates/musicus/src/selectors/ensemble.rs b/crates/musicus/src/selectors/ensemble.rs index c73f527..dd45a64 100644 --- a/crates/musicus/src/selectors/ensemble.rs +++ b/crates/musicus/src/selectors/ensemble.rs @@ -2,12 +2,12 @@ use super::selector::Selector; use crate::editors::EnsembleEditor; use crate::navigator::{NavigationHandle, Screen}; use crate::widgets::Widget; -use adw::builders::ActionRowBuilder; + use adw::prelude::*; use gettextrs::gettext; use glib::clone; use log::warn; -use musicus_backend::db::{Ensemble, self}; +use musicus_backend::db::{self, Ensemble}; use std::rc::Rc; /// A screen for selecting a ensemble. @@ -42,7 +42,7 @@ impl Screen<(), Ensemble> for EnsembleSelector { this.selector .set_make_widget(clone!(@weak this => @default-panic, move |ensemble| { - let row = ActionRowBuilder::new() + let row = adw::ActionRow::builder() .activatable(true) .title(&ensemble.name) .build(); @@ -63,8 +63,9 @@ impl Screen<(), Ensemble> for EnsembleSelector { this.selector .set_filter(|search, ensemble| ensemble.name.to_lowercase().contains(search)); - this.selector - .set_items(db::get_recent_ensembles(&mut this.handle.backend.db().lock().unwrap(), ).unwrap()); + this.selector.set_items( + db::get_recent_ensembles(&mut this.handle.backend.db().lock().unwrap()).unwrap(), + ); this } diff --git a/crates/musicus/src/selectors/instrument.rs b/crates/musicus/src/selectors/instrument.rs index 4843b26..2e42312 100644 --- a/crates/musicus/src/selectors/instrument.rs +++ b/crates/musicus/src/selectors/instrument.rs @@ -2,12 +2,12 @@ use super::selector::Selector; use crate::editors::InstrumentEditor; use crate::navigator::{NavigationHandle, Screen}; use crate::widgets::Widget; -use adw::builders::ActionRowBuilder; + use adw::prelude::*; use gettextrs::gettext; use glib::clone; use log::warn; -use musicus_backend::db::{Instrument, self}; +use musicus_backend::db::{self, Instrument}; use std::rc::Rc; /// A screen for selecting a instrument. @@ -42,7 +42,7 @@ impl Screen<(), Instrument> for InstrumentSelector { this.selector .set_make_widget(clone!(@weak this => @default-panic, move |instrument| { - let row = ActionRowBuilder::new() + let row = adw::ActionRow::builder() .activatable(true) .title(&instrument.name) .build(); @@ -63,8 +63,9 @@ impl Screen<(), Instrument> for InstrumentSelector { this.selector .set_filter(|search, instrument| instrument.name.to_lowercase().contains(search)); - this.selector - .set_items(db::get_recent_instruments(&mut this.handle.backend.db().lock().unwrap(), ).unwrap()); + this.selector.set_items( + db::get_recent_instruments(&mut this.handle.backend.db().lock().unwrap()).unwrap(), + ); this } diff --git a/crates/musicus/src/selectors/medium.rs b/crates/musicus/src/selectors/medium.rs index ee68e0b..c3b1833 100644 --- a/crates/musicus/src/selectors/medium.rs +++ b/crates/musicus/src/selectors/medium.rs @@ -1,7 +1,7 @@ use super::selector::Selector; use crate::navigator::{NavigationHandle, Screen}; use crate::widgets::Widget; -use adw::builders::ActionRowBuilder; + use adw::prelude::*; use gettextrs::gettext; use glib::clone; @@ -31,9 +31,9 @@ impl Screen<(), Medium> for MediumSelector { })); this.selector.set_make_widget(clone!(@weak this => @default-panic, move |poe| { - let row = ActionRowBuilder::new() + let row = adw::ActionRow::builder() .activatable(true) - .title(&poe.get_title()) + .title(poe.get_title()) .build(); let poe = poe.to_owned(); @@ -106,7 +106,7 @@ impl Screen for MediumSelectorMediumScreen { this.selector .set_make_widget(clone!(@weak this => @default-panic, move |medium| { - let row = ActionRowBuilder::new() + let row = adw::ActionRow::builder() .activatable(true) .title(&medium.name) .build(); diff --git a/crates/musicus/src/selectors/person.rs b/crates/musicus/src/selectors/person.rs index ef9957d..3a27714 100644 --- a/crates/musicus/src/selectors/person.rs +++ b/crates/musicus/src/selectors/person.rs @@ -2,12 +2,12 @@ use super::selector::Selector; use crate::editors::PersonEditor; use crate::navigator::{NavigationHandle, Screen}; use crate::widgets::Widget; -use adw::builders::ActionRowBuilder; + use adw::prelude::*; use gettextrs::gettext; use glib::clone; use log::warn; -use musicus_backend::db::{Person, self}; +use musicus_backend::db::{self, Person}; use std::rc::Rc; /// A screen for selecting a person. @@ -42,9 +42,9 @@ impl Screen<(), Person> for PersonSelector { this.selector .set_make_widget(clone!(@weak this => @default-panic, move |person| { - let row = ActionRowBuilder::new() + let row = adw::ActionRow::builder() .activatable(true) - .title(&person.name_lf()) + .title(person.name_lf()) .build(); let person = person.to_owned(); @@ -63,8 +63,9 @@ impl Screen<(), Person> for PersonSelector { this.selector .set_filter(|search, person| person.name_fl().to_lowercase().contains(search)); - this.selector - .set_items(db::get_recent_persons(&mut this.handle.backend.db().lock().unwrap(), ).unwrap()); + this.selector.set_items( + db::get_recent_persons(&mut this.handle.backend.db().lock().unwrap()).unwrap(), + ); this } diff --git a/crates/musicus/src/selectors/recording.rs b/crates/musicus/src/selectors/recording.rs index 16e693a..7557ad6 100644 --- a/crates/musicus/src/selectors/recording.rs +++ b/crates/musicus/src/selectors/recording.rs @@ -2,7 +2,7 @@ use super::selector::Selector; use crate::editors::{PersonEditor, RecordingEditor, WorkEditor}; use crate::navigator::{NavigationHandle, Screen}; use crate::widgets::Widget; -use adw::builders::ActionRowBuilder; + use adw::prelude::*; use gettextrs::gettext; use glib::clone; @@ -53,9 +53,9 @@ impl Screen<(), Recording> for RecordingSelector { })); this.selector.set_make_widget(clone!(@weak this => @default-panic, move |person| { - let row = ActionRowBuilder::new() + let row = adw::ActionRow::builder() .activatable(true) - .title(&person.name_lf()) + .title(person.name_lf()) .build(); let person = person.to_owned(); @@ -129,7 +129,7 @@ impl Screen for RecordingSelectorWorkScreen { this.selector .set_make_widget(clone!(@weak this => @default-panic, move |work| { - let row = ActionRowBuilder::new() + let row = adw::ActionRow::builder() .activatable(true) .title(&work.title) .build(); @@ -197,9 +197,9 @@ impl Screen for RecordingSelectorRecordingScreen { this.selector .set_make_widget(clone!(@weak this => @default-panic, move |recording| { - let row = ActionRowBuilder::new() + let row = adw::ActionRow::builder() .activatable(true) - .title(&recording.get_performers()) + .title(recording.get_performers()) .build(); let recording = recording.to_owned(); diff --git a/crates/musicus/src/selectors/work.rs b/crates/musicus/src/selectors/work.rs index 3fd9697..a388423 100644 --- a/crates/musicus/src/selectors/work.rs +++ b/crates/musicus/src/selectors/work.rs @@ -2,12 +2,12 @@ use super::selector::Selector; use crate::editors::{PersonEditor, WorkEditor}; use crate::navigator::{NavigationHandle, Screen}; use crate::widgets::Widget; -use adw::builders::ActionRowBuilder; + use adw::prelude::*; use gettextrs::gettext; use glib::clone; use log::warn; -use musicus_backend::db::{Person, Work, self}; +use musicus_backend::db::{self, Person, Work}; use std::rc::Rc; /// A screen for selecting a work. @@ -47,9 +47,9 @@ impl Screen<(), Work> for WorkSelector { })); this.selector.set_make_widget(clone!(@weak this => @default-panic, move |person| { - let row = ActionRowBuilder::new() + let row = adw::ActionRow::builder() .activatable(true) - .title(&person.name_lf()) + .title(person.name_lf()) .build(); let person = person.to_owned(); @@ -71,8 +71,9 @@ impl Screen<(), Work> for WorkSelector { this.selector .set_filter(|search, person| person.name_fl().to_lowercase().contains(search)); - this.selector - .set_items(db::get_recent_persons(&mut this.handle.backend.db().lock().unwrap()).unwrap()); + this.selector.set_items( + db::get_recent_persons(&mut this.handle.backend.db().lock().unwrap()).unwrap(), + ); this } @@ -118,7 +119,7 @@ impl Screen for WorkSelectorWorkScreen { this.selector .set_make_widget(clone!(@weak this => @default-panic, move |work| { - let row = ActionRowBuilder::new() + let row = adw::ActionRow::builder() .activatable(true) .title(&work.title) .build(); @@ -138,8 +139,13 @@ impl Screen for WorkSelectorWorkScreen { this.selector .set_filter(|search, work| work.title.to_lowercase().contains(search)); - this.selector - .set_items(db::get_works(&mut this.handle.backend.db().lock().unwrap(), &this.person.id).unwrap()); + this.selector.set_items( + db::get_works( + &mut this.handle.backend.db().lock().unwrap(), + &this.person.id, + ) + .unwrap(), + ); this } diff --git a/crates/musicus/src/widgets/button_row.rs b/crates/musicus/src/widgets/button_row.rs index 19a8603..1d577f8 100644 --- a/crates/musicus/src/widgets/button_row.rs +++ b/crates/musicus/src/widgets/button_row.rs @@ -1,6 +1,5 @@ use super::Widget; -use adw::{builders::ActionRowBuilder, prelude::*}; -use gtk::builders::ButtonBuilder; +use adw::prelude::*; /// A list box row with a single button. pub struct ButtonRow { @@ -14,12 +13,12 @@ pub struct ButtonRow { impl ButtonRow { /// Create a new button row. pub fn new(title: &str, label: &str) -> Self { - let button = ButtonBuilder::new() + let button = gtk::Button::builder() .valign(gtk::Align::Center) .label(label) .build(); - let widget = ActionRowBuilder::new() + let widget = adw::ActionRow::builder() .focusable(false) .activatable_widget(&button) .title(title) diff --git a/crates/musicus/src/widgets/indexed_list_model.rs b/crates/musicus/src/widgets/indexed_list_model.rs index 3f52a93..924fb81 100644 --- a/crates/musicus/src/widgets/indexed_list_model.rs +++ b/crates/musicus/src/widgets/indexed_list_model.rs @@ -1,6 +1,6 @@ use gio::prelude::*; use gio::subclass::prelude::*; -use once_cell::sync::Lazy; + use std::cell::Cell; glib::wrapper! { @@ -12,24 +12,28 @@ glib::wrapper! { impl IndexedListModel { /// Set the length of the list model. pub fn set_length(&self, length: u32) { - let old_length = self.property("length"); - self.set_property("length", &length); + let old_length = self.n_items(); + self.set_n_items(length); self.items_changed(0, old_length, length); } } impl Default for IndexedListModel { fn default() -> Self { - glib::Object::new(&[]) + glib::Object::new() } } mod indexed_list_model_imp { + use glib::Properties; + use super::*; - #[derive(Debug, Default)] + #[derive(Properties, Default)] + #[properties(wrapper_type = super::IndexedListModel)] pub struct IndexedListModel { - length: Cell, + #[property(get, set)] + n_items: Cell, } #[glib::object_subclass] @@ -42,36 +46,15 @@ mod indexed_list_model_imp { impl ObjectImpl for IndexedListModel { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { - vec![glib::ParamSpecUInt::new( - "length", - "Length", - "Length", - 0, - std::u32::MAX, - 0, - glib::ParamFlags::READWRITE, - )] - }); - - PROPERTIES.as_ref() + Self::derived_properties() } - fn set_property(&self, _: usize, value: &glib::Value, pspec: &glib::ParamSpec) { - match pspec.name() { - "length" => { - let length = value.get::().unwrap(); - self.length.set(length); - } - _ => unimplemented!(), - } + fn set_property(&self, id: usize, value: &glib::Value, pspec: &glib::ParamSpec) { + self.derived_set_property(id, value, pspec) } - fn property(&self, _id: usize, pspec: &glib::ParamSpec) -> glib::Value { - match pspec.name() { - "length" => self.length.get().to_value(), - _ => unimplemented!(), - } + fn property(&self, id: usize, pspec: &glib::ParamSpec) -> glib::Value { + self.derived_property(id, pspec) } } @@ -81,7 +64,7 @@ mod indexed_list_model_imp { } fn n_items(&self) -> u32 { - self.length.get() + self.n_items.get() } fn item(&self, position: u32) -> Option { @@ -98,7 +81,9 @@ glib::wrapper! { impl ItemIndex { /// Create a new item index. pub fn new(value: u32) -> Self { - glib::Object::new(&[("value", &value)]) + let object = glib::Object::new::(); + object.set_value(value); + object } /// Get the value of the item index.. @@ -108,10 +93,14 @@ impl ItemIndex { } mod item_index_imp { + use glib::Properties; + use super::*; - #[derive(Debug, Default)] + #[derive(Properties, Default)] + #[properties(wrapper_type = super::ItemIndex)] pub struct ItemIndex { + #[property(get, set)] value: Cell, } @@ -125,36 +114,15 @@ mod item_index_imp { impl ObjectImpl for ItemIndex { fn properties() -> &'static [glib::ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { - vec![glib::ParamSpecUInt::new( - "value", - "Value", - "Value", - 0, - std::u32::MAX, - 0, - glib::ParamFlags::READWRITE, - )] - }); - - PROPERTIES.as_ref() + Self::derived_properties() } - fn set_property(&self, _: usize, value: &glib::Value, pspec: &glib::ParamSpec) { - match pspec.name() { - "value" => { - let value = value.get::().unwrap(); - self.value.set(value); - } - _ => unimplemented!(), - } + fn set_property(&self, id: usize, value: &glib::Value, pspec: &glib::ParamSpec) { + self.derived_set_property(id, value, pspec) } - fn property(&self, _id: usize, pspec: &glib::ParamSpec) -> glib::Value { - match pspec.name() { - "value" => self.value.get().to_value(), - _ => unimplemented!(), - } + fn property(&self, id: usize, pspec: &glib::ParamSpec) -> glib::Value { + self.derived_property(id, pspec) } } } diff --git a/crates/musicus/src/widgets/list.rs b/crates/musicus/src/widgets/list.rs index ea8ca79..c34db4c 100644 --- a/crates/musicus/src/widgets/list.rs +++ b/crates/musicus/src/widgets/list.rs @@ -1,6 +1,6 @@ use super::indexed_list_model::{IndexedListModel, ItemIndex}; use glib::clone; -use gtk::{builders::ListBoxBuilder, gdk, prelude::*}; +use gtk::{gdk, prelude::*}; use std::cell::{Cell, RefCell}; use std::rc::Rc; @@ -20,14 +20,14 @@ impl List { pub fn new() -> Rc { let model = IndexedListModel::default(); let filter = gtk::CustomFilter::new(|_| true); - let filter_model = gtk::FilterListModel::new(Some(&model), Some(&filter)); + let filter_model = gtk::FilterListModel::new(Some(model.clone()), Some(filter.clone())); // TODO: Switch to gtk::ListView. // let selection = gtk::NoSelection::new(Some(&model)); // let factory = gtk::SignalListItemFactory::new(); // let widget = gtk::ListView::new(Some(&selection), Some(&factory)); - let widget = ListBoxBuilder::new() + let widget = gtk::ListBox::builder() .selection_mode(gtk::SelectionMode::None) .css_classes(vec![String::from("boxed-list")]) .build(); @@ -45,7 +45,7 @@ impl List { this.filter .set_filter_func(clone!(@strong this => move |index| { if let Some(cb) = &*this.filter_cb.borrow() { - let index = index.downcast_ref::().unwrap().get() as usize; + let index = index.downcast_ref::().unwrap().value() as usize; cb(index) } else { true @@ -81,8 +81,8 @@ impl List { } })); - widget.add_controller(&drag_source); - widget.add_controller(&drop_target); + widget.add_controller(drag_source); + widget.add_controller(drop_target); } widget @@ -109,6 +109,7 @@ impl List { /// false, the item will not be shown. pub fn set_filter_cb bool + 'static>(&self, cb: F) { self.filter_cb.replace(Some(Box::new(cb))); + self.invalidate_filter(); } /// Set the closure to be called to when the use has dragged an item to a diff --git a/crates/musicus/src/widgets/section.rs b/crates/musicus/src/widgets/section.rs index fe4da37..0e78319 100644 --- a/crates/musicus/src/widgets/section.rs +++ b/crates/musicus/src/widgets/section.rs @@ -1,5 +1,5 @@ use super::Widget; -use gtk::{builders::ButtonBuilder, prelude::*}; +use gtk::prelude::*; use gtk_macros::get_widget; /// A widget displaying a title, a framed child widget and, if needed, some @@ -46,7 +46,7 @@ impl Section { /// situations where the widget is visible. The new button will be packed /// to the end of the title box. pub fn add_action(&self, icon_name: &str, cb: F) { - let button = ButtonBuilder::new() + let button = gtk::Button::builder() .has_frame(false) .valign(gtk::Align::Center) .margin_top(12) diff --git a/crates/musicus/src/window.rs b/crates/musicus/src/window.rs index f7cb6f7..35a48f7 100644 --- a/crates/musicus/src/window.rs +++ b/crates/musicus/src/window.rs @@ -1,9 +1,9 @@ use crate::navigator::Navigator; use crate::screens::{MainScreen, WelcomeScreen}; -use adw::builders::HeaderBarBuilder; + use adw::prelude::*; use glib::clone; -use gtk::builders::{BoxBuilder, SpinnerBuilder}; + use musicus_backend::{Backend, BackendState}; use std::rc::Rc; @@ -23,15 +23,15 @@ impl Window { window.set_title(Some("Musicus")); window.set_default_size(1000, 707); - let loading_screen = BoxBuilder::new() + let loading_screen = gtk::Box::builder() .orientation(gtk::Orientation::Vertical) .build(); - let header = HeaderBarBuilder::new() + let header = gtk::HeaderBar::builder() .title_widget(&adw::WindowTitle::new("Musicus", "")) .build(); - let spinner = SpinnerBuilder::new() + let spinner = gtk::Spinner::builder() .hexpand(true) .vexpand(true) .halign(gtk::Align::Center)