Home | History | Annotate | Download | only in gtk
      1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #include "chrome/browser/ui/gtk/process_singleton_dialog.h"
      6 
      7 #include <gtk/gtk.h>
      8 
      9 #include "base/message_loop.h"
     10 #include "chrome/browser/ui/gtk/gtk_util.h"
     11 #include "grit/chromium_strings.h"
     12 #include "ui/base/l10n/l10n_util.h"
     13 
     14 // static
     15 void ProcessSingletonDialog::ShowAndRun(const std::string& message) {
     16   ProcessSingletonDialog dialog(message);
     17 }
     18 
     19 ProcessSingletonDialog::ProcessSingletonDialog(const std::string& message) {
     20   dialog_ = gtk_message_dialog_new(
     21       NULL,
     22       static_cast<GtkDialogFlags>(0),
     23       GTK_MESSAGE_ERROR,
     24       GTK_BUTTONS_NONE,
     25       "%s",
     26       message.c_str());
     27   gtk_util::ApplyMessageDialogQuirks(dialog_);
     28   gtk_window_set_title(GTK_WINDOW(dialog_),
     29                        l10n_util::GetStringUTF8(IDS_PRODUCT_NAME).c_str());
     30   gtk_dialog_add_button(GTK_DIALOG(dialog_), GTK_STOCK_QUIT,
     31                         GTK_RESPONSE_REJECT);
     32 
     33   g_signal_connect(dialog_, "response", G_CALLBACK(OnResponseThunk), this);
     34 
     35   gtk_widget_show_all(dialog_);
     36   MessageLoop::current()->Run();
     37 }
     38 
     39 void ProcessSingletonDialog::OnResponse(GtkWidget* dialog, int response_id) {
     40   gtk_widget_destroy(dialog_);
     41   MessageLoop::current()->Quit();
     42 }
     43