diff options
author | mattm@chromium.org <mattm@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-08-19 04:48:24 +0000 |
---|---|---|
committer | mattm@chromium.org <mattm@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-08-19 04:48:24 +0000 |
commit | 65705eaa06155250c255ecdb766ebfeb081025f7 (patch) | |
tree | c49d0fc18479349f09643423c5b2f5862a0a33c6 /chrome/browser/gtk/options/languages_page_gtk.h | |
parent | 1a6b30a619cba771cb9c4ed4da9c3778634567ad (diff) | |
download | chromium_src-65705eaa06155250c255ecdb766ebfeb081025f7.zip chromium_src-65705eaa06155250c255ecdb766ebfeb081025f7.tar.gz chromium_src-65705eaa06155250c255ecdb766ebfeb081025f7.tar.bz2 |
Gtk languages options page part 1: accept-languages configuration.
Move accept_language_list to l10n_util, use it for LanguagesPageGtk.
BUG=13524
TEST=You can view, reorder, remove and add accept-languages.
Review URL: http://codereview.chromium.org/174043
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@23695 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/gtk/options/languages_page_gtk.h')
-rw-r--r-- | chrome/browser/gtk/options/languages_page_gtk.h | 115 |
1 files changed, 115 insertions, 0 deletions
diff --git a/chrome/browser/gtk/options/languages_page_gtk.h b/chrome/browser/gtk/options/languages_page_gtk.h new file mode 100644 index 0000000..a81161a --- /dev/null +++ b/chrome/browser/gtk/options/languages_page_gtk.h @@ -0,0 +1,115 @@ +// Copyright (c) 2009 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. + +#ifndef CHROME_BROWSER_GTK_OPTIONS_LANGUAGES_PAGE_GTK_H_ +#define CHROME_BROWSER_GTK_OPTIONS_LANGUAGES_PAGE_GTK_H_ + +#include <gtk/gtk.h> + +#include "base/scoped_ptr.h" +#include "chrome/browser/options_page_base.h" +#include "chrome/common/gtk_tree.h" +#include "chrome/common/pref_member.h" +#include "testing/gtest/include/gtest/gtest_prod.h" + +class LanguageOrderTableModel; + +class LanguagesPageGtk + : public OptionsPageBase, + public gtk_tree::ModelAdapter::Delegate { + public: + explicit LanguagesPageGtk(Profile* profile); + virtual ~LanguagesPageGtk(); + + GtkWidget* get_page_widget() const { + return page_; + } + + // gtk_tree::ModelAdapter::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::wstring* pref_name); + + // Callbacks for accept languages widgets. + static void OnSelectionChanged(GtkTreeSelection *selection, + LanguagesPageGtk* languages_page); + static void OnAddButtonClicked(GtkButton* button, + LanguagesPageGtk* languages_page); + static void OnRemoveButtonClicked(GtkButton* button, + LanguagesPageGtk* languages_page); + static void OnMoveUpButtonClicked(GtkButton* button, + LanguagesPageGtk* languages_page); + static void OnMoveDownButtonClicked(GtkButton* button, + LanguagesPageGtk* languages_page); + + // 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::ModelAdapter> language_order_table_adapter_; + + // Accept languages pref. + StringPrefMember accept_languages_; + + // The spellchecker "dictionary language" pref. + StringPrefMember dictionary_language_; + + // 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(LanguagesPageGtkTest, RemoveAcceptLang); + FRIEND_TEST(LanguagesPageGtkTest, RemoveMultipleAcceptLang); + FRIEND_TEST(LanguagesPageGtkTest, MoveAcceptLang); + FRIEND_TEST(LanguagesPageGtkTest, AddAcceptLang); + + DISALLOW_COPY_AND_ASSIGN(LanguagesPageGtk); +}; + +#endif // CHROME_BROWSER_GTK_OPTIONS_LANGUAGES_PAGE_GTK_H_ |