}
};
+ template<>
+ struct Converter<file_dialog::DialogSettings> {
+ static bool FromV8(v8::Isolate* isolate,
+ v8::Local<v8::Value> val,
+ file_dialog::DialogSettings* out) {
+ mate::Dictionary dict;
+ if (!ConvertFromV8(isolate, val, &dict))
+ return false;
+ dict.Get("window", &(out->parent_window));
+ dict.Get("title", &(out->title));
++ dict.Get("message", &(out->message));
+ dict.Get("buttonLabel", &(out->button_label));
++ dict.Get("nameFieldLabel", &(out->name_field_label));
+ dict.Get("defaultPath", &(out->default_path));
+ dict.Get("filters", &(out->filters));
+ dict.Get("properties", &(out->properties));
++ dict.Get("showsTagField", &(out->shows_tag_field));
+ return true;
+ }
+ };
+
} // namespace mate
namespace {
typedef base::Callback<void(
bool result, const base::FilePath& path)> SaveDialogCallback;
- bool ShowOpenDialog(atom::NativeWindow* parent_window,
- const std::string& title,
- const std::string& button_label,
- const base::FilePath& default_path,
- const Filters& filters,
- int properties,
- const std::string& message,
+ struct DialogSettings {
+ atom::NativeWindow* parent_window = nullptr;
+ std::string title;
++ std::string message;
+ std::string button_label;
++ std::string name_field_label;
+ base::FilePath default_path;
+ Filters filters;
+ int properties = 0;
++ bool shows_tag_field = true;
+ };
+
+ bool ShowOpenDialog(const DialogSettings& settings,
std::vector<base::FilePath>* paths);
- void ShowOpenDialog(atom::NativeWindow* parent_window,
- const std::string& title,
- const std::string& button_label,
- const base::FilePath& default_path,
- const Filters& filters,
- int properties,
- const std::string& message,
+ void ShowOpenDialog(const DialogSettings& settings,
const OpenDialogCallback& callback);
- bool ShowSaveDialog(atom::NativeWindow* parent_window,
- const std::string& title,
- const std::string& button_label,
- const base::FilePath& default_path,
- const Filters& filters,
- const std::string& message,
- const std::string& name_field_label,
- bool shows_tag_field,
+ bool ShowSaveDialog(const DialogSettings& settings,
base::FilePath* path);
- void ShowSaveDialog(atom::NativeWindow* parent_window,
- const std::string& title,
- const std::string& button_label,
- const base::FilePath& default_path,
- const Filters& filters,
- const std::string& message,
- const std::string& name_field_label,
- bool shows_tag_field,
+ void ShowSaveDialog(const DialogSettings& settings,
const SaveDialogCallback& callback);
} // namespace file_dialog
}
void SetupDialog(NSSavePanel* dialog,
- const std::string& title,
- const std::string& button_label,
- const base::FilePath& default_path,
- const Filters& filters,
- const std::string& message,
- const std::string& name_field_label,
- const bool& shows_tag_field) {
- if (!title.empty())
- [dialog setTitle:base::SysUTF8ToNSString(title)];
+ const DialogSettings& settings) {
+ if (!settings.title.empty())
+ [dialog setTitle:base::SysUTF8ToNSString(settings.title)];
- if (!button_label.empty())
- [dialog setPrompt:base::SysUTF8ToNSString(button_label)];
+ if (!settings.button_label.empty())
+ [dialog setPrompt:base::SysUTF8ToNSString(settings.button_label)];
- if (!message.empty())
- [dialog setMessage:base::SysUTF8ToNSString(message)];
++ if (!settings.message.empty())
++ [dialog setMessage:base::SysUTF8ToNSString(settings.message)];
+
- if (!name_field_label.empty())
- [dialog setNameFieldLabel:base::SysUTF8ToNSString(name_field_label)];
++ if (!settings.name_field_label.empty())
++ [dialog setNameFieldLabel:base::SysUTF8ToNSString(settings.name_field_label)];
+
- [dialog setShowsTagField:shows_tag_field];
++ [dialog setShowsTagField:settings.shows_tag_field];
+
NSString* default_dir = nil;
NSString* default_filename = nil;
- if (!default_path.empty()) {
- if (base::DirectoryExists(default_path)) {
- default_dir = base::SysUTF8ToNSString(default_path.value());
+ if (!settings.default_path.empty()) {
+ if (base::DirectoryExists(settings.default_path)) {
+ default_dir = base::SysUTF8ToNSString(settings.default_path.value());
} else {
- default_dir = base::SysUTF8ToNSString(default_path.DirName().value());
+ default_dir =
+ base::SysUTF8ToNSString(settings.default_path.DirName().value());
default_filename =
- base::SysUTF8ToNSString(default_path.BaseName().value());
+ base::SysUTF8ToNSString(settings.default_path.BaseName().value());
}
}
const wrappedCallback = typeof callback === 'function' ? function (success, result) {
return callback(success ? result : void 0)
} : null
- return binding.showOpenDialog(title, buttonLabel, defaultPath, filters,
- dialogProperties, message, window,
- wrappedCallback)
- const settings = {title, buttonLabel, defaultPath, filters, window}
++ const settings = {title, buttonLabel, defaultPath, filters, message, window}
+ settings.properties = dialogProperties
+ return binding.showOpenDialog(settings, wrappedCallback)
},
showSaveDialog: function (...args) {
const wrappedCallback = typeof callback === 'function' ? function (success, result) {
return callback(success ? result : void 0)
} : null
- return binding.showSaveDialog(title, buttonLabel, defaultPath, filters,
- message, nameFieldLabel, showsTagField,
- window, wrappedCallback)
- const settings = {title, buttonLabel, defaultPath, filters, window}
++ const settings = {title, buttonLabel, defaultPath, filters, message, nameFieldLabel, showsTagField, window}
+ return binding.showSaveDialog(settings, wrappedCallback)
},
showMessageBox: function (...args) {