Index: chrome/browser/ui/gtk/options/languages_page_gtk.h |
diff --git a/chrome/browser/ui/gtk/options/languages_page_gtk.h b/chrome/browser/ui/gtk/options/languages_page_gtk.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..bfa06f3762e767309d103b76a325cc34bd3e4d8f |
--- /dev/null |
+++ b/chrome/browser/ui/gtk/options/languages_page_gtk.h |
@@ -0,0 +1,132 @@ |
+// Copyright (c) 2010 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+// The languages page of the Languages & languages options dialog, which |
+// contains accept-languages and spellchecker language options. |
+// |
+// Note that we intentionally do not implement the application locale setting, |
+// as it does not make sense on Linux, where locale is set through the LANG and |
+// LC_* environment variables. |
+ |
+#ifndef CHROME_BROWSER_UI_GTK_OPTIONS_LANGUAGES_PAGE_GTK_H_ |
+#define CHROME_BROWSER_UI_GTK_OPTIONS_LANGUAGES_PAGE_GTK_H_ |
+#pragma once |
+ |
+#include <gtk/gtk.h> |
+ |
+#include <string> |
+ |
+#include "app/gtk_signal.h" |
+#include "base/gtest_prod_util.h" |
+#include "base/scoped_ptr.h" |
+#include "chrome/browser/gtk/gtk_tree.h" |
+#include "chrome/browser/prefs/pref_member.h" |
+#include "chrome/browser/ui/options/options_page_base.h" |
+ |
+class LanguageComboboxModel; |
+class LanguageOrderTableModel; |
+ |
+class LanguagesPageGtk |
+ : public OptionsPageBase, |
+ public gtk_tree::TableAdapter::Delegate { |
+ public: |
+ explicit LanguagesPageGtk(Profile* profile); |
+ virtual ~LanguagesPageGtk(); |
+ |
+ GtkWidget* get_page_widget() const { return page_; } |
+ |
+ // gtk_tree::TableAdapter::Delegate implementation. |
+ virtual void OnAnyModelUpdate(); |
+ virtual void SetColumnValues(int row, GtkTreeIter* iter); |
+ |
+ // Callback from AddLanguageDialog. |
+ void OnAddLanguage(const std::string& new_language); |
+ |
+ private: |
+ // Column ids for |language_order_store_|. |
+ enum { |
+ COL_LANG, |
+ COL_COUNT, |
+ }; |
+ |
+ void Init(); |
+ |
+ // Enable buttons based on selection state. |
+ void EnableControls(); |
+ |
+ // Get the row number of the first selected row or -1 if no row is selected. |
+ int FirstSelectedRowNum(); |
+ |
+ // Overridden from OptionsPageBase. |
+ virtual void NotifyPrefChanged(const std::string* pref_name); |
+ |
+ // Callbacks for accept languages widgets. |
+ CHROMEG_CALLBACK_0(LanguagesPageGtk, void, OnSelectionChanged, |
+ GtkTreeSelection*); |
+ CHROMEGTK_CALLBACK_0(LanguagesPageGtk, void, OnAddButtonClicked); |
+ CHROMEGTK_CALLBACK_0(LanguagesPageGtk, void, OnRemoveButtonClicked); |
+ CHROMEGTK_CALLBACK_0(LanguagesPageGtk, void, OnMoveUpButtonClicked); |
+ CHROMEGTK_CALLBACK_0(LanguagesPageGtk, void, OnMoveDownButtonClicked); |
+ |
+ // Callbacks for spellchecker option widgets. |
+ CHROMEGTK_CALLBACK_0(LanguagesPageGtk, void, OnEnableSpellCheckingToggled); |
+ CHROMEGTK_CALLBACK_0(LanguagesPageGtk, void, |
+ OnEnableAutoSpellCheckingToggled); |
+ CHROMEGTK_CALLBACK_0(LanguagesPageGtk, void, OnDictionaryLanguageChanged); |
+ |
+ // The accept languages widgets. |
+ GtkListStore* language_order_store_; |
+ GtkWidget* language_order_tree_; |
+ GtkTreeSelection* language_order_selection_; |
+ GtkWidget* move_up_button_; |
+ GtkWidget* move_down_button_; |
+ GtkWidget* add_button_; |
+ GtkWidget* remove_button_; |
+ |
+ // The spell checking widgets. |
+ GtkWidget* dictionary_language_combobox_; |
+ GtkWidget* enable_autospellcorrect_checkbox_; |
+ GtkWidget* enable_spellchecking_checkbox_; |
+ |
+ // The widget containing the options for this page. |
+ GtkWidget* page_; |
+ |
+ // The model for |language_order_store_|. |
+ scoped_ptr<LanguageOrderTableModel> language_order_table_model_; |
+ scoped_ptr<gtk_tree::TableAdapter> language_order_table_adapter_; |
+ |
+ // Accept languages pref. |
+ StringPrefMember accept_languages_; |
+ |
+ // The spellchecker "dictionary language" pref and model. |
+ StringPrefMember dictionary_language_; |
+ scoped_ptr<LanguageComboboxModel> dictionary_language_model_; |
+ |
+ // If a language was auto-added to accept_languages_ due to being selected as |
+ // the dictionary language, it is saved in this string, so that it can be |
+ // removed if the dictionary language is changed again. |
+ std::string spellcheck_language_added_; |
+ |
+ // SpellChecker enable pref. |
+ BooleanPrefMember enable_spellcheck_; |
+ |
+ // Auto spell correction pref. |
+ BooleanPrefMember enable_autospellcorrect_; |
+ |
+ // Flag to ignore gtk callbacks while we are loading prefs, to avoid |
+ // then turning around and saving them again. |
+ bool initializing_; |
+ |
+ friend class LanguagesPageGtkTest; |
+ FRIEND_TEST_ALL_PREFIXES(LanguagesPageGtkTest, RemoveAcceptLang); |
+ FRIEND_TEST_ALL_PREFIXES(LanguagesPageGtkTest, RemoveMultipleAcceptLang); |
+ FRIEND_TEST_ALL_PREFIXES(LanguagesPageGtkTest, MoveAcceptLang); |
+ FRIEND_TEST_ALL_PREFIXES(LanguagesPageGtkTest, AddAcceptLang); |
+ FRIEND_TEST_ALL_PREFIXES(LanguagesPageGtkTest, EnableSpellChecking); |
+ FRIEND_TEST_ALL_PREFIXES(LanguagesPageGtkTest, DictionaryLanguage); |
+ |
+ DISALLOW_COPY_AND_ASSIGN(LanguagesPageGtk); |
+}; |
+ |
+#endif // CHROME_BROWSER_UI_GTK_OPTIONS_LANGUAGES_PAGE_GTK_H_ |