From 92dc2ed5e938a9a2db9a586933df74732980a358 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Magalh=C3=A3es?= <joamag@gmail.com> Date: Wed, 7 Jun 2023 11:24:24 +0100 Subject: [PATCH] chore: improved image naming --- frontends/sdl/src/main.rs | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/frontends/sdl/src/main.rs b/frontends/sdl/src/main.rs index c5fcbee7..04596c4e 100644 --- a/frontends/sdl/src/main.rs +++ b/frontends/sdl/src/main.rs @@ -340,7 +340,7 @@ impl Emulator { Event::KeyDown { keycode: Some(Keycode::I), .. - } => self.save_image("screen.png"), + } => self.save_image(&self.image_name(Some("png"))), Event::KeyDown { keycode: Some(Keycode::T), .. @@ -626,6 +626,31 @@ impl Emulator { thread::sleep(ten_millis); } } + + fn rom_name(&self) -> &str { + Path::new(&self.rom_path) + .file_stem() + .unwrap() + .to_str() + .unwrap() + } + + fn image_name(&self, ext: Option<&str>) -> String { + let ext = ext.unwrap_or("png"); + self.best_name(self.rom_name(), ext) + } + + fn best_name(&self, base: &str, ext: &str) -> String { + let mut index = 0_usize; + let mut name = format!("{}.{}", base, ext); + + while Path::new(&name).exists() { + index += 1; + name = format!("{}-{}.{}", base, index, ext); + } + + name + } } #[derive(Parser, Debug)] -- GitLab