summaryrefslogtreecommitdiffstats
path: root/chrome/browser/gtk/options/languages_page_gtk.h
diff options
context:
space:
mode:
authormattm@chromium.org <mattm@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-08-19 04:48:24 +0000
committermattm@chromium.org <mattm@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-08-19 04:48:24 +0000
commit65705eaa06155250c255ecdb766ebfeb081025f7 (patch)
treec49d0fc18479349f09643423c5b2f5862a0a33c6 /chrome/browser/gtk/options/languages_page_gtk.h
parent1a6b30a619cba771cb9c4ed4da9c3778634567ad (diff)
downloadchromium_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.h115
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_