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 |