| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/gtk/translate/before_translate_infobar_gtk.h" | 5 #include "chrome/browser/gtk/translate/before_translate_infobar_gtk.h" |
| 6 | 6 |
| 7 #include "app/l10n_util.h" | 7 #include "app/l10n_util.h" |
| 8 #include "base/utf_string_conversions.h" | 8 #include "base/utf_string_conversions.h" |
| 9 #include "chrome/browser/gtk/gtk_util.h" | 9 #include "chrome/browser/gtk/gtk_util.h" |
| 10 #include "chrome/browser/translate/translate_infobar_delegate.h" | 10 #include "chrome/browser/translate/translate_infobar_delegate.h" |
| (...skipping 13 matching lines...) Expand all Loading... |
| 24 GtkWidget* hbox = gtk_hbox_new(FALSE, gtk_util::kControlSpacing); | 24 GtkWidget* hbox = gtk_hbox_new(FALSE, gtk_util::kControlSpacing); |
| 25 gtk_util::CenterWidgetInHBox(hbox_, hbox, false, 0); | 25 gtk_util::CenterWidgetInHBox(hbox_, hbox, false, 0); |
| 26 size_t offset = 0; | 26 size_t offset = 0; |
| 27 string16 text = | 27 string16 text = |
| 28 l10n_util::GetStringFUTF16(IDS_TRANSLATE_INFOBAR_BEFORE_MESSAGE, | 28 l10n_util::GetStringFUTF16(IDS_TRANSLATE_INFOBAR_BEFORE_MESSAGE, |
| 29 string16(), &offset); | 29 string16(), &offset); |
| 30 | 30 |
| 31 gtk_box_pack_start(GTK_BOX(hbox), | 31 gtk_box_pack_start(GTK_BOX(hbox), |
| 32 CreateLabel(UTF16ToUTF8(text.substr(0, offset))), | 32 CreateLabel(UTF16ToUTF8(text.substr(0, offset))), |
| 33 FALSE, FALSE, 0); | 33 FALSE, FALSE, 0); |
| 34 TranslateInfoBarDelegate* delegate = GetDelegate(); |
| 34 GtkWidget* combobox = | 35 GtkWidget* combobox = |
| 35 CreateLanguageCombobox(GetDelegate()->original_language_index(), | 36 CreateLanguageCombobox(delegate->original_language_index(), |
| 36 GetDelegate()->target_language_index()); | 37 delegate->target_language_index()); |
| 37 g_signal_connect(combobox, "changed", | 38 g_signal_connect(combobox, "changed", |
| 38 G_CALLBACK(&OnLanguageModifiedThunk), this); | 39 G_CALLBACK(&OnLanguageModifiedThunk), this); |
| 39 gtk_box_pack_start(GTK_BOX(hbox), combobox, FALSE, FALSE, 0); | 40 gtk_box_pack_start(GTK_BOX(hbox), combobox, FALSE, FALSE, 0); |
| 40 gtk_box_pack_start(GTK_BOX(hbox), | 41 gtk_box_pack_start(GTK_BOX(hbox), |
| 41 CreateLabel(UTF16ToUTF8(text.substr(offset))), | 42 CreateLabel(UTF16ToUTF8(text.substr(offset))), |
| 42 FALSE, FALSE, 0); | 43 FALSE, FALSE, 0); |
| 43 | 44 |
| 44 GtkWidget* button = gtk_button_new_with_label( | 45 GtkWidget* button = gtk_button_new_with_label( |
| 45 l10n_util::GetStringUTF8(IDS_TRANSLATE_INFOBAR_ACCEPT).c_str()); | 46 l10n_util::GetStringUTF8(IDS_TRANSLATE_INFOBAR_ACCEPT).c_str()); |
| 46 g_signal_connect(button, "clicked",G_CALLBACK(&OnAcceptPressedThunk), this); | 47 g_signal_connect(button, "clicked",G_CALLBACK(&OnAcceptPressedThunk), this); |
| 47 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); | 48 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); |
| 48 | 49 |
| 49 button = gtk_button_new_with_label( | 50 button = gtk_button_new_with_label( |
| 50 l10n_util::GetStringUTF8(IDS_TRANSLATE_INFOBAR_DENY).c_str()); | 51 l10n_util::GetStringUTF8(IDS_TRANSLATE_INFOBAR_DENY).c_str()); |
| 51 g_signal_connect(button, "clicked",G_CALLBACK(&OnDenyPressedThunk), this); | 52 g_signal_connect(button, "clicked",G_CALLBACK(&OnDenyPressedThunk), this); |
| 52 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); | 53 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); |
| 53 | 54 |
| 54 TranslateInfoBarDelegate* delegate = GetDelegate(); | |
| 55 if (delegate->ShouldShowNeverTranslateButton()) { | 55 if (delegate->ShouldShowNeverTranslateButton()) { |
| 56 std::string label = | 56 std::string label = |
| 57 l10n_util::GetStringFUTF8(IDS_TRANSLATE_INFOBAR_NEVER_TRANSLATE, | 57 l10n_util::GetStringFUTF8(IDS_TRANSLATE_INFOBAR_NEVER_TRANSLATE, |
| 58 delegate->GetLanguageDisplayableNameAt( | 58 delegate->GetLanguageDisplayableNameAt( |
| 59 delegate->original_language_index())); | 59 delegate->original_language_index())); |
| 60 button = gtk_button_new_with_label(label.c_str()); | 60 button = gtk_button_new_with_label(label.c_str()); |
| 61 g_signal_connect(button, "clicked", | 61 g_signal_connect(button, "clicked", |
| 62 G_CALLBACK(&OnNeverTranslatePressedThunk), this); | 62 G_CALLBACK(&OnNeverTranslatePressedThunk), this); |
| 63 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); | 63 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); |
| 64 } | 64 } |
| 65 | 65 |
| 66 if (delegate->ShouldShowAlwaysTranslateButton()) { | 66 if (delegate->ShouldShowAlwaysTranslateButton()) { |
| 67 std::string label = | 67 std::string label = |
| 68 l10n_util::GetStringFUTF8(IDS_TRANSLATE_INFOBAR_ALWAYS_TRANSLATE, | 68 l10n_util::GetStringFUTF8(IDS_TRANSLATE_INFOBAR_ALWAYS_TRANSLATE, |
| 69 delegate->GetLanguageDisplayableNameAt( | 69 delegate->GetLanguageDisplayableNameAt( |
| 70 delegate->original_language_index())); | 70 delegate->original_language_index())); |
| 71 button = gtk_button_new_with_label(label.c_str()); | 71 button = gtk_button_new_with_label(label.c_str()); |
| 72 g_signal_connect(button, "clicked", | 72 g_signal_connect(button, "clicked", |
| 73 G_CALLBACK(&OnAlwaysTranslatePressedThunk), this); | 73 G_CALLBACK(&OnAlwaysTranslatePressedThunk), this); |
| 74 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); | 74 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); |
| 75 } | 75 } |
| 76 } | 76 } |
| 77 | 77 |
| 78 void BeforeTranslateInfoBar::OnLanguageModified(GtkWidget* sender) { | 78 void BeforeTranslateInfoBar::OnLanguageModified(GtkWidget* sender) { |
| 79 if (!delegate()) |
| 80 return; |
| 81 |
| 79 int index = GetLanguageComboboxActiveId(GTK_COMBO_BOX(sender)); | 82 int index = GetLanguageComboboxActiveId(GTK_COMBO_BOX(sender)); |
| 80 if (index == GetDelegate()->original_language_index()) | 83 if (index == GetDelegate()->original_language_index()) |
| 81 return; | 84 return; |
| 82 | 85 |
| 83 GetDelegate()->SetOriginalLanguage(index); | 86 GetDelegate()->SetOriginalLanguage(index); |
| 84 } | 87 } |
| 85 | 88 |
| 86 void BeforeTranslateInfoBar::OnAcceptPressed(GtkWidget* sender) { | 89 void BeforeTranslateInfoBar::OnAcceptPressed(GtkWidget* sender) { |
| 87 GetDelegate()->Translate(); | 90 if (delegate()) |
| 91 GetDelegate()->Translate(); |
| 88 } | 92 } |
| 89 | 93 |
| 90 void BeforeTranslateInfoBar::OnDenyPressed(GtkWidget* sender) { | 94 void BeforeTranslateInfoBar::OnDenyPressed(GtkWidget* sender) { |
| 91 GetDelegate()->TranslationDeclined(); | 95 if (delegate()) |
| 96 GetDelegate()->TranslationDeclined(); |
| 92 RemoveInfoBar(); | 97 RemoveInfoBar(); |
| 93 } | 98 } |
| 94 | 99 |
| 95 void BeforeTranslateInfoBar::OnNeverTranslatePressed(GtkWidget* sender) { | 100 void BeforeTranslateInfoBar::OnNeverTranslatePressed(GtkWidget* sender) { |
| 96 GetDelegate()->NeverTranslatePageLanguage(); | 101 if (delegate()) |
| 102 GetDelegate()->NeverTranslatePageLanguage(); |
| 97 } | 103 } |
| 98 | 104 |
| 99 void BeforeTranslateInfoBar::OnAlwaysTranslatePressed(GtkWidget* sender) { | 105 void BeforeTranslateInfoBar::OnAlwaysTranslatePressed(GtkWidget* sender) { |
| 100 GetDelegate()->AlwaysTranslatePageLanguage(); | 106 if (delegate()) |
| 107 GetDelegate()->AlwaysTranslatePageLanguage(); |
| 101 } | 108 } |
| OLD | NEW |