made export remember where the last save location was
This commit is contained in:
+9
-2
@@ -133,8 +133,11 @@ fn collect_scene_data(layout: &DungeonLayout, settings: &UiSettings) -> SceneDat
|
|||||||
// Open a dialog to select an export destination.
|
// Open a dialog to select an export destination.
|
||||||
pub fn select_export_target(settings: &UiSettings) -> Result<ExportTarget, String> {
|
pub fn select_export_target(settings: &UiSettings) -> Result<ExportTarget, String> {
|
||||||
if settings.export_format == ExportFormat::Folder {
|
if settings.export_format == ExportFormat::Folder {
|
||||||
let folder = FileDialog::new()
|
let mut dialog = FileDialog::new().set_title("Export composite masks folder");
|
||||||
.set_title("Export composite masks folder")
|
if let Some(ref last_path) = settings.last_export_path {
|
||||||
|
dialog = dialog.set_directory(last_path);
|
||||||
|
}
|
||||||
|
let folder = dialog
|
||||||
.pick_folder()
|
.pick_folder()
|
||||||
.ok_or_else(|| "Export canceled".to_string())?;
|
.ok_or_else(|| "Export canceled".to_string())?;
|
||||||
return Ok(ExportTarget::Folder(folder));
|
return Ok(ExportTarget::Folder(folder));
|
||||||
@@ -149,6 +152,10 @@ pub fn select_export_target(settings: &UiSettings) -> Result<ExportTarget, Strin
|
|||||||
.set_file_name(&default_name)
|
.set_file_name(&default_name)
|
||||||
.add_filter(settings.export_format.label(), &[ext]);
|
.add_filter(settings.export_format.label(), &[ext]);
|
||||||
|
|
||||||
|
if let Some(ref last_path) = settings.last_export_path {
|
||||||
|
dialog = dialog.set_directory(last_path);
|
||||||
|
}
|
||||||
|
|
||||||
let mut path = dialog
|
let mut path = dialog
|
||||||
.save_file()
|
.save_file()
|
||||||
.ok_or_else(|| "Export canceled".to_string())?;
|
.ok_or_else(|| "Export canceled".to_string())?;
|
||||||
|
|||||||
+13
@@ -174,6 +174,19 @@ impl eframe::App for DungeonApp {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Update the last export path in settings to remember the directory.
|
||||||
|
match &target {
|
||||||
|
exporter::ExportTarget::File(path) => {
|
||||||
|
if let Some(parent) = path.parent() {
|
||||||
|
self.settings.last_export_path = Some(parent.to_string_lossy().to_string());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
exporter::ExportTarget::Folder(path) => {
|
||||||
|
self.settings.last_export_path = Some(path.to_string_lossy().to_string());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
let layout = self.layout.clone();
|
let layout = self.layout.clone();
|
||||||
let settings = self.settings.clone();
|
let settings = self.settings.clone();
|
||||||
let (tx, rx) = mpsc::channel();
|
let (tx, rx) = mpsc::channel();
|
||||||
|
|||||||
@@ -131,6 +131,7 @@ pub struct UiSettings {
|
|||||||
pub export_height: u32,
|
pub export_height: u32,
|
||||||
pub allow_export_aspect_change: bool,
|
pub allow_export_aspect_change: bool,
|
||||||
pub export_show_grid: bool,
|
pub export_show_grid: bool,
|
||||||
|
pub last_export_path: Option<String>,
|
||||||
pub add_tool: AddTool,
|
pub add_tool: AddTool,
|
||||||
pub add_text_value: String,
|
pub add_text_value: String,
|
||||||
pub min_start_marker_size: usize,
|
pub min_start_marker_size: usize,
|
||||||
@@ -184,6 +185,7 @@ impl Default for UiSettings {
|
|||||||
export_height: 1080,
|
export_height: 1080,
|
||||||
allow_export_aspect_change: false,
|
allow_export_aspect_change: false,
|
||||||
export_show_grid: true,
|
export_show_grid: true,
|
||||||
|
last_export_path: None,
|
||||||
add_tool: AddTool::None,
|
add_tool: AddTool::None,
|
||||||
add_text_value: "Text".to_string(),
|
add_text_value: "Text".to_string(),
|
||||||
min_start_marker_size: 1,
|
min_start_marker_size: 1,
|
||||||
|
|||||||
Reference in New Issue
Block a user