15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2011 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/gtk/infobars/translate_message_infobar_gtk.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/utf_string_conversions.h" 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/translate/translate_infobar_delegate.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/gtk/gtk_util.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/base/gtk/gtk_hig_constants.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/base/gtk/gtk_signal_registrar.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TranslateMessageInfoBar::TranslateMessageInfoBar( 14a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) scoped_ptr<TranslateInfoBarDelegate> delegate) 15a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) : TranslateInfoBarBase(delegate.Pass()) { 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TranslateMessageInfoBar::~TranslateMessageInfoBar() { 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 21a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)void TranslateMessageInfoBar::PlatformSpecificSetOwner() { 22a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) TranslateInfoBarBase::PlatformSpecificSetOwner(); 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 247dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch GtkWidget* new_hbox = gtk_hbox_new(FALSE, ui::kControlSpacing); 257dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch gtk_util::CenterWidgetInHBox(hbox(), new_hbox, false, 0); 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string text = UTF16ToUTF8(GetDelegate()->GetMessageInfoBarText()); 287dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch gtk_box_pack_start(GTK_BOX(new_hbox), CreateLabel(text.c_str()), FALSE, FALSE, 297dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 0); 30a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) base::string16 button_text = GetDelegate()->GetMessageInfoBarButtonText(); 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!button_text.empty()) { 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GtkWidget* button = 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gtk_button_new_with_label(UTF16ToUTF8(button_text).c_str()); 347dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch signals()->Connect(button, "clicked", G_CALLBACK(&OnButtonPressedThunk), 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this); 367dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch gtk_box_pack_start(GTK_BOX(new_hbox), button, FALSE, FALSE, 0); 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void TranslateMessageInfoBar::OnButtonPressed(GtkWidget* sender) { 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetDelegate()->MessageInfoBarButtonPressed(); 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 43