From b2a14e3812a23be495740606dfd0cf3cf3ca17c0 Mon Sep 17 00:00:00 2001 From: Poly Date: Sun, 17 Oct 2021 20:42:52 +0200 Subject: [PATCH] Port to rfd --- Cargo.lock | 245 ++++++++++++++++++++++++++++-- Cargo.toml | 4 +- src/scene/menu_scene/iced_menu.rs | 26 ++-- 3 files changed, 247 insertions(+), 28 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2fd1f26c..dee4eff0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -95,6 +95,12 @@ dependencies = [ "winapi", ] +[[package]] +name = "anyhow" +version = "1.0.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61604a8f862e1d5c3229fdd78f8b02c68dcf73a4c4b05fd636d12240aaa242c1" + [[package]] name = "approx" version = "0.5.0" @@ -119,6 +125,18 @@ dependencies = [ "libloading 0.7.1", ] +[[package]] +name = "atk-sys" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "badcf670157c84bb8b1cf6b5f70b650fed78da2033c9eed84c4e49b11cbe83ea" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + [[package]] name = "atty" version = "0.2.14" @@ -261,6 +279,16 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c4872d67bab6358e59559027aa3b9157c53d9358c51423c17554809a8858e0f8" +[[package]] +name = "cairo-sys-rs" +version = "0.14.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b448b876970834fda82ba3aeaccadbd760206b75388fc5c1b02f1e343b697570" +dependencies = [ + "libc", + "system-deps", +] + [[package]] name = "calloop" version = "0.6.5" @@ -295,6 +323,15 @@ dependencies = [ "nom 5.1.2", ] +[[package]] +name = "cfg-expr" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b412e83326147c2bb881f8b40edfbf9905b9b8abaebd0e47ca190ba62fda8f0e" +dependencies = [ + "smallvec", +] + [[package]] name = "cfg-if" version = "0.1.10" @@ -1072,6 +1109,36 @@ dependencies = [ "byteorder", ] +[[package]] +name = "gdk-pixbuf-sys" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f097c0704201fbc8f69c1762dc58c6947c8bb188b8ed0bc7e65259f1894fe590" +dependencies = [ + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "gdk-sys" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e091b3d3d6696949ac3b3fb3c62090e5bfd7bd6850bef5c3c5ea701de1b1f1e" +dependencies = [ + "cairo-sys-rs", + "gdk-pixbuf-sys", + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "pango-sys", + "pkg-config", + "system-deps", +] + [[package]] name = "generational-arena" version = "0.2.8" @@ -1092,6 +1159,19 @@ dependencies = [ "wasi", ] +[[package]] +name = "gio-sys" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0a41df66e57fcc287c4bcf74fc26b884f31901ea9792ec75607289b456f48fa" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", + "winapi", +] + [[package]] name = "glam" version = "0.10.2" @@ -1101,6 +1181,16 @@ dependencies = [ "version_check", ] +[[package]] +name = "glib-sys" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c1d60554a212445e2a858e42a0e48cece1bd57b311a19a9468f70376cf554ae" +dependencies = [ + "libc", + "system-deps", +] + [[package]] name = "glob" version = "0.3.0" @@ -1158,6 +1248,17 @@ dependencies = [ "xi-unicode", ] +[[package]] +name = "gobject-sys" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa92cae29759dae34ab5921d73fff5ad54b3d794ab842c117e36cafc7994c3f5" +dependencies = [ + "glib-sys", + "libc", + "system-deps", +] + [[package]] name = "gpu-alloc" version = "0.5.2" @@ -1197,6 +1298,24 @@ dependencies = [ "bitflags", ] +[[package]] +name = "gtk-sys" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c14c8d3da0545785a7c5a120345b3abb534010fb8ae0f2ef3f47c027fba303e" +dependencies = [ + "atk-sys", + "cairo-sys-rs", + "gdk-pixbuf-sys", + "gdk-sys", + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "pango-sys", + "system-deps", +] + [[package]] name = "guillotiere" version = "0.6.2" @@ -1222,6 +1341,15 @@ version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" +[[package]] +name = "heck" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" +dependencies = [ + "unicode-segmentation", +] + [[package]] name = "hermit-abi" version = "0.1.19" @@ -1374,6 +1502,15 @@ dependencies = [ "web-sys", ] +[[package]] +name = "itertools" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69ddb889f9d0d08a67338271fa9b62996bc788c7796a5c18cf057420aaed5eaf" +dependencies = [ + "either", +] + [[package]] name = "itoa" version = "0.4.8" @@ -1801,10 +1938,10 @@ dependencies = [ "midi", "midir", "mpeg_encoder", - "nfd2", "num", "objc", "oxisynth", + "rfd", "ron", "serde", "wgpu", @@ -1812,15 +1949,6 @@ dependencies = [ "winit", ] -[[package]] -name = "nfd2" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "306127f5ff8cb7c8cd3a8cf0fc162f4dc76ed589efa01ee84eb5593e7be97f75" -dependencies = [ - "cc", -] - [[package]] name = "nix" version = "0.15.0" @@ -2028,6 +2156,17 @@ dependencies = [ "objc_exception", ] +[[package]] +name = "objc-foundation" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1add1b659e36c9607c7aab864a76c7a4c2760cd0cd2e120f3fb8b952c7e22bf9" +dependencies = [ + "block", + "objc", + "objc_id", +] + [[package]] name = "objc_exception" version = "0.1.2" @@ -2037,6 +2176,15 @@ dependencies = [ "cc", ] +[[package]] +name = "objc_id" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c92d4ddb4bd7b50d730c215ff871754d0da6b2178849f8a2a2ab69712d0c073b" +dependencies = [ + "objc", +] + [[package]] name = "oboe" version = "0.4.4" @@ -2103,6 +2251,18 @@ dependencies = [ "soundfont", ] +[[package]] +name = "pango-sys" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2367099ca5e761546ba1d501955079f097caa186bb53ce0f718dca99ac1942fe" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + [[package]] name = "parking_lot" version = "0.11.2" @@ -2372,6 +2532,29 @@ version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f1382d1f0a252c4bf97dc20d979a2fdd05b024acd7c2ed0f7595d7817666a157" +[[package]] +name = "rfd" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2acac5884e3a23b02ebd6ce50fd2729732cdbdb16ea944fbbfbfa638a67992aa" +dependencies = [ + "block", + "dispatch", + "glib-sys", + "gobject-sys", + "gtk-sys", + "js-sys", + "lazy_static", + "objc", + "objc-foundation", + "objc_id", + "raw-window-handle", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "winapi", +] + [[package]] name = "riff" version = "1.0.1" @@ -2695,6 +2878,24 @@ version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6446ced80d6c486436db5c078dde11a9f73d42b57fb273121e160b84f63d894c" +[[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.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d06aaeeee809dbc59eb4556183dd927df67db1540de5be8d3ec0b6636358a5ec" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "svg_fmt" version = "0.4.1" @@ -2712,6 +2913,24 @@ dependencies = [ "unicode-xid", ] +[[package]] +name = "system-deps" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "480c269f870722b3b08d2f13053ce0c2ab722839f472863c3e2d61ff3a1c2fa6" +dependencies = [ + "anyhow", + "cfg-expr", + "heck", + "itertools", + "pkg-config", + "strum", + "strum_macros", + "thiserror", + "toml", + "version-compare", +] + [[package]] name = "tar" version = "0.4.37" @@ -2938,6 +3157,12 @@ version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" +[[package]] +name = "version-compare" +version = "0.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c18c859eead79d8b95d09e4678566e8d70105c4e7b251f707a03df32442661b" + [[package]] name = "version_check" version = "0.9.3" diff --git a/Cargo.toml b/Cargo.toml index 80ec51e1..128e2d71 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -9,7 +9,7 @@ resolver = "2" [features] default = [ "app" ] -app = ["nfd2", "fluid-synth", "iced_native", "iced_wgpu", "iced_graphics"] +app = ["rfd", "fluid-synth", "iced_native", "iced_wgpu", "iced_graphics"] record=["mpeg_encoder"] play_along=[] @@ -32,7 +32,7 @@ wgpu_glyph = "0.15.1" log = "0.4.14" env_logger = "0.9.0" -nfd2 = { version="0.3.0", optional = true } +rfd = { version="0.5", optional = true } lib_midi = {path="./lib_midi"} midir = "0.7.0" diff --git a/src/scene/menu_scene/iced_menu.rs b/src/scene/menu_scene/iced_menu.rs index 48244689..a1337d76 100644 --- a/src/scene/menu_scene/iced_menu.rs +++ b/src/scene/menu_scene/iced_menu.rs @@ -92,38 +92,32 @@ impl Program for IcedMenu { fn update(&mut self, message: Message) -> Command { match message { Message::FileSelectPressed => { - use nfd2::Response; - - match nfd2::DialogBuilder::single() - .filter("mid,midi") - .open() - .expect("File Dialog Error") + match rfd::FileDialog::new() + .add_filter("midi", &["mid", "midi"]) + .pick_file() { - Response::Okay(path) => { + Some(path) => { log::info!("File path = {:?}", path); return Command::perform(async { path }, Message::OutputFileSelected); } _ => { - log::error!("User canceled dialog"); + log::warn!("User canceled dialog"); } } } Message::FontSelectPressed => { - use nfd2::Response; - - match nfd2::DialogBuilder::single() - .filter("sf2") - .open() - .expect("Font Dialog Error") + match rfd::FileDialog::new() + .add_filter("SoundFont2", &["sf2"]) + .pick_file() { - Response::Okay(path) => { + Some(path) => { log::info!("Font path = {:?}", path); self.font_path = Some(path); } _ => { - log::error!("User canceled dialog"); + log::warn!("User canceled dialog"); } } }