gtk: Initial implementation of message box.
authorCheng Zhao <zcbenz@gmail.com>
Wed, 12 Mar 2014 12:17:22 +0000 (20:17 +0800)
committerCheng Zhao <zcbenz@gmail.com>
Wed, 12 Mar 2014 12:17:22 +0000 (20:17 +0800)
browser/ui/message_box_gtk.cc

index f5fc72e..a7eed86 100644 (file)
@@ -4,7 +4,10 @@
 
 #include "browser/ui/message_box.h"
 
+#include <gtk/gtk.h>
+
 #include "base/callback.h"
+#include "browser/native_window.h"
 
 namespace atom {
 
@@ -24,6 +27,24 @@ void ShowMessageBox(NativeWindow* parent_window,
                     const std::string& message,
                     const std::string& detail,
                     const MessageBoxCallback& callback) {
+  GtkWindow* window = parent_window ? parent_window->GetNativeWindow() : NULL;
+  GtkWidget* dialog = gtk_dialog_new_with_buttons(
+      title.c_str(),
+      window,
+      static_cast<GtkDialogFlags>(GTK_DIALOG_MODAL | GTK_DIALOG_NO_SEPARATOR),
+      NULL);
+
+  for (size_t i = 0; i < buttons.size(); ++i)
+    gtk_dialog_add_button(GTK_DIALOG(dialog), buttons[i].c_str(), i);
+
+  GtkWidget* content_area = gtk_dialog_get_content_area(GTK_DIALOG(dialog));
+  GtkWidget* message_label = gtk_label_new(message.c_str());
+  gtk_box_pack_start(GTK_BOX(content_area), message_label, FALSE, FALSE, 0);
+  GtkWidget* detail_label = gtk_label_new(detail.c_str());
+  gtk_box_pack_start(GTK_BOX(content_area), detail_label, FALSE, FALSE, 0);
+
+  gtk_widget_show_all(dialog);
+
   callback.Run(0);
 }