mac: Add asynchronous ShowSaveDialog.
This commit is contained in:
parent
30ca085fd8
commit
c7637c78d1
2 changed files with 31 additions and 1 deletions
|
@ -25,7 +25,10 @@ enum FileDialogProperty {
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef base::Callback<void(
|
typedef base::Callback<void(
|
||||||
bool result, std::vector<base::FilePath> paths)> OpenDialogCallback;
|
bool result, const std::vector<base::FilePath>& paths)> OpenDialogCallback;
|
||||||
|
|
||||||
|
typedef base::Callback<void(
|
||||||
|
bool result, const base::FilePath& path)> SaveDialogCallback;
|
||||||
|
|
||||||
bool ShowOpenDialog(atom::NativeWindow* parent_window,
|
bool ShowOpenDialog(atom::NativeWindow* parent_window,
|
||||||
const std::string& title,
|
const std::string& title,
|
||||||
|
@ -44,6 +47,11 @@ bool ShowSaveDialog(atom::NativeWindow* parent_window,
|
||||||
const base::FilePath& default_path,
|
const base::FilePath& default_path,
|
||||||
base::FilePath* path);
|
base::FilePath* path);
|
||||||
|
|
||||||
|
void ShowSaveDialog(atom::NativeWindow* parent_window,
|
||||||
|
const std::string& title,
|
||||||
|
const base::FilePath& default_path,
|
||||||
|
const SaveDialogCallback& callback);
|
||||||
|
|
||||||
} // namespace file_dialog
|
} // namespace file_dialog
|
||||||
|
|
||||||
#endif // BROWSER_UI_FILE_DIALOG_H_
|
#endif // BROWSER_UI_FILE_DIALOG_H_
|
||||||
|
|
|
@ -143,4 +143,26 @@ bool ShowSaveDialog(atom::NativeWindow* parent_window,
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ShowSaveDialog(atom::NativeWindow* parent_window,
|
||||||
|
const std::string& title,
|
||||||
|
const base::FilePath& default_path,
|
||||||
|
const SaveDialogCallback& c) {
|
||||||
|
NSSavePanel* dialog = [NSSavePanel savePanel];
|
||||||
|
|
||||||
|
SetupDialog(dialog, title, default_path);
|
||||||
|
|
||||||
|
__block SaveDialogCallback callback = c;
|
||||||
|
|
||||||
|
NSWindow* window = parent_window ? parent_window->GetNativeWindow() : NULL;
|
||||||
|
[dialog beginSheetModalForWindow:window
|
||||||
|
completionHandler:^(NSInteger chosen) {
|
||||||
|
if (chosen == NSFileHandlingPanelCancelButton) {
|
||||||
|
callback.Run(false, base::FilePath());
|
||||||
|
} else {
|
||||||
|
std::string path = base::SysNSStringToUTF8([[dialog URL] path]);
|
||||||
|
callback.Run(true, base::FilePath(path));
|
||||||
|
}
|
||||||
|
}];
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace file_dialog
|
} // namespace file_dialog
|
||||||
|
|
Loading…
Add table
Reference in a new issue