diff --git a/snes-frontend/Cargo.toml b/snes-frontend/Cargo.toml index 9d8f35b..d2a0fda 100644 --- a/snes-frontend/Cargo.toml +++ b/snes-frontend/Cargo.toml @@ -11,3 +11,4 @@ snes-core = { path = "../snes-core" } # Frontend stuff eframe = "0.24.1" env_logger = "0.10.1" +rfd = "0.12.1" diff --git a/snes-frontend/src/main.rs b/snes-frontend/src/main.rs index 665d998..6f08727 100644 --- a/snes-frontend/src/main.rs +++ b/snes-frontend/src/main.rs @@ -18,7 +18,7 @@ impl SnesEmulatorApp { impl eframe::App for SnesEmulatorApp { fn update(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) { egui::CentralPanel::default().show(ctx, |ui| { - ui::menu::build_menu_bar(ui); + ui::menu::build_menu_bar(&mut self.emulator, ui); ui.separator(); // ui::game::build_game_window(ctx, ui); }); diff --git a/snes-frontend/src/ui/menu.rs b/snes-frontend/src/ui/menu.rs index 7653d23..c05d2a3 100644 --- a/snes-frontend/src/ui/menu.rs +++ b/snes-frontend/src/ui/menu.rs @@ -1,10 +1,18 @@ use eframe::egui; +use snes_core::emulator::Emulator; -pub fn build_menu_bar(ui: &mut egui::Ui) { +pub fn build_menu_bar(emulator: &mut Emulator, ui: &mut egui::Ui) { egui::menu::bar(ui, |ui| { ui.menu_button("Emulator", |ui| { if ui.button("Load ROM file").clicked() { + if let Some(path) = rfd::FileDialog::new().pick_file() { + let picked_path = path.display().to_string(); + match emulator.rom.load(&picked_path) { + Ok(_) => println!("Loaded ROM"), + Err(err) => println!("Error loading the ROM: {}", err), + } + } } }); ui.menu_button("Debug", |ui| {