Browse Source

gtk: Map dialog type to message box type

Cheng Zhao 9 years ago
parent
commit
3e6394a004

+ 1 - 1
atom/browser/api/lib/dialog.coffee

@@ -9,7 +9,7 @@ fileDialogProperties =
   multiSelections: 1 << 2
   createDirectory: 1 << 3
 
-messageBoxTypes = ['none', 'info', 'warning']
+messageBoxTypes = ['none', 'info', 'warning', 'error', 'question']
 
 parseArgs = (window, options, callback) ->
   unless window is null or window?.constructor is BrowserWindow

+ 3 - 1
atom/browser/ui/message_box.h

@@ -22,7 +22,9 @@ class NativeWindow;
 enum MessageBoxType {
   MESSAGE_BOX_TYPE_NONE = 0,
   MESSAGE_BOX_TYPE_INFORMATION,
-  MESSAGE_BOX_TYPE_WARNING
+  MESSAGE_BOX_TYPE_WARNING,
+  MESSAGE_BOX_TYPE_ERROR,
+  MESSAGE_BOX_TYPE_QUESTION,
 };
 
 typedef base::Callback<void(int code)> MessageBoxCallback;

+ 16 - 1
atom/browser/ui/message_box_gtk.cc

@@ -41,7 +41,7 @@ class GtkMessageBox {
         nullptr,  // parent
         modal ? GTK_DIALOG_MODAL :   // modal dialog
                 static_cast<GtkDialogFlags>(0),  // no flags
-        GTK_MESSAGE_OTHER,  // no icon
+        GetMessageType(type),  // type
         GTK_BUTTONS_NONE,  // no buttons
         "%s", message.c_str());
     gtk_message_dialog_format_secondary_text(
@@ -75,6 +75,21 @@ class GtkMessageBox {
     gtk_widget_destroy(dialog_);
   }
 
+  GtkMessageType GetMessageType(MessageBoxType type) {
+    switch (type) {
+      case MESSAGE_BOX_TYPE_INFORMATION:
+        return GTK_MESSAGE_INFO;
+      case MESSAGE_BOX_TYPE_WARNING:
+        return GTK_MESSAGE_WARNING;
+      case MESSAGE_BOX_TYPE_QUESTION:
+        return GTK_MESSAGE_QUESTION;
+      case MESSAGE_BOX_TYPE_ERROR:
+        return GTK_MESSAGE_ERROR;
+      default:
+        return GTK_MESSAGE_OTHER;
+    }
+  }
+
   const char* TranslateToStock(int id, const std::string& text) {
     std::string lower = base::StringToLowerASCII(text);
     if (lower == "cancel") {

+ 1 - 1
docs/api/dialog.md

@@ -70,7 +70,7 @@ will be passed via `callback(filename)`
 
 * `browserWindow` BrowserWindow
 * `options` Object
-  * `type` String - Can be `"none"`, `"info"` or `"warning"`
+  * `type` String - Can be `"none"`, `"info"`, `"error"`, `"question"` or `"warning"`
   * `buttons` Array - Array of texts for buttons
   * `title` String - Title of the message box, some platforms will not show it
   * `message` String - Content of the message box