Merge remote-tracking branch 'origin/master' into macos-open-save-panel
authorKevin Sawicki <kevinsawicki@gmail.com>
Thu, 9 Feb 2017 19:25:05 +0000 (11:25 -0800)
committerKevin Sawicki <kevinsawicki@gmail.com>
Thu, 9 Feb 2017 19:25:05 +0000 (11:25 -0800)
1  2 
atom/browser/api/atom_api_dialog.cc
atom/browser/ui/file_dialog.h
atom/browser/ui/file_dialog_mac.mm
docs/api/dialog.md
lib/browser/api/dialog.js
spec/api-dialog-spec.js

index 5f0b7fec5fa5274f5386d99f64e045133e8ab811,61999e1c703864c098b46c847beeac840a6a94f8..326834472d24d70d1121c9fa207adfeb108a0ed5
@@@ -35,6 -35,24 +35,27 @@@ struct Converter<file_dialog::Filter> 
    }
  };
  
+ 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 {
index 546722b4e6e527a23fc289682c617197102db3ac,95fffe6ebb900425a9b65307991d5ec600887ce4..e9734adeb60bc4ec69fbe03910db16090dc05f50
@@@ -37,42 -37,25 +37,28 @@@ typedef base::Callback<void
  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
index 70d5694562bbd524cf85bc42cc241d2f9717e7dc,a3cf358e95307f508b0339335e3ee31a9bdbac5e..6b625e3a53c7787a4eae86d59ab01c121b3b23e1
@@@ -44,36 -44,23 +44,31 @@@ void SetAllowedFileTypes(NSSavePanel* d
  }
  
  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());
      }
    }
  
Simple merge
index b000e46e150b407a49578a100a14209d4d164921,8f1aaf7e14ca0060d997ec716575493a3d5a0e34..2bee42eb410ceee7737b7013568bce0b0c5d16a1
@@@ -127,9 -121,9 +127,9 @@@ module.exports = 
      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) {
Simple merge