diff --git a/src/main.rs b/src/main.rs index bda48b1..a78c04b 100644 --- a/src/main.rs +++ b/src/main.rs @@ -102,6 +102,7 @@ impl eframe::App for RustDoomLauncher { }); ui.separator(); ui.vertical(|ui| { + // TODO add default name as the path or something ui.label("Add WADs etc"); ui.set_max_width(180.0); ui.horizontal(|ui| { @@ -109,10 +110,21 @@ impl eframe::App for RustDoomLauncher { ui.text_edit_singleline(&mut self.name) .labelled_by(name_label.id); }); + + let get_name = |path: &PathBuf, name: &String| { + if self.name.is_empty() { + // Check this perhaps? Unsure whether the FileDialog can actually + // return something that isn't a file + path.file_name().unwrap().to_str().unwrap().to_string() + } else { + name.clone() + } + }; + if ui.button("Add Launcher").clicked() { if let Some(path) = rfd::FileDialog::new().pick_file() { self.all_launchers.push(LauncherInfo { - name: self.name.clone(), + name: get_name(&path, &self.name), path: path }); } @@ -120,7 +132,7 @@ impl eframe::App for RustDoomLauncher { if ui.button("Add IWAD").clicked() { if let Some(path) = rfd::FileDialog::new().pick_file() { self.all_iwads.push(WadInfo { - name: self.name.clone(), + name: get_name(&path, &self.name), path: path, }); } @@ -128,8 +140,8 @@ impl eframe::App for RustDoomLauncher { if ui.button("Add PWAD or Mod").clicked() { if let Some(path) = rfd::FileDialog::new().pick_file() { self.all_pwads.push(WadInfo { + name: get_name(&path, &self.name), path: path.clone(), - name: self.name.clone(), }); } } @@ -139,8 +151,8 @@ impl eframe::App for RustDoomLauncher { ui.horizontal_wrapped(|ui| { // I don't actually think using SelectableLabel is correct here - // but it'll at least do the highlighting when hovered nicely - if let Some(l) = &self.selected_launcher { - if let Some(iwad) = &self.all_launchers.get(*l) { + if let Some(l) = self.selected_launcher { + if let Some(iwad) = self.all_launchers.get(l) { if ui.add(egui::SelectableLabel::new(false, &iwad.name)).clicked() { self.selected_launcher = None; } @@ -150,8 +162,8 @@ impl eframe::App for RustDoomLauncher { } else { ui.label("Select a launcher plz"); } - if let Some(i) = &self.selected_iwad { - if let Some(iwad) = &self.all_iwads.get(*i) { + if let Some(i) = self.selected_iwad { + if let Some(iwad) = self.all_iwads.get(i) { if ui .add(egui::SelectableLabel::new(false, &iwad.name)) .clicked()