From ff17549b8b29f46b3db33473e9ec864b5b985932 Mon Sep 17 00:00:00 2001 From: Elias Projahn Date: Sat, 16 Apr 2022 12:24:30 +0200 Subject: [PATCH] Update gtk-rs crates --- Cargo.lock | 397 ++++++++++------------ backend/Cargo.toml | 10 +- backend/src/player.rs | 2 +- import/Cargo.toml | 6 +- import/src/disc.rs | 4 +- musicus/Cargo.toml | 14 +- musicus/src/editors/ensemble.rs | 5 +- musicus/src/editors/instrument.rs | 5 +- musicus/src/editors/performance.rs | 9 +- musicus/src/editors/person.rs | 4 +- musicus/src/editors/recording.rs | 7 +- musicus/src/editors/work.rs | 11 +- musicus/src/import/import_screen.rs | 3 +- musicus/src/import/medium_editor.rs | 5 +- musicus/src/import/medium_preview.rs | 10 +- musicus/src/import/track_editor.rs | 6 +- musicus/src/import/track_selector.rs | 6 +- musicus/src/import/track_set_editor.rs | 5 +- musicus/src/main.rs | 4 +- musicus/src/navigator/mod.rs | 3 +- musicus/src/screens/ensemble.rs | 5 +- musicus/src/screens/main.rs | 6 +- musicus/src/screens/medium.rs | 3 +- musicus/src/screens/person.rs | 7 +- musicus/src/screens/recording.rs | 3 +- musicus/src/screens/welcome.rs | 10 +- musicus/src/screens/work.rs | 3 +- musicus/src/selectors/ensemble.rs | 3 +- musicus/src/selectors/instrument.rs | 3 +- musicus/src/selectors/medium.rs | 5 +- musicus/src/selectors/person.rs | 3 +- musicus/src/selectors/recording.rs | 7 +- musicus/src/selectors/work.rs | 5 +- musicus/src/widgets/button_row.rs | 7 +- musicus/src/widgets/entry_row.rs | 7 +- musicus/src/widgets/indexed_list_model.rs | 10 +- musicus/src/widgets/list.rs | 3 +- musicus/src/widgets/section.rs | 4 +- musicus/src/window.rs | 27 +- 39 files changed, 324 insertions(+), 313 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 07531ab..dec144e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -69,26 +69,26 @@ checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" [[package]] name = "cairo-rs" -version = "0.14.9" +version = "0.15.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33b5725979db0c586d98abad2193cdb612dd40ef95cd26bd99851bf93b3cb482" +checksum = "129e928d3eda625f53ce257589efbe5143416875fd01bddd08c8c6feb8b9962b" dependencies = [ "bitflags", "cairo-sys-rs", - "glib 0.14.8", + "glib 0.15.10", "libc", "thiserror", ] [[package]] name = "cairo-sys-rs" -version = "0.14.9" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b448b876970834fda82ba3aeaccadbd760206b75388fc5c1b02f1e343b697570" +checksum = "3c55d429bef56ac9172d25fecb85dc8068307d17acd74b377866b7a1ef25d3c8" dependencies = [ - "glib-sys 0.14.0", + "glib-sys 0.15.10", "libc", - "system-deps 3.2.0", + "system-deps 6.0.2", ] [[package]] @@ -99,18 +99,9 @@ checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11" [[package]] name = "cfg-expr" -version = "0.8.1" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b412e83326147c2bb881f8b40edfbf9905b9b8abaebd0e47ca190ba62fda8f0e" -dependencies = [ - "smallvec", -] - -[[package]] -name = "cfg-expr" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3431df59f28accaf4cb4eed4a9acc66bea3f3c3753aa6cdc2f024174ef232af7" +checksum = "5e068cb2806bbc15b439846dc16c5f89f8599f2c3e4d73d4449d38f9b2f0b6c5" dependencies = [ "smallvec", ] @@ -281,60 +272,61 @@ dependencies = [ [[package]] name = "gdk-pixbuf" -version = "0.14.0" +version = "0.15.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "534192cb8f01daeb8fab2c8d4baa8f9aae5b7a39130525779f5c2608e235b10f" +checksum = "678516f1baef591d270ca10587c01a12542a731a7879cc62391a18191a470831" dependencies = [ + "bitflags", "gdk-pixbuf-sys", "gio", - "glib 0.14.8", + "glib 0.15.10", "libc", ] [[package]] name = "gdk-pixbuf-sys" -version = "0.14.0" +version = "0.15.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f097c0704201fbc8f69c1762dc58c6947c8bb188b8ed0bc7e65259f1894fe590" +checksum = "140b2f5378256527150350a8346dbdb08fadc13453a7a2d73aecd5fab3c402a7" dependencies = [ "gio-sys", - "glib-sys 0.14.0", - "gobject-sys 0.14.0", + "glib-sys 0.15.10", + "gobject-sys 0.15.10", "libc", - "system-deps 3.2.0", + "system-deps 6.0.2", ] [[package]] name = "gdk4" -version = "0.3.1" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f97a162c17214d1bf981af3f683156a0b1667dd1927057c4f0a68513251ecf0f" +checksum = "d4a2fc0bd03d59383fc10b71a8cb731a1fac2998732a36a0c03e9b1de1513218" dependencies = [ "bitflags", "cairo-rs", "gdk-pixbuf", "gdk4-sys", "gio", - "glib 0.14.8", + "glib 0.15.10", "libc", "pango", ] [[package]] name = "gdk4-sys" -version = "0.3.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9498f4e06969fb96a4e4234dfe1d308a3ac6b120b3c6d93e3ec5c77fe88bc6d5" +checksum = "48a39e34abe35ee2cf54a1e29dd983accecd113ad30bdead5050418fa92f2a1b" dependencies = [ "cairo-sys-rs", "gdk-pixbuf-sys", "gio-sys", - "glib-sys 0.14.0", - "gobject-sys 0.14.0", - "graphene-sys", + "glib-sys 0.15.10", + "gobject-sys 0.15.10", "libc", "pango-sys", - "system-deps 5.0.0", + "pkg-config", + "system-deps 6.0.2", ] [[package]] @@ -371,9 +363,9 @@ dependencies = [ [[package]] name = "gettext-rs" -version = "0.5.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b95fa19cca70adf9888150e979839ae9bd58f85a1a42e4753699112875189e1" +checksum = "e49ea8a8fad198aaa1f9655a2524b64b70eb06b2f3ff37da407566c93054f364" dependencies = [ "gettext-sys", "locale_config", @@ -381,25 +373,26 @@ dependencies = [ [[package]] name = "gettext-sys" -version = "0.19.9" +version = "0.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e034c4ba5bb796730a6cc5eb0d654c16885006a7c3d6c6603581ed809434f153" +checksum = "c63ce2e00f56a206778276704bbe38564c8695249fdc8f354b4ef71c57c3839d" dependencies = [ "cc", + "temp-dir", ] [[package]] name = "gio" -version = "0.14.8" +version = "0.15.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "711c3632b3ebd095578a9c091418d10fed492da9443f58ebc8f45efbeb215cb0" +checksum = "76cd21a7a674ea811749661012512b0ba5237ba404ccbcab2850db5537549b64" dependencies = [ "bitflags", "futures-channel", "futures-core", "futures-io", "gio-sys", - "glib 0.14.8", + "glib 0.15.10", "libc", "once_cell", "thiserror", @@ -407,14 +400,14 @@ dependencies = [ [[package]] name = "gio-sys" -version = "0.14.0" +version = "0.15.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0a41df66e57fcc287c4bcf74fc26b884f31901ea9792ec75607289b456f48fa" +checksum = "32157a475271e2c4a023382e9cab31c4584ee30a97da41d3c4e9fdd605abcf8d" dependencies = [ - "glib-sys 0.14.0", - "gobject-sys 0.14.0", + "glib-sys 0.15.10", + "gobject-sys 0.15.10", "libc", - "system-deps 3.2.0", + "system-deps 6.0.2", "winapi", ] @@ -439,21 +432,22 @@ dependencies = [ [[package]] name = "glib" -version = "0.14.8" +version = "0.15.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c515f1e62bf151ef6635f528d05b02c11506de986e43b34a5c920ef0b3796a4" +checksum = "a826fad715b57834920839d7a594c3b5e416358c7d790bdaba847a40d7c1d96d" dependencies = [ "bitflags", "futures-channel", "futures-core", "futures-executor", "futures-task", - "glib-macros 0.14.1", - "glib-sys 0.14.0", - "gobject-sys 0.14.0", + "glib-macros 0.15.10", + "glib-sys 0.15.10", + "gobject-sys 0.15.10", "libc", "once_cell", "smallvec", + "thiserror", ] [[package]] @@ -463,8 +457,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "41486a26d1366a8032b160b59065a59fb528530a46a49f627e7048fb8c064039" dependencies = [ "anyhow", - "heck", - "itertools 0.9.0", + "heck 0.3.3", + "itertools", "proc-macro-crate 0.1.5", "proc-macro-error", "proc-macro2", @@ -474,12 +468,12 @@ dependencies = [ [[package]] name = "glib-macros" -version = "0.14.1" +version = "0.15.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2aad66361f66796bfc73f530c51ef123970eb895ffba991a234fcf7bea89e518" +checksum = "dac4d47c544af67747652ab1865ace0ffa1155709723ac4f32e97587dd4735b2" dependencies = [ "anyhow", - "heck", + "heck 0.4.0", "proc-macro-crate 1.1.3", "proc-macro-error", "proc-macro2", @@ -499,12 +493,12 @@ dependencies = [ [[package]] name = "glib-sys" -version = "0.14.0" +version = "0.15.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c1d60554a212445e2a858e42a0e48cece1bd57b311a19a9468f70376cf554ae" +checksum = "ef4b192f8e65e9cf76cbf4ea71fa8e3be4a0e18ffe3d68b8da6836974cc5bad4" dependencies = [ "libc", - "system-deps 3.2.0", + "system-deps 6.0.2", ] [[package]] @@ -520,48 +514,48 @@ dependencies = [ [[package]] name = "gobject-sys" -version = "0.14.0" +version = "0.15.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa92cae29759dae34ab5921d73fff5ad54b3d794ab842c117e36cafc7994c3f5" +checksum = "0d57ce44246becd17153bd035ab4d32cfee096a657fc01f2231c9278378d1e0a" dependencies = [ - "glib-sys 0.14.0", + "glib-sys 0.15.10", "libc", - "system-deps 3.2.0", + "system-deps 6.0.2", ] [[package]] name = "graphene-rs" -version = "0.14.8" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3380f132530ef9eb9e0a2bac180e30390aa5e49892d20294f822a974117a563" +checksum = "7c54f9fbbeefdb62c99f892dfca35f83991e2cb5b46a8dc2a715e58612f85570" dependencies = [ - "glib 0.14.8", + "glib 0.15.10", "graphene-sys", "libc", ] [[package]] name = "graphene-sys" -version = "0.14.8" +version = "0.15.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a9ac7450b3aa80792513a3c029920a2ede419de13fb5169a4e51b07a5685332" +checksum = "fa691fc7337ba1df599afb55c3bcb85c04f1b3f17362570e9bb0ff0d1bc3028a" dependencies = [ - "glib-sys 0.14.0", + "glib-sys 0.15.10", "libc", "pkg-config", - "system-deps 3.2.0", + "system-deps 6.0.2", ] [[package]] name = "gsk4" -version = "0.3.1" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eff59ca46c4fc5087fd7a0c3770a71ea4b6e94f8c24c12e2c2e8538f9f6fd764" +checksum = "14d5a47a78c682bb67496b562495ed84972c0512ba0654888c4dc92b80a85bd3" dependencies = [ "bitflags", "cairo-rs", "gdk4", - "glib 0.14.8", + "glib 0.15.10", "graphene-rs", "gsk4-sys", "libc", @@ -570,38 +564,39 @@ dependencies = [ [[package]] name = "gsk4-sys" -version = "0.3.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13aa53ce70234da02f9954339d988d5ab853d746a8f47a4ae17735ff873545b5" +checksum = "e31d21d7ce02ba261bb24c50c4ab238a10b41a2c97c32afffae29471b7cca69b" dependencies = [ "cairo-sys-rs", "gdk4-sys", - "glib-sys 0.14.0", - "gobject-sys 0.14.0", + "glib-sys 0.15.10", + "gobject-sys 0.15.10", "graphene-sys", "libc", "pango-sys", - "system-deps 5.0.0", + "system-deps 6.0.2", ] [[package]] name = "gstreamer" -version = "0.17.4" +version = "0.18.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6a255f142048ba2c4a4dce39106db1965abe355d23f4b5335edea43a553faa4" +checksum = "cd58af6f8b268fc335122a3ccc66efa0cd56584948f49a37e5feef0b89dfc29b" dependencies = [ "bitflags", "cfg-if", "futures-channel", "futures-core", "futures-util", - "glib 0.14.8", + "glib 0.15.10", "gstreamer-sys", "libc", "muldiv", "num-integer", "num-rational", "once_cell", + "option-operations", "paste", "pretty-hex", "thiserror", @@ -609,27 +604,27 @@ dependencies = [ [[package]] name = "gstreamer-audio-sys" -version = "0.17.0" +version = "0.18.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d066ddfd05f63836f35ac4a5830d5bb2f7f3d6c33c870e9b15c667d20f65d7f6" +checksum = "a34258fb53c558c0f41dad194037cbeaabf49d347570df11b8bd1c4897cf7d7c" dependencies = [ - "glib-sys 0.14.0", - "gobject-sys 0.14.0", + "glib-sys 0.15.10", + "gobject-sys 0.15.10", "gstreamer-base-sys", "gstreamer-sys", "libc", - "system-deps 3.2.0", + "system-deps 6.0.2", ] [[package]] name = "gstreamer-base" -version = "0.17.2" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c0c1d8c62eb5d08fb80173609f2eea71d385393363146e4e78107facbd67715" +checksum = "224f35f36582407caf58ded74854526beeecc23d0cf64b8d1c3e00584ed6863f" dependencies = [ "bitflags", "cfg-if", - "glib 0.14.8", + "glib 0.15.10", "gstreamer", "gstreamer-base-sys", "libc", @@ -637,25 +632,25 @@ dependencies = [ [[package]] name = "gstreamer-base-sys" -version = "0.17.0" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28169a7b58edb93ad8ac766f0fa12dcd36a2af4257a97ee10194c7103baf3e27" +checksum = "a083493c3c340e71fa7c66eebda016e9fafc03eb1b4804cf9b2bad61994b078e" dependencies = [ - "glib-sys 0.14.0", - "gobject-sys 0.14.0", + "glib-sys 0.15.10", + "gobject-sys 0.15.10", "gstreamer-sys", "libc", - "system-deps 3.2.0", + "system-deps 6.0.2", ] [[package]] name = "gstreamer-pbutils" -version = "0.17.2" +version = "0.18.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04cce8a8d8fb28bd5ea00433e8ea2e45a09a68e8b8b9ebe3d6552b33cb49c1b0" +checksum = "330684c49f79775d7acce8bef5a7a7475f02374c9c6cead39ced3ad423fc8ea9" dependencies = [ "bitflags", - "glib 0.14.8", + "glib 0.15.10", "gstreamer", "gstreamer-pbutils-sys", "libc", @@ -664,27 +659,27 @@ dependencies = [ [[package]] name = "gstreamer-pbutils-sys" -version = "0.17.0" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6b7507a2c0294755b530e41a402884f326b9dbdc322039aeabac9759c149d65" +checksum = "36f79839066fbcc6d1a8690b2f85d5cc5cdc0984f36d4054f5cc67a7ad3ab72d" dependencies = [ - "glib-sys 0.14.0", - "gobject-sys 0.14.0", + "glib-sys 0.15.10", + "gobject-sys 0.15.10", "gstreamer-audio-sys", "gstreamer-sys", "gstreamer-video-sys", "libc", - "system-deps 3.2.0", + "system-deps 6.0.2", ] [[package]] name = "gstreamer-player" -version = "0.17.0" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c503dba6f79b5cd8a4be5329119892c196db013ce66fce16079a7df8ce819a3a" +checksum = "5f14ee02352ba73cadebe640bfb33f12fe8d03cbcad816a102d55a0251fb99bb" dependencies = [ "bitflags", - "glib 0.14.8", + "glib 0.15.10", "gstreamer", "gstreamer-player-sys", "gstreamer-video", @@ -694,40 +689,40 @@ dependencies = [ [[package]] name = "gstreamer-player-sys" -version = "0.17.0" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e50bed2a120574750ea1370163df21b50762d0b4967f569fdc58232f4c930d5" +checksum = "1f9b674b39a4d0e18710f6e3d2b109f1793d8028ee4e39da3909b55b4529d399" dependencies = [ - "glib-sys 0.14.0", - "gobject-sys 0.14.0", + "glib-sys 0.15.10", + "gobject-sys 0.15.10", "gstreamer-sys", "gstreamer-video-sys", "libc", - "system-deps 3.2.0", + "system-deps 6.0.2", ] [[package]] name = "gstreamer-sys" -version = "0.17.3" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a81704feeb3e8599913bdd1e738455c2991a01ff4a1780cb62200993e454cc3e" +checksum = "e3517a65d3c2e6f8905b456eba5d53bda158d664863aef960b44f651cb7d33e2" dependencies = [ - "glib-sys 0.14.0", - "gobject-sys 0.14.0", + "glib-sys 0.15.10", + "gobject-sys 0.15.10", "libc", - "system-deps 3.2.0", + "system-deps 6.0.2", ] [[package]] name = "gstreamer-video" -version = "0.17.2" +version = "0.18.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3447ee95c8e79daec0b163260cf6a3de9bc19ff47a01b533787f900074a3476" +checksum = "9418adfc72dafa1ad9eb106527ce4804887d101027c4528ec28c7d29cc899519" dependencies = [ "bitflags", "cfg-if", "futures-channel", - "glib 0.14.8", + "glib 0.15.10", "gstreamer", "gstreamer-base", "gstreamer-video-sys", @@ -737,16 +732,16 @@ dependencies = [ [[package]] name = "gstreamer-video-sys" -version = "0.17.0" +version = "0.18.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b81608f4182bdddd5bd33aaaa341d5544eda12b067a3dab75b1b7d2de01a3ba7" +checksum = "33331b1675e73b5b000c796354278eca7fdde9327015971d9f41afe28b96e0dc" dependencies = [ - "glib-sys 0.14.0", - "gobject-sys 0.14.0", + "glib-sys 0.15.10", + "gobject-sys 0.15.10", "gstreamer-base-sys", "gstreamer-sys", "libc", - "system-deps 3.2.0", + "system-deps 6.0.2", ] [[package]] @@ -757,9 +752,9 @@ checksum = "da5bf7748fd4cd0b2490df8debcc911809dbcbee4ece9531b96c29a9c729de5a" [[package]] name = "gtk4" -version = "0.3.1" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58a04f421d1485ba4739e723199f5828bca05ab4e622ed39a96a342b6b1a6a3d" +checksum = "eb5d40303dabe4608fc260de2bd7563da6f85bc90af956323f0cd8ae0abcfe03" dependencies = [ "bitflags", "cairo-rs", @@ -768,7 +763,7 @@ dependencies = [ "gdk-pixbuf", "gdk4", "gio", - "glib 0.14.8", + "glib 0.15.10", "graphene-rs", "gsk4", "gtk4-macros", @@ -780,37 +775,36 @@ dependencies = [ [[package]] name = "gtk4-macros" -version = "0.3.1" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5068d4354af02454f44687adc613100aa98ae11e273cdcac84f89dc08be2b4a1" +checksum = "7f3c4aa605fb3d78205c7aef0eeaa6db61d8cc4dd05a465dc6ffdfdaee84f825" dependencies = [ "anyhow", - "heck", - "itertools 0.10.3", "proc-macro-crate 1.1.3", "proc-macro-error", "proc-macro2", + "quick-xml", "quote", "syn", ] [[package]] name = "gtk4-sys" -version = "0.3.1" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e20a64c8f0ddcff8902ff04c130747f2fb7834a43530f75d03d6c71335733b49" +checksum = "c47c075e8f795c38f6e9a47b51a73eab77b325f83c0154979ed4d4245c36490d" dependencies = [ "cairo-sys-rs", "gdk-pixbuf-sys", "gdk4-sys", "gio-sys", - "glib-sys 0.14.0", - "gobject-sys 0.14.0", + "glib-sys 0.15.10", + "gobject-sys 0.15.10", "graphene-sys", "gsk4-sys", "libc", "pango-sys", - "system-deps 5.0.0", + "system-deps 6.0.2", ] [[package]] @@ -822,6 +816,12 @@ dependencies = [ "unicode-segmentation", ] +[[package]] +name = "heck" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9" + [[package]] name = "itertools" version = "0.9.0" @@ -831,15 +831,6 @@ dependencies = [ "either", ] -[[package]] -name = "itertools" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9a9d19fa1e79b6215ff29b9d6880b706147f16e9b1dbb1e4e5947b5b02bc5e3" -dependencies = [ - "either", -] - [[package]] name = "lazy_static" version = "1.4.0" @@ -848,14 +839,14 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libadwaita" -version = "0.1.0-beta-1" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cef1e2d4b5490caff8a1d44648f68721ab917f765a7fa1d0226fcdac42d86552" +checksum = "f2ae453d28e3b91f03749f02b1531e8cfe315a1d0762b77a61797d2ab80bb87d" dependencies = [ "gdk-pixbuf", "gdk4", "gio", - "glib 0.14.8", + "glib 0.15.10", "gtk4", "libadwaita-sys", "libc", @@ -865,17 +856,17 @@ dependencies = [ [[package]] name = "libadwaita-sys" -version = "0.1.0-beta-1" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a165d8c96824753ec072b70a9149790efa3d5abb07e130cda7eb04ef2006d4c" +checksum = "f18b6ac4cadd252a89f5cba0a5a4e99836131795d6fad37b859ac79e8cb7d2c8" dependencies = [ "gdk4-sys", "gio-sys", - "glib-sys 0.14.0", - "gobject-sys 0.14.0", + "glib-sys 0.15.10", + "gobject-sys 0.15.10", "gtk4-sys", "libc", - "system-deps 3.2.0", + "system-deps 6.0.2", ] [[package]] @@ -996,7 +987,7 @@ dependencies = [ "gdk4", "gettext-rs", "gio", - "glib 0.14.8", + "glib 0.15.10", "gstreamer", "gtk-macros", "gtk4", @@ -1014,7 +1005,7 @@ version = "0.1.0" dependencies = [ "fragile", "gio", - "glib 0.14.8", + "glib 0.15.10", "gstreamer", "gstreamer-player", "log", @@ -1043,7 +1034,7 @@ name = "musicus_import" version = "0.1.0" dependencies = [ "base64", - "glib 0.14.8", + "glib 0.15.10", "gstreamer", "gstreamer-pbutils", "log", @@ -1126,13 +1117,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" [[package]] -name = "pango" -version = "0.14.8" +name = "option-operations" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "546fd59801e5ca735af82839007edd226fe7d3bb06433ec48072be4439c28581" +checksum = "95d6113415f41b268f1195907427519769e40ee6f28cbb053795098a2c16f447" +dependencies = [ + "paste", +] + +[[package]] +name = "pango" +version = "0.15.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22e4045548659aee5313bde6c582b0d83a627b7904dd20dc2d9ef0895d414e4f" dependencies = [ "bitflags", - "glib 0.14.8", + "glib 0.15.10", "libc", "once_cell", "pango-sys", @@ -1140,14 +1140,14 @@ dependencies = [ [[package]] name = "pango-sys" -version = "0.14.0" +version = "0.15.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2367099ca5e761546ba1d501955079f097caa186bb53ce0f718dca99ac1942fe" +checksum = "d2a00081cde4661982ed91d80ef437c20eacaf6aa1a5962c0279ae194662c3aa" dependencies = [ - "glib-sys 0.14.0", - "gobject-sys 0.14.0", + "glib-sys 0.15.10", + "gobject-sys 0.15.10", "libc", - "system-deps 3.2.0", + "system-deps 6.0.2", ] [[package]] @@ -1247,6 +1247,15 @@ dependencies = [ "unicode-xid", ] +[[package]] +name = "quick-xml" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8533f14c8382aaad0d592c812ac3b826162128b65662331e1127b45c3d18536b" +dependencies = [ + "memchr", +] + [[package]] name = "quote" version = "1.0.17" @@ -1388,31 +1397,13 @@ version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57bd81eb48f4c437cadc685403cad539345bf703d78e63707418431cecd4522b" -[[package]] -name = "strum" -version = "0.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aaf86bbcfd1fa9670b7a129f64fc0c9fcbbfe4f1bc4210e9e98fe71ffc12cde2" - [[package]] name = "strum_macros" version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "87c85aa3f8ea653bfd3ddf25f7ee357ee4d204731f6aa9ad04002306f6e2774c" dependencies = [ - "heck", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "strum_macros" -version = "0.21.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d06aaeeee809dbc59eb4556183dd927df67db1540de5be8d3ec0b6636358a5ec" -dependencies = [ - "heck", + "heck 0.3.3", "proc-macro2", "quote", "syn", @@ -1435,10 +1426,10 @@ version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0f3ecc17269a19353b3558b313bba738b25d82993e30d62a18406a24aba4649b" dependencies = [ - "heck", + "heck 0.3.3", "pkg-config", - "strum 0.18.0", - "strum_macros 0.18.0", + "strum", + "strum_macros", "thiserror", "toml", "version-compare 0.0.10", @@ -1446,34 +1437,22 @@ dependencies = [ [[package]] name = "system-deps" -version = "3.2.0" +version = "6.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "480c269f870722b3b08d2f13053ce0c2ab722839f472863c3e2d61ff3a1c2fa6" +checksum = "a1a45a1c4c9015217e12347f2a411b57ce2c4fc543913b14b6fe40483328e709" dependencies = [ - "anyhow", - "cfg-expr 0.8.1", - "heck", - "itertools 0.10.3", + "cfg-expr", + "heck 0.4.0", "pkg-config", - "strum 0.21.0", - "strum_macros 0.21.1", - "thiserror", "toml", - "version-compare 0.0.11", + "version-compare 0.1.0", ] [[package]] -name = "system-deps" -version = "5.0.0" +name = "temp-dir" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18db855554db7bd0e73e06cf7ba3df39f97812cb11d3f75e71c39bf45171797e" -dependencies = [ - "cfg-expr 0.9.1", - "heck", - "pkg-config", - "toml", - "version-compare 0.0.11", -] +checksum = "af547b166dd1ea4b472165569fc456cfb6818116f854690b0ff205e636523dab" [[package]] name = "thiserror" @@ -1571,9 +1550,9 @@ checksum = "d63556a25bae6ea31b52e640d7c41d1ab27faba4ccb600013837a3d0b3994ca1" [[package]] name = "version-compare" -version = "0.0.11" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c18c859eead79d8b95d09e4678566e8d70105c4e7b251f707a03df32442661b" +checksum = "fe88247b92c1df6b6de80ddc290f3976dbdf2f5f5d3fd049a9fb598c6dd5ca73" [[package]] name = "version_check" diff --git a/backend/Cargo.toml b/backend/Cargo.toml index 27c716b..0c550b4 100644 --- a/backend/Cargo.toml +++ b/backend/Cargo.toml @@ -5,10 +5,10 @@ edition = "2021" [dependencies] fragile = "1.0.0" -gio = "0.14.0" -glib = "0.14.0" -gstreamer = "0.17.0" -gstreamer-player = "0.17.0" +gio = "0.15.10" +glib = "0.15.10" +gstreamer = "0.18.7" +gstreamer-player = "0.18.0" log = { version = "0.4.14", features = ["std"] } musicus_database = { version = "0.1.0", path = "../database" } musicus_import = { version = "0.1.0", path = "../import" } @@ -16,4 +16,4 @@ thiserror = "1.0.23" tokio = { version = "1.4.0", features = ["sync"] } [target.'cfg(target_os = "linux")'.dependencies] -mpris-player = "0.6.0" +mpris-player = "0.6.1" diff --git a/backend/src/player.rs b/backend/src/player.rs index 41d2262..64a0329 100644 --- a/backend/src/player.rs +++ b/backend/src/player.rs @@ -352,7 +352,7 @@ impl Player { let uri = glib::filename_to_uri(&path, None) .map_err(|_| Error::Other(format!("Failed to create URI from path: {}", path)))?; - self.player.set_uri(&uri); + self.player.set_uri(Some(&uri)); if self.is_playing() { self.player.play(); diff --git a/import/Cargo.toml b/import/Cargo.toml index 8ea306d..e4f2e0e 100644 --- a/import/Cargo.toml +++ b/import/Cargo.toml @@ -5,9 +5,9 @@ edition = "2021" [dependencies] base64 = "0.13.0" -glib = "0.14.0" -gstreamer = "0.17.0" -gstreamer-pbutils = "0.17.0" +glib = "0.15.10" +gstreamer = "0.18.7" +gstreamer-pbutils = "0.18.7" log = "0.4.14" once_cell = "1.5.2" rand = "0.7.3" diff --git a/import/src/disc.rs b/import/src/disc.rs index 670a9c0..2cb815d 100644 --- a/import/src/disc.rs +++ b/import/src/disc.rs @@ -118,13 +118,13 @@ pub(super) fn new() -> Result { for track in &tracks_clone { info!("Starting to rip track {}.", track.number); - cdparanoiasrc.set_property("track", &track.number)?; + cdparanoiasrc.set_property("track", &track.number); // The filesink needs to be reset to be able to change the file location. filesink.set_state(gstreamer::State::Null)?; let path = track.path.to_str().unwrap(); - filesink.set_property("location", &path)?; + filesink.set_property("location", &path); // This will also affect the filesink as expected. pipeline.set_state(gstreamer::State::Playing)?; diff --git a/musicus/Cargo.toml b/musicus/Cargo.toml index ef8cc5a..0661eb8 100644 --- a/musicus/Cargo.toml +++ b/musicus/Cargo.toml @@ -5,15 +5,15 @@ edition = "2021" [dependencies] anyhow = "1.0.33" -adw = { package = "libadwaita", version = "0.1.0-alpha-6" } +adw = { package = "libadwaita", version = "0.1.1" } async-trait = "0.1.42" futures-channel = "0.3.5" -gdk = { package = "gdk4", version = "0.3.0" } -gettext-rs = { version = "0.5.0", features = ["gettext-system"] } -gio = "0.14.0" -glib = "0.14.0" -gstreamer = "0.17.0" -gtk = { package = "gtk4", version = "0.3.0" } +gdk = { package = "gdk4", version = "0.4.7" } +gettext-rs = { version = "0.7.0", features = ["gettext-system"] } +gio = "0.15.10" +glib = "0.15.10" +gstreamer = "0.18.7" +gtk = { package = "gtk4", version = "0.4.7" } gtk-macros = "0.3.0" log = "0.4.14" musicus_backend = { version = "0.1.0", path = "../backend" } diff --git a/musicus/src/editors/ensemble.rs b/musicus/src/editors/ensemble.rs index 075c115..9a2d1c0 100644 --- a/musicus/src/editors/ensemble.rs +++ b/musicus/src/editors/ensemble.rs @@ -2,8 +2,7 @@ use crate::navigator::{NavigationHandle, Screen}; use crate::widgets::{Editor, EntryRow, Section, Widget}; use anyhow::Result; use gettextrs::gettext; -use glib::clone; -use gtk::prelude::*; +use gtk::{builders::ListBoxBuilder, glib::clone, prelude::*}; use musicus_backend::db::{generate_id, Ensemble}; use std::rc::Rc; @@ -24,7 +23,7 @@ impl Screen, Ensemble> for EnsembleEditor { let editor = Editor::new(); editor.set_title("Ensemble"); - let list = gtk::ListBoxBuilder::new() + let list = ListBoxBuilder::new() .selection_mode(gtk::SelectionMode::None) .css_classes(vec![String::from("boxed-list")]) .build(); diff --git a/musicus/src/editors/instrument.rs b/musicus/src/editors/instrument.rs index 9a5c726..d7a5cf5 100644 --- a/musicus/src/editors/instrument.rs +++ b/musicus/src/editors/instrument.rs @@ -2,8 +2,7 @@ use crate::navigator::{NavigationHandle, Screen}; use crate::widgets::{Editor, EntryRow, Section, Widget}; use anyhow::Result; use gettextrs::gettext; -use glib::clone; -use gtk::prelude::*; +use gtk::{glib::clone, prelude::*, builders::ListBoxBuilder}; use musicus_backend::db::{generate_id, Instrument}; use std::rc::Rc; @@ -24,7 +23,7 @@ impl Screen, Instrument> for InstrumentEditor { let editor = Editor::new(); editor.set_title("Instrument/Role"); - let list = gtk::ListBoxBuilder::new() + let list = ListBoxBuilder::new() .selection_mode(gtk::SelectionMode::None) .css_classes(vec![String::from("boxed-list")]) .build(); diff --git a/musicus/src/editors/performance.rs b/musicus/src/editors/performance.rs index 8d79bb9..9a47771 100644 --- a/musicus/src/editors/performance.rs +++ b/musicus/src/editors/performance.rs @@ -3,7 +3,8 @@ use crate::selectors::{EnsembleSelector, InstrumentSelector, PersonSelector}; use crate::widgets::{ButtonRow, Editor, Section, Widget}; use adw::prelude::*; use gettextrs::gettext; -use glib::clone; +use gtk::builders::ButtonBuilder; +use gtk::{builders::ListBoxBuilder, glib::clone}; use log::error; use musicus_backend::db::{Ensemble, Instrument, Performance, Person, PersonOrEnsemble}; use std::cell::RefCell; @@ -29,7 +30,7 @@ impl Screen, Performance> for PerformanceEditor { editor.set_title("Performance"); editor.set_may_save(false); - let performer_list = gtk::ListBoxBuilder::new() + let performer_list = ListBoxBuilder::new() .selection_mode(gtk::SelectionMode::None) .css_classes(vec![String::from("boxed-list")]) .build(); @@ -45,12 +46,12 @@ impl Screen, Performance> for PerformanceEditor { "Select either a person or an ensemble as a performer.", )); - let role_list = gtk::ListBoxBuilder::new() + let role_list = ListBoxBuilder::new() .selection_mode(gtk::SelectionMode::None) .css_classes(vec![String::from("boxed-list")]) .build(); - let reset_role_button = gtk::ButtonBuilder::new() + let reset_role_button = ButtonBuilder::new() .icon_name("user-trash-symbolic") .valign(gtk::Align::Center) .visible(false) diff --git a/musicus/src/editors/person.rs b/musicus/src/editors/person.rs index f96b02d..9ea5eb4 100644 --- a/musicus/src/editors/person.rs +++ b/musicus/src/editors/person.rs @@ -3,7 +3,7 @@ use crate::widgets::{Editor, EntryRow, Section, Widget}; use anyhow::Result; use gettextrs::gettext; use glib::clone; -use gtk::prelude::*; +use gtk::{builders::ListBoxBuilder, prelude::*}; use musicus_backend::db::{generate_id, Person}; use std::rc::Rc; @@ -25,7 +25,7 @@ impl Screen, Person> for PersonEditor { let editor = Editor::new(); editor.set_title("Person"); - let list = gtk::ListBoxBuilder::new() + let list = ListBoxBuilder::new() .selection_mode(gtk::SelectionMode::None) .css_classes(vec![String::from("boxed-list")]) .build(); diff --git a/musicus/src/editors/recording.rs b/musicus/src/editors/recording.rs index e71ef13..babb80c 100644 --- a/musicus/src/editors/recording.rs +++ b/musicus/src/editors/recording.rs @@ -2,6 +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; @@ -97,7 +98,7 @@ impl Screen, Recording> for RecordingEditor { this.performance_list.set_make_widget_cb(clone!(@weak this => @default-panic, move |index| { let performance = &this.performances.borrow()[index]; - let delete_button = gtk::Button::from_icon_name(Some("user-trash-symbolic")); + let delete_button = gtk::Button::from_icon_name("user-trash-symbolic"); delete_button.set_valign(gtk::Align::Center); delete_button.connect_clicked(clone!(@weak this => move |_| { @@ -110,7 +111,7 @@ impl Screen, Recording> for RecordingEditor { this.performance_list.update(length); })); - let edit_button = gtk::Button::from_icon_name(Some("document-edit-symbolic")); + let edit_button = gtk::Button::from_icon_name("document-edit-symbolic"); edit_button.set_valign(gtk::Align::Center); edit_button.connect_clicked(clone!(@weak this => move |_| { @@ -128,7 +129,7 @@ impl Screen, Recording> for RecordingEditor { }); })); - let row = adw::ActionRowBuilder::new() + let row = ActionRowBuilder::new() .focusable(false) .activatable_widget(&edit_button) .title(&performance.get_title()) diff --git a/musicus/src/editors/work.rs b/musicus/src/editors/work.rs index c88917f..c7370d4 100644 --- a/musicus/src/editors/work.rs +++ b/musicus/src/editors/work.rs @@ -2,6 +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; @@ -111,7 +112,7 @@ impl Screen, Work> for WorkEditor { clone!(@weak this => @default-panic, move |index| { let instrument = &this.instruments.borrow()[index]; - let delete_button = gtk::Button::from_icon_name(Some("user-trash-symbolic")); + let delete_button = gtk::Button::from_icon_name("user-trash-symbolic"); delete_button.set_valign(gtk::Align::Center); delete_button.connect_clicked(clone!(@strong this => move |_| { @@ -124,7 +125,7 @@ impl Screen, Work> for WorkEditor { this.instrument_list.update(length); })); - let row = adw::ActionRowBuilder::new() + let row = ActionRowBuilder::new() .title(&instrument.name) .build(); @@ -152,7 +153,7 @@ impl Screen, Work> for WorkEditor { .set_make_widget_cb(clone!(@weak this => @default-panic, move |index| { let part = &this.parts.borrow()[index]; - let delete_button = gtk::Button::from_icon_name(Some("user-trash-symbolic")); + let delete_button = gtk::Button::from_icon_name("user-trash-symbolic"); delete_button.set_valign(gtk::Align::Center); delete_button.connect_clicked(clone!(@weak this => move |_| { @@ -165,7 +166,7 @@ impl Screen, Work> for WorkEditor { this.part_list.update(length); })); - let edit_button = gtk::Button::from_icon_name(Some("document-edit-symbolic")); + let edit_button = gtk::Button::from_icon_name("document-edit-symbolic"); edit_button.set_valign(gtk::Align::Center); edit_button.connect_clicked(clone!(@weak this => move |_| { @@ -183,7 +184,7 @@ impl Screen, Work> for WorkEditor { }); })); - let row = adw::ActionRowBuilder::new() + let row = ActionRowBuilder::new() .focusable(false) .title(&part.title) .activatable_widget(&edit_button) diff --git a/musicus/src/import/import_screen.rs b/musicus/src/import/import_screen.rs index cd1b3af..c6e6b2c 100644 --- a/musicus/src/import/import_screen.rs +++ b/musicus/src/import/import_screen.rs @@ -3,6 +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; @@ -64,7 +65,7 @@ impl ImportScreen { let this = self; for medium in mediums { - let row = adw::ActionRowBuilder::new() + let row = ActionRowBuilder::new() .activatable(true) .title(&medium.name) .subtitle(&format!("{} Tracks", medium.tracks.len())) diff --git a/musicus/src/import/medium_editor.rs b/musicus/src/import/medium_editor.rs index b39398c..665cb55 100644 --- a/musicus/src/import/medium_editor.rs +++ b/musicus/src/import/medium_editor.rs @@ -1,6 +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; @@ -102,13 +103,13 @@ impl Screen<(Arc, Option), Medium> for MediumEditor { let title = track_set.recording.work.get_title(); let subtitle = track_set.recording.get_performers(); - let edit_image = gtk::Image::from_icon_name(Some("document-edit-symbolic")); + let edit_image = gtk::Image::from_icon_name("document-edit-symbolic"); let edit_button = gtk::Button::new(); edit_button.set_has_frame(false); edit_button.set_valign(gtk::Align::Center); edit_button.set_child(Some(&edit_image)); - let row = adw::ActionRowBuilder::new() + let row = ActionRowBuilder::new() .focusable(false) .title(&title) .subtitle(&subtitle) diff --git a/musicus/src/import/medium_preview.rs b/musicus/src/import/medium_preview.rs index 34e2ff2..2ede869 100644 --- a/musicus/src/import/medium_preview.rs +++ b/musicus/src/import/medium_preview.rs @@ -1,9 +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::{ListBoxBuilder, FrameBuilder}; use gtk::prelude::*; use gtk_macros::get_widget; use musicus_backend::db::Medium; @@ -139,13 +141,13 @@ impl MediumPreview { if track.recording.id != last_recording_id { last_recording_id = &track.recording.id; - let list = gtk::ListBoxBuilder::new() + let list = ListBoxBuilder::new() .selection_mode(gtk::SelectionMode::None) .margin_bottom(12) .css_classes(vec![String::from("boxed-list")]) .build(); - let header = adw::ActionRowBuilder::new() + let header = ActionRowBuilder::new() .activatable(false) .title(&track.recording.work.get_title()) .subtitle(&track.recording.get_performers()) @@ -172,7 +174,7 @@ impl MediumPreview { parts.join(", ") }; - let row = adw::ActionRowBuilder::new() + let row = ActionRowBuilder::new() .activatable(false) .title(&title) .subtitle(&import_tracks[track.source_index].name) @@ -184,7 +186,7 @@ impl MediumPreview { } if let Some(list) = &last_list { - let frame = gtk::FrameBuilder::new().margin_bottom(12).build(); + let frame = FrameBuilder::new().margin_bottom(12).build(); frame.set_child(Some(list)); self.medium_box.append(&frame); diff --git a/musicus/src/import/track_editor.rs b/musicus/src/import/track_editor.rs index d2ebe60..fc93bee 100644 --- a/musicus/src/import/track_editor.rs +++ b/musicus/src/import/track_editor.rs @@ -1,7 +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; @@ -29,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 = gtk::ListBoxBuilder::new() + let parts_list = ListBoxBuilder::new() .selection_mode(gtk::SelectionMode::None) .css_classes(vec![String::from("boxed-list")]) .build(); @@ -66,7 +68,7 @@ impl Screen<(Recording, Vec), Vec> for TrackEditor { } })); - let row = adw::ActionRowBuilder::new() + let row = ActionRowBuilder::new() .focusable(false) .title(&part.title) .activatable_widget(&check) diff --git a/musicus/src/import/track_selector.rs b/musicus/src/import/track_selector.rs index 0bbc129..c474180 100644 --- a/musicus/src/import/track_selector.rs +++ b/musicus/src/import/track_selector.rs @@ -1,7 +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; @@ -29,7 +31,7 @@ impl Screen, Vec> for TrackSelector { get_widget!(builder, gtk::Button, select_button); get_widget!(builder, adw::Clamp, clamp); - let track_list = gtk::ListBoxBuilder::new() + let track_list = ListBoxBuilder::new() .selection_mode(gtk::SelectionMode::None) .css_classes(vec![String::from("boxed-list")]) .build(); @@ -76,7 +78,7 @@ impl Screen, Vec> for TrackSelector { } })); - let row = adw::ActionRowBuilder::new() + let row = ActionRowBuilder::new() .focusable(false) .title(&track.name) .activatable_widget(&check) diff --git a/musicus/src/import/track_set_editor.rs b/musicus/src/import/track_set_editor.rs index 6e560e4..83e3947 100644 --- a/musicus/src/import/track_set_editor.rs +++ b/musicus/src/import/track_set_editor.rs @@ -3,6 +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; @@ -138,13 +139,13 @@ impl Screen, TrackSetData> for TrackSetEditor { let tracks = this.session.tracks(); let track_name = &tracks[track.track_source].name; - let edit_image = gtk::Image::from_icon_name(Some("document-edit-symbolic")); + let edit_image = gtk::Image::from_icon_name("document-edit-symbolic"); let edit_button = gtk::Button::new(); edit_button.set_has_frame(false); edit_button.set_valign(gtk::Align::Center); edit_button.set_child(Some(&edit_image)); - let row = adw::ActionRowBuilder::new() + let row = ActionRowBuilder::new() .focusable(false) .title(&title) .subtitle(track_name) diff --git a/musicus/src/main.rs b/musicus/src/main.rs index 8918b1e..78a37cb 100644 --- a/musicus/src/main.rs +++ b/musicus/src/main.rs @@ -22,8 +22,8 @@ mod resources; fn main() { gettextrs::setlocale(gettextrs::LocaleCategory::LcAll, ""); - gettextrs::bindtextdomain("musicus", config::LOCALEDIR); - gettextrs::textdomain("musicus"); + gettextrs::bindtextdomain("musicus", config::LOCALEDIR).unwrap(); + gettextrs::textdomain("musicus").unwrap(); gstreamer::init().expect("Failed to initialize GStreamer!"); gtk::init().expect("Failed to initialize GTK!"); diff --git a/musicus/src/navigator/mod.rs b/musicus/src/navigator/mod.rs index 9bd4d5f..526ae7f 100644 --- a/musicus/src/navigator/mod.rs +++ b/musicus/src/navigator/mod.rs @@ -2,6 +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}; @@ -96,7 +97,7 @@ impl Navigator { W: IsA, E: IsA, { - let widget = gtk::StackBuilder::new() + let widget = StackBuilder::new() .hhomogeneous(false) .vhomogeneous(false) .interpolate_size(true) diff --git a/musicus/src/screens/ensemble.rs b/musicus/src/screens/ensemble.rs index 871bab0..c137c23 100644 --- a/musicus/src/screens/ensemble.rs +++ b/musicus/src/screens/ensemble.rs @@ -3,6 +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; @@ -74,7 +75,7 @@ impl Screen for EnsembleScreen { clone!(@weak this => @default-panic, move |index| { let recording = &this.recordings.borrow()[index]; - let row = adw::ActionRowBuilder::new() + let row = ActionRowBuilder::new() .activatable(true) .title(&recording.work.get_title()) .subtitle(&recording.get_performers()) @@ -104,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 = adw::ActionRowBuilder::new() + let row = ActionRowBuilder::new() .activatable(true) .title(&medium.name) .build(); diff --git a/musicus/src/screens/main.rs b/musicus/src/screens/main.rs index 0ea5446..dbeafa0 100644 --- a/musicus/src/screens/main.rs +++ b/musicus/src/screens/main.rs @@ -4,9 +4,11 @@ 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; +use gtk::builders::AboutDialogBuilder; use gtk_macros::get_widget; use musicus_backend::db::PersonOrEnsemble; use std::cell::RefCell; @@ -95,7 +97,7 @@ impl Screen<(), ()> for MainScreen { .set_make_widget_cb(clone!(@weak this => @default-panic, move |index| { let poe = &this.poes.borrow()[index]; - let row = adw::ActionRowBuilder::new() + let row = ActionRowBuilder::new() .activatable(true) .title(&poe.get_title()) .build(); @@ -193,7 +195,7 @@ impl Widget for MainScreen { impl MainScreen { /// Show a dialog with information on this application. fn show_about_dialog(&self) { - let dialog = gtk::AboutDialogBuilder::new() + let dialog = AboutDialogBuilder::new() .transient_for(&self.handle.window) .modal(true) .logo_icon_name("de.johrpan.musicus") diff --git a/musicus/src/screens/medium.rs b/musicus/src/screens/medium.rs index 130a849..ec789f7 100644 --- a/musicus/src/screens/medium.rs +++ b/musicus/src/screens/medium.rs @@ -1,6 +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; @@ -74,7 +75,7 @@ impl Screen for MediumScreen { parts.join(", ") }; - let row = adw::ActionRowBuilder::new() + let row = ActionRowBuilder::new() .margin_start(12) .selectable(false) .title(&title) diff --git a/musicus/src/screens/person.rs b/musicus/src/screens/person.rs index 2bddc47..7b7fe98 100644 --- a/musicus/src/screens/person.rs +++ b/musicus/src/screens/person.rs @@ -3,6 +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; @@ -80,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 = adw::ActionRowBuilder::new() + let row = ActionRowBuilder::new() .activatable(true) .title(&work.title) .build(); @@ -108,7 +109,7 @@ impl Screen for PersonScreen { clone!(@weak this => @default-panic, move |index| { let recording = &this.recordings.borrow()[index]; - let row = adw::ActionRowBuilder::new() + let row = ActionRowBuilder::new() .activatable(true) .title(&recording.work.get_title()) .subtitle(&recording.get_performers()) @@ -138,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 = adw::ActionRowBuilder::new() + let row = ActionRowBuilder::new() .activatable(true) .title(&medium.name) .build(); diff --git a/musicus/src/screens/recording.rs b/musicus/src/screens/recording.rs index 36a9322..5485c57 100644 --- a/musicus/src/screens/recording.rs +++ b/musicus/src/screens/recording.rs @@ -2,6 +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; @@ -84,7 +85,7 @@ impl Screen for RecordingScreen { title_parts.join(", ") }; - let row = adw::ActionRowBuilder::new() + let row = ActionRowBuilder::new() .title(&title) .build(); diff --git a/musicus/src/screens/welcome.rs b/musicus/src/screens/welcome.rs index 05af7d0..b287a39 100644 --- a/musicus/src/screens/welcome.rs +++ b/musicus/src/screens/welcome.rs @@ -1,7 +1,9 @@ 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; @@ -15,20 +17,20 @@ pub struct WelcomeScreen { impl Screen<(), ()> for WelcomeScreen { fn new(_: (), handle: NavigationHandle<()>) -> Rc { - let widget = gtk::BoxBuilder::new() + let widget = BoxBuilder::new() .orientation(gtk::Orientation::Vertical) .build(); - let header = adw::HeaderBarBuilder::new() + let header = HeaderBarBuilder::new() .title_widget(&adw::WindowTitle::new("Musicus", "")) .build(); - let button = gtk::ButtonBuilder::new() + let button = ButtonBuilder::new() .halign(gtk::Align::Center) .label(&gettext("Select folder")) .build(); - let welcome = adw::StatusPageBuilder::new() + let welcome = StatusPageBuilder::new() .icon_name("folder-music-symbolic") .title(&gettext("Welcome to Musicus!")) .description(&gettext( diff --git a/musicus/src/screens/work.rs b/musicus/src/screens/work.rs index 7768dde..f13c352 100644 --- a/musicus/src/screens/work.rs +++ b/musicus/src/screens/work.rs @@ -3,6 +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; @@ -69,7 +70,7 @@ impl Screen for WorkScreen { clone!(@weak this => @default-panic, move |index| { let recording = &this.recordings.borrow()[index]; - let row = adw::ActionRowBuilder::new() + let row = ActionRowBuilder::new() .activatable(true) .title(&recording.work.get_title()) .subtitle(&recording.get_performers()) diff --git a/musicus/src/selectors/ensemble.rs b/musicus/src/selectors/ensemble.rs index 6d501e0..2e401b5 100644 --- a/musicus/src/selectors/ensemble.rs +++ b/musicus/src/selectors/ensemble.rs @@ -2,6 +2,7 @@ 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; @@ -41,7 +42,7 @@ impl Screen<(), Ensemble> for EnsembleSelector { this.selector .set_make_widget(clone!(@weak this => @default-panic, move |ensemble| { - let row = adw::ActionRowBuilder::new() + let row = ActionRowBuilder::new() .activatable(true) .title(&ensemble.name) .build(); diff --git a/musicus/src/selectors/instrument.rs b/musicus/src/selectors/instrument.rs index 0b38a5e..26f1a5e 100644 --- a/musicus/src/selectors/instrument.rs +++ b/musicus/src/selectors/instrument.rs @@ -2,6 +2,7 @@ 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; @@ -41,7 +42,7 @@ impl Screen<(), Instrument> for InstrumentSelector { this.selector .set_make_widget(clone!(@weak this => @default-panic, move |instrument| { - let row = adw::ActionRowBuilder::new() + let row = ActionRowBuilder::new() .activatable(true) .title(&instrument.name) .build(); diff --git a/musicus/src/selectors/medium.rs b/musicus/src/selectors/medium.rs index 5d2ef4d..0bb4f1d 100644 --- a/musicus/src/selectors/medium.rs +++ b/musicus/src/selectors/medium.rs @@ -1,6 +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; @@ -30,7 +31,7 @@ impl Screen<(), Medium> for MediumSelector { })); this.selector.set_make_widget(clone!(@weak this => @default-panic, move |poe| { - let row = adw::ActionRowBuilder::new() + let row = ActionRowBuilder::new() .activatable(true) .title(&poe.get_title()) .build(); @@ -103,7 +104,7 @@ impl Screen for MediumSelectorMediumScreen { this.selector .set_make_widget(clone!(@weak this => @default-panic, move |medium| { - let row = adw::ActionRowBuilder::new() + let row = ActionRowBuilder::new() .activatable(true) .title(&medium.name) .build(); diff --git a/musicus/src/selectors/person.rs b/musicus/src/selectors/person.rs index 168fe1e..001e864 100644 --- a/musicus/src/selectors/person.rs +++ b/musicus/src/selectors/person.rs @@ -2,6 +2,7 @@ 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; @@ -41,7 +42,7 @@ impl Screen<(), Person> for PersonSelector { this.selector .set_make_widget(clone!(@weak this => @default-panic, move |person| { - let row = adw::ActionRowBuilder::new() + let row = ActionRowBuilder::new() .activatable(true) .title(&person.name_lf()) .build(); diff --git a/musicus/src/selectors/recording.rs b/musicus/src/selectors/recording.rs index a03ea23..d904ee7 100644 --- a/musicus/src/selectors/recording.rs +++ b/musicus/src/selectors/recording.rs @@ -2,6 +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; @@ -52,7 +53,7 @@ impl Screen<(), Recording> for RecordingSelector { })); this.selector.set_make_widget(clone!(@weak this => @default-panic, move |person| { - let row = adw::ActionRowBuilder::new() + let row = ActionRowBuilder::new() .activatable(true) .title(&person.name_lf()) .build(); @@ -127,7 +128,7 @@ impl Screen for RecordingSelectorWorkScreen { this.selector .set_make_widget(clone!(@weak this => @default-panic, move |work| { - let row = adw::ActionRowBuilder::new() + let row = ActionRowBuilder::new() .activatable(true) .title(&work.title) .build(); @@ -190,7 +191,7 @@ impl Screen for RecordingSelectorRecordingScreen { this.selector .set_make_widget(clone!(@weak this => @default-panic, move |recording| { - let row = adw::ActionRowBuilder::new() + let row = ActionRowBuilder::new() .activatable(true) .title(&recording.get_performers()) .build(); diff --git a/musicus/src/selectors/work.rs b/musicus/src/selectors/work.rs index 30e3662..e12f125 100644 --- a/musicus/src/selectors/work.rs +++ b/musicus/src/selectors/work.rs @@ -2,6 +2,7 @@ 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; @@ -46,7 +47,7 @@ impl Screen<(), Work> for WorkSelector { })); this.selector.set_make_widget(clone!(@weak this => @default-panic, move |person| { - let row = adw::ActionRowBuilder::new() + let row = ActionRowBuilder::new() .activatable(true) .title(&person.name_lf()) .build(); @@ -117,7 +118,7 @@ impl Screen for WorkSelectorWorkScreen { this.selector .set_make_widget(clone!(@weak this => @default-panic, move |work| { - let row = adw::ActionRowBuilder::new() + let row = ActionRowBuilder::new() .activatable(true) .title(&work.title) .build(); diff --git a/musicus/src/widgets/button_row.rs b/musicus/src/widgets/button_row.rs index 30409cb..a33c04c 100644 --- a/musicus/src/widgets/button_row.rs +++ b/musicus/src/widgets/button_row.rs @@ -1,5 +1,6 @@ use super::Widget; -use adw::prelude::*; +use adw::{prelude::*, builders::ActionRowBuilder}; +use gtk::builders::ButtonBuilder; /// A list box row with a single button. pub struct ButtonRow { @@ -13,12 +14,12 @@ pub struct ButtonRow { impl ButtonRow { /// Create a new button row. pub fn new(title: &str, label: &str) -> Self { - let button = gtk::ButtonBuilder::new() + let button = ButtonBuilder::new() .valign(gtk::Align::Center) .label(label) .build(); - let widget = adw::ActionRowBuilder::new() + let widget = ActionRowBuilder::new() .focusable(false) .activatable_widget(&button) .title(title) diff --git a/musicus/src/widgets/entry_row.rs b/musicus/src/widgets/entry_row.rs index 6784894..ec82a14 100644 --- a/musicus/src/widgets/entry_row.rs +++ b/musicus/src/widgets/entry_row.rs @@ -1,4 +1,5 @@ -use adw::prelude::*; +use adw::{prelude::*, builders::ActionRowBuilder}; +use gtk::builders::EntryBuilder; /// A list box row with an entry. pub struct EntryRow { @@ -12,12 +13,12 @@ pub struct EntryRow { impl EntryRow { /// Create a new entry row. pub fn new(title: &str) -> Self { - let entry = gtk::EntryBuilder::new() + let entry = EntryBuilder::new() .hexpand(true) .valign(gtk::Align::Center) .build(); - let widget = adw::ActionRowBuilder::new() + let widget = ActionRowBuilder::new() .focusable(false) .activatable_widget(&entry) .title(title) diff --git a/musicus/src/widgets/indexed_list_model.rs b/musicus/src/widgets/indexed_list_model.rs index fe576b7..b49ae77 100644 --- a/musicus/src/widgets/indexed_list_model.rs +++ b/musicus/src/widgets/indexed_list_model.rs @@ -12,8 +12,8 @@ glib::wrapper! { impl IndexedListModel { /// Set the length of the list model. pub fn set_length(&self, length: u32) { - let old_length = self.property("length").unwrap().get::().unwrap(); - self.set_property("length", &length).unwrap(); + let old_length = self.property("length"); + self.set_property("length", &length); self.items_changed(0, old_length, length); } } @@ -43,7 +43,7 @@ mod indexed_list_model_imp { impl ObjectImpl for IndexedListModel { fn properties() -> &'static [glib::ParamSpec] { static PROPERTIES: Lazy> = Lazy::new(|| { - vec![glib::ParamSpec::new_uint( + vec![glib::ParamSpecUInt::new( "length", "Length", "Length", @@ -109,7 +109,7 @@ impl ItemIndex { /// Get the value of the item index.. pub fn get(&self) -> u32 { - self.property("value").unwrap().get::().unwrap() + self.property("value") } } @@ -132,7 +132,7 @@ mod item_index_imp { impl ObjectImpl for ItemIndex { fn properties() -> &'static [glib::ParamSpec] { static PROPERTIES: Lazy> = Lazy::new(|| { - vec![glib::ParamSpec::new_uint( + vec![glib::ParamSpecUInt::new( "value", "Value", "Value", diff --git a/musicus/src/widgets/list.rs b/musicus/src/widgets/list.rs index 67b9f03..d0710ce 100644 --- a/musicus/src/widgets/list.rs +++ b/musicus/src/widgets/list.rs @@ -1,5 +1,6 @@ use super::indexed_list_model::{IndexedListModel, ItemIndex}; use glib::clone; +use gtk::builders::ListBoxBuilder; use gtk::prelude::*; use std::cell::{Cell, RefCell}; use std::rc::Rc; @@ -27,7 +28,7 @@ impl List { // let factory = gtk::SignalListItemFactory::new(); // let widget = gtk::ListView::new(Some(&selection), Some(&factory)); - let widget = gtk::ListBoxBuilder::new() + let widget = ListBoxBuilder::new() .selection_mode(gtk::SelectionMode::None) .css_classes(vec![String::from("boxed-list")]) .build(); diff --git a/musicus/src/widgets/section.rs b/musicus/src/widgets/section.rs index d88134c..8f30ed1 100644 --- a/musicus/src/widgets/section.rs +++ b/musicus/src/widgets/section.rs @@ -1,5 +1,5 @@ use super::Widget; -use gtk::prelude::*; +use gtk::{prelude::*, builders::ButtonBuilder}; 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 = gtk::ButtonBuilder::new() + let button = ButtonBuilder::new() .has_frame(false) .valign(gtk::Align::Center) .margin_top(12) diff --git a/musicus/src/window.rs b/musicus/src/window.rs index b496575..f7cb6f7 100644 --- a/musicus/src/window.rs +++ b/musicus/src/window.rs @@ -1,7 +1,9 @@ use crate::navigator::Navigator; use crate::screens::{MainScreen, WelcomeScreen}; +use adw::builders::HeaderBarBuilder; +use adw::prelude::*; use glib::clone; -use gtk::prelude::*; +use gtk::builders::{BoxBuilder, SpinnerBuilder}; use musicus_backend::{Backend, BackendState}; use std::rc::Rc; @@ -21,15 +23,15 @@ impl Window { window.set_title(Some("Musicus")); window.set_default_size(1000, 707); - let loading_screen = gtk::BoxBuilder::new() + let loading_screen = BoxBuilder::new() .orientation(gtk::Orientation::Vertical) .build(); - let header = adw::HeaderBarBuilder::new() + let header = HeaderBarBuilder::new() .title_widget(&adw::WindowTitle::new("Musicus", "")) .build(); - let spinner = gtk::SpinnerBuilder::new() + let spinner = SpinnerBuilder::new() .hexpand(true) .vexpand(true) .halign(gtk::Align::Center) @@ -43,7 +45,7 @@ impl Window { loading_screen.append(&spinner); let navigator = Navigator::new(Rc::clone(&backend), &window, &loading_screen); - adw::traits::ApplicationWindowExt::set_content(&window, Some(&navigator.widget)); + window.set_content(Some(&navigator.widget)); let this = Rc::new(Self { backend, @@ -52,13 +54,14 @@ impl Window { }); // Listen for backend state changes. - this.backend.set_state_cb(clone!(@weak this => move |state| { - match state { - BackendState::Loading => this.navigator.reset(), - BackendState::NoMusicLibrary => this.show_welcome_screen(), - BackendState::Ready => this.show_main_screen(), - } - })); + this.backend + .set_state_cb(clone!(@weak this => move |state| { + match state { + BackendState::Loading => this.navigator.reset(), + BackendState::NoMusicLibrary => this.show_welcome_screen(), + BackendState::Ready => this.show_main_screen(), + } + })); // Initialize the backend. Rc::clone(&this.backend).init().unwrap();