Write a closure!
Not sure this is actually something useful or not...
This commit is contained in:
26
src/main.rs
26
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()
|
||||
|
||||
Reference in New Issue
Block a user