feat(dialogs): reopen file pickers in the last-used directory
Every rfd dialog result funnels through sys::handle_path, which now records the picked file's folder (persisted to the config dir), and all pickers are built via sys::file_dialog(), seeded with that folder. Save-As keeps the current tab's own directory as the first choice and falls back to the remembered one. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
e8411c1b6d
commit
e78ad7884d
7 changed files with 78 additions and 15 deletions
|
|
@ -40,7 +40,7 @@ const PHASE_FINALIZING: u8 = 3;
|
|||
/// the parser thread starts.
|
||||
#[cfg(not(target_arch = "wasm32"))]
|
||||
pub async fn pick_open_path() -> Option<(PathBuf, u64)> {
|
||||
let handle = rfd::AsyncFileDialog::new()
|
||||
let handle = crate::sys::file_dialog()
|
||||
.set_title("Open CAD file")
|
||||
.add_filter("CAD Files", &["dwg", "dxf", "bak", "sv$", "DWG", "DXF", "BAK"])
|
||||
.add_filter("DWG Files", &["dwg", "DWG"])
|
||||
|
|
@ -103,7 +103,7 @@ pub async fn open_path_with_phase(
|
|||
#[cfg(target_arch = "wasm32")]
|
||||
pub async fn pick_and_load_web(
|
||||
) -> Result<(String, PathBuf, CadDocument, DerivedCaches), String> {
|
||||
let handle = rfd::AsyncFileDialog::new()
|
||||
let handle = crate::sys::file_dialog()
|
||||
.set_title("Open CAD file")
|
||||
.add_filter("CAD Files", &["dwg", "dxf", "DWG", "DXF"])
|
||||
.add_filter("All Files", &["*"])
|
||||
|
|
@ -364,7 +364,7 @@ pub fn write_backup(path: &std::path::Path) {
|
|||
|
||||
/// Show a file-open dialog and load the selected CTB or STB file.
|
||||
pub async fn pick_plot_style() -> Option<plot_style::PlotStyleTable> {
|
||||
let handle = rfd::AsyncFileDialog::new()
|
||||
let handle = crate::sys::file_dialog()
|
||||
.set_title("Load Plot Style Table")
|
||||
.add_filter("Plot Style Tables", &["ctb", "stb", "CTB", "STB"])
|
||||
.add_filter("CTB Files", &["ctb", "CTB"])
|
||||
|
|
@ -380,7 +380,7 @@ pub async fn pick_plot_style() -> Option<plot_style::PlotStyleTable> {
|
|||
/// Show a file-open dialog for raster images and decode the selected file.
|
||||
/// Returns `(path, pixel_width, pixel_height)` or an error string.
|
||||
pub async fn pick_image_file() -> Result<(PathBuf, u32, u32), String> {
|
||||
let handle = rfd::AsyncFileDialog::new()
|
||||
let handle = crate::sys::file_dialog()
|
||||
.set_title("Select Image File")
|
||||
.add_filter("Images", &["png", "jpg", "jpeg", "bmp", "tiff", "tif"])
|
||||
.add_filter("PNG", &["png"])
|
||||
|
|
|
|||
Loading…
Reference in a new issue