mirror of
https://github.com/storytold/effectcraft.git
synced 2026-11-12 00:47:03 -06:00
Render Queue: clicking the Output To file name opens a save dialog (#192)
Clicking an item's Output To file name opened an inline editor on the name template (`[compName].[fileExtension]`), so there was no way to pick a folder from there. Choose File… in the menu beside it did open a dialog, but the project save dialog: filtered to .ecproj and opening wherever the OS chose. As After Effects' Output Movie To, clicking the file name now opens a save dialog at the current output (its folder and name) for the output format's extension, and the chosen file becomes the output. Choose File… opens the same dialog. Alt-click still edits the template in place, and hosts without a save dialog (the web) keep the inline editor. The desktop `pick_save_file` hook opens in the folder of a default path. Test: clicking_the_output_file_name_opens_the_save_dialog. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -145,7 +145,14 @@ fn main() -> eframe::Result {
|
||||
app.hooks.audio_devices = Some(Box::new(audio_out::devices));
|
||||
app.hooks.pick_folder = Some(Box::new(|| rfd::FileDialog::new().pick_folder().map(|p| p.to_string_lossy().to_string())));
|
||||
app.hooks.pick_save_file = Some(Box::new(|name: &str, ext: &str| {
|
||||
rfd::FileDialog::new().add_filter(ext, &[ext]).set_file_name(name).save_file().map(|p| p.to_string_lossy().to_string())
|
||||
// A default with a folder that exists opens the dialog there.
|
||||
let path = std::path::Path::new(name);
|
||||
let mut d = rfd::FileDialog::new().add_filter(ext, &[ext]);
|
||||
if let Some(dir) = path.parent().filter(|d| d.is_dir()) {
|
||||
d = d.set_directory(dir);
|
||||
}
|
||||
let file = path.file_name().map(|n| n.to_string_lossy().to_string()).unwrap_or_default();
|
||||
d.set_file_name(file).save_file().map(|p| p.to_string_lossy().to_string())
|
||||
}));
|
||||
#[cfg(target_os = "macos")]
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user