diff --git a/slamrs/Cargo.lock b/slamrs/Cargo.lock index 54a5fcc..a1a1fb0 100644 --- a/slamrs/Cargo.lock +++ b/slamrs/Cargo.lock @@ -342,42 +342,6 @@ dependencies = [ "error-code", ] -[[package]] -name = "cocoa" -version = "0.25.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6140449f97a6e97f9511815c5632d84c8aacf8ac271ad77c559218161a1373c" -dependencies = [ - "bitflags 1.3.2", - "block", - "cocoa-foundation", - "core-foundation", - "core-graphics", - "foreign-types", - "libc", - "objc", -] - -[[package]] -name = "cocoa-foundation" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c6234cbb2e4c785b456c0644748b1ac416dd045799740356f8363dfe00c93f7" -dependencies = [ - "bitflags 1.3.2", - "block", - "core-foundation", - "core-graphics-types", - "libc", - "objc", -] - -[[package]] -name = "color_quant" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" - [[package]] name = "combine" version = "4.6.7" @@ -513,21 +477,22 @@ checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" [[package]] name = "ecolor" -version = "0.27.2" +version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20930a432bbd57a6d55e07976089708d4893f3d556cf42a0d79e9e321fa73b10" +checksum = "2e6b451ff1143f6de0f33fc7f1b68fecfd2c7de06e104de96c4514de3f5396f8" dependencies = [ "bytemuck", + "emath", ] [[package]] name = "eframe" -version = "0.27.2" +version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "020e2ccef6bbcec71dbc542f7eed64a5846fc3076727f5746da8fd307c91bab2" +checksum = "6490ef800b2e41ee129b1f32f9ac15f713233fe3bc18e241a1afe1e4fb6811e0" dependencies = [ + "ahash", "bytemuck", - "cocoa", "document-features", "egui", "egui-winit", @@ -538,13 +503,14 @@ dependencies = [ "image", "js-sys", "log", - "objc", + "objc2 0.5.1", + "objc2-app-kit", + "objc2-foundation", "parking_lot", "percent-encoding", "raw-window-handle 0.5.2", "raw-window-handle 0.6.1", "static_assertions", - "thiserror", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", @@ -555,11 +521,12 @@ dependencies = [ [[package]] name = "egui" -version = "0.27.2" +version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "584c5d1bf9a67b25778a3323af222dbe1a1feb532190e103901187f92c7fe29a" +checksum = "20c97e70a2768de630f161bb5392cbd3874fcf72868f14df0e002e82e06cb798" dependencies = [ "ahash", + "emath", "epaint", "log", "nohash-hasher", @@ -567,10 +534,11 @@ dependencies = [ [[package]] name = "egui-winit" -version = "0.27.2" +version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e3da0cbe020f341450c599b35b92de4af7b00abde85624fd16f09c885573609" +checksum = "fac4e066af341bf92559f60dbdf2020b2a03c963415349af5f3f8d79ff7a4926" dependencies = [ + "ahash", "arboard", "egui", "log", @@ -583,10 +551,11 @@ dependencies = [ [[package]] name = "egui_glow" -version = "0.27.2" +version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0e5d975f3c86edc3d35b1db88bb27c15dde7c55d3b5af164968ab5ede3f44ca" +checksum = "4e2bdc8b38cfa17cc712c4ae079e30c71c00cd4c2763c9e16dc7860a02769103" dependencies = [ + "ahash", "bytemuck", "egui", "glow", @@ -604,18 +573,18 @@ checksum = "a47c1c47d2f5964e29c61246e81db715514cd532db6b5116a25ea3c03d6780a2" [[package]] name = "emath" -version = "0.27.2" +version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4c3a552cfca14630702449d35f41c84a0d15963273771c6059175a803620f3f" +checksum = "0a6a21708405ea88f63d8309650b4d77431f4bc28fb9d8e6f77d3963b51249e6" dependencies = [ "bytemuck", ] [[package]] name = "epaint" -version = "0.27.2" +version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b381f8b149657a4acf837095351839f32cd5c4aec1817fc4df84e18d76334176" +checksum = "3f0dcc0a0771e7500e94cd1cb797bd13c9f23b9409bdc3c824e2cbc562b7fa01" dependencies = [ "ab_glyph", "ahash", @@ -955,13 +924,12 @@ dependencies = [ [[package]] name = "image" -version = "0.24.9" +version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5690139d2f55868e080017335e4b94cb7414274c74f1669c84fb5feba2c9f69d" +checksum = "fd54d660e773627692c524beaad361aca785a4f9f5730ce91f42aabe5bce3d11" dependencies = [ "bytemuck", "byteorder", - "color_quant", "num-traits", "png", ] @@ -2527,17 +2495,18 @@ dependencies = [ [[package]] name = "webbrowser" -version = "0.8.15" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db67ae75a9405634f5882791678772c94ff5f16a66535aae186e26aa0841fc8b" +checksum = "425ba64c1e13b1c6e8c5d2541c8fac10022ca584f33da781db01b5756aef1f4e" dependencies = [ + "block2 0.5.0", "core-foundation", "home", "jni", "log", "ndk-context", - "objc", - "raw-window-handle 0.5.2", + "objc2 0.5.1", + "objc2-foundation", "url", "web-sys", ] diff --git a/slamrs/Cargo.toml b/slamrs/Cargo.toml index ea76145..2189bcc 100644 --- a/slamrs/Cargo.toml +++ b/slamrs/Cargo.toml @@ -21,7 +21,7 @@ slam = {path = "./slam"} # we only depend on `egui` since it exports the versions of # `eframe` and `glow` that we need. -eframe = { version = "0.27.2", default-features = false, features = [ +eframe = { version = "0.28", default-features = false, features = [ #"accesskit", # Make egui comptaible with screen readers. NOTE: adds a lot of dependencies. "default_fonts", # Embed the default egui fonts. "glow", # Use the glow rendering backend. Alternative: "wgpu". diff --git a/slamrs/baseui/src/editor.rs b/slamrs/baseui/src/editor.rs index e0bd1d4..8821490 100644 --- a/slamrs/baseui/src/editor.rs +++ b/slamrs/baseui/src/editor.rs @@ -58,78 +58,79 @@ nodes: // .open(&mut self.open) // .constrain(true) // .show(ui.ctx(), |ui| { - ui.set_enabled(!self.confirm_open); + ui.add_enabled_ui(!self.confirm_open, |ui| { + ui.horizontal(|ui| { + egui::ComboBox::from_label("Preset") + .selected_text(self.presets[self.selected as usize].0.to_string()) + .show_ui(ui, |ui| { + for (i, (name, _)) in self.presets.iter().enumerate() { + ui.selectable_value(&mut self.selected, i as u32, *name); + } + }); + if ui.button("Load").clicked() { + // TODO: replace content with any of the presets + self.confirm_open = true; + } + }); - ui.horizontal(|ui| { - egui::ComboBox::from_label("Preset") - .selected_text(self.presets[self.selected as usize].0.to_string()) - .show_ui(ui, |ui| { - for (i, (name, _)) in self.presets.iter().enumerate() { - ui.selectable_value(&mut self.selected, i as u32, *name); + // show the result of trying to convert it to a valid config object + if let Some(parsed_config) = &self.parsed_config { + match parsed_config { + Ok(c) => { + ui.label(format!("OK ({} nodes)", c.nodes.len())); + } + Err(e) => { + ui.label(format!("ERR:\n{}", e)); } - }); - if ui.button("Load").clicked() { - // TODO: replace content with any of the presets - self.confirm_open = true; - } - }); - - // show the result of trying to convert it to a valid config object - if let Some(parsed_config) = &self.parsed_config { - match parsed_config { - Ok(c) => { - ui.label(format!("OK ({} nodes)", c.nodes.len())); - } - Err(e) => { - ui.label(format!("ERR:\n{}", e)); } + } else { + ui.label("Start Typing"); } - } else { - ui.label("Start Typing"); - } - if let Some(Ok(c)) = &self.parsed_config { - if ui.button("Apply").clicked() { - result = Some(c.to_owned()); + if let Some(Ok(c)) = &self.parsed_config { + if ui.button("Apply").clicked() { + result = Some(c.to_owned()); + } } - } - if self.confirm_open { - egui::Window::new("Are you sure?").show(ui.ctx(), |ui| { - ui.label( + if self.confirm_open { + egui::Window::new("Are you sure?").show(ui.ctx(), |ui| { + ui.label( "Loading a preset will replace your current config. \nDo you want to continue?", ); - ui.horizontal(|ui| { - if ui.button("Load").clicked() { - self.source = self.presets[self.selected as usize].1.into(); - self.confirm_open = false; - - // also parse the loaded config - self.parse_source(); - } - - if ui.button("Cancel").clicked() { - self.confirm_open = false; - } + ui.horizontal(|ui| { + if ui.button("Load").clicked() { + self.source = self.presets[self.selected as usize].1.into(); + self.confirm_open = false; + + // also parse the loaded config + self.parse_source(); + } + + if ui.button("Cancel").clicked() { + self.confirm_open = false; + } + }); }); - }); - } - let response = egui::ScrollArea::vertical() - .id_source("source") - // .max_height(ui.available_height()) - .show(ui, |ui| { - ui.add( - egui::TextEdit::multiline(&mut self.source) - .desired_width(f32::INFINITY) - .code_editor(), - ) - }) - .inner; - - if response.changed() { - self.parse_source(); - } + } + let response = egui::ScrollArea::vertical() + .id_source("source") + // .max_height(ui.available_height()) + .show(ui, |ui| { + ui.add( + egui::TextEdit::multiline(&mut self.source) + .desired_width(f32::INFINITY) + .code_editor(), + ) + }) + .inner; + + if response.changed() { + self.parse_source(); + } - result + result + }) + .inner } } diff --git a/slamrs/baseui/src/main.rs b/slamrs/baseui/src/main.rs index c574e73..9a29f12 100644 --- a/slamrs/baseui/src/main.rs +++ b/slamrs/baseui/src/main.rs @@ -46,7 +46,7 @@ fn main() -> Result<(), eframe::Error> { native_options, Box::new(|cc| { set_style(&cc.egui_ctx); - Box::new(baseui::App::new(cc, config)) + Ok(Box::new(baseui::App::new(cc, config))) }), ) } @@ -73,7 +73,7 @@ fn main() { web_options, Box::new(|cc| { set_style(&cc.egui_ctx); - Box::new(baseui::App::new(cc, config)) + Ok(Box::new(baseui::App::new(cc, config))) }), ) .await diff --git a/slamrs/baseui/src/node/gaussian.rs b/slamrs/baseui/src/node/gaussian.rs index 22b56ee..cc44e13 100644 --- a/slamrs/baseui/src/node/gaussian.rs +++ b/slamrs/baseui/src/node/gaussian.rs @@ -38,14 +38,14 @@ impl Node for GaussianRendering { ui.add( DragValue::new(&mut self.gaussian.mean.x) .fixed_decimals(2) - .clamp_range(-1.0..=1.0) + .range(-1.0..=1.0) .speed(0.01), ); ui.add( DragValue::new(&mut self.gaussian.mean.y) .fixed_decimals(2) - .clamp_range(-1.0..=1.0) + .range(-1.0..=1.0) .speed(0.01), ); @@ -53,7 +53,7 @@ impl Node for GaussianRendering { ui.add( DragValue::new(&mut self.gaussian.covariance[(0, 0)]) .fixed_decimals(2) - .clamp_range(0.0..=5.0) + .range(0.0..=5.0) .speed(0.01), ); // ui.add( @@ -67,13 +67,13 @@ impl Node for GaussianRendering { ui.add( DragValue::new(&mut self.gaussian.covariance[(1, 0)]) .fixed_decimals(2) - .clamp_range(-5.0..=5.0) + .range(-5.0..=5.0) .speed(0.01), ); ui.add( DragValue::new(&mut self.gaussian.covariance[(1, 1)]) .fixed_decimals(2) - .clamp_range(0.0..=5.0) + .range(0.0..=5.0) .speed(0.01), ); }); @@ -81,7 +81,7 @@ impl Node for GaussianRendering { ui.add( DragValue::new(&mut self.p) .fixed_decimals(2) - .clamp_range(0.0..=1.0) + .range(0.0..=1.0) .speed(0.01), );