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 15void ProcessSingletonDialog::ShowAndRun(const std::string& message) { 16 ProcessSingletonDialog dialog(message); 17} 18 19ProcessSingletonDialog::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 39void ProcessSingletonDialog::OnResponse(GtkWidget* dialog, int response_id) { 40 gtk_widget_destroy(dialog_); 41 MessageLoop::current()->Quit(); 42} 43