[evolution/webkit-composer: 125/130] Add e_editor_spell_check_dialog_update_dictionaries().
- From: Matthew Barnes <mbarnes src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution/webkit-composer: 125/130] Add e_editor_spell_check_dialog_update_dictionaries().
- Date: Sat, 19 Jan 2013 14:37:36 +0000 (UTC)
commit d4d2d10ac1e313ccec4eb24aaa12c0a6fb17da34
Author: Matthew Barnes <mbarnes redhat com>
Date: Fri Jan 18 07:45:14 2013 -0500
Add e_editor_spell_check_dialog_update_dictionaries().
Replaces e_editor_spell_check_dialog_get/set_dictionaries().
The dialog has access to the active spell check languages through
ESpellChecker, so there's no need for it to keep its own list.
doc/reference/libeutil/libeutil-sections.txt | 3 +-
e-util/e-editor-actions.c | 4 --
e-util/e-editor-spell-check-dialog.c | 70 +++++++++++++++++---------
e-util/e-editor-spell-check-dialog.h | 12 ++---
e-util/e-editor.c | 9 ++--
5 files changed, 56 insertions(+), 42 deletions(-)
---
diff --git a/doc/reference/libeutil/libeutil-sections.txt b/doc/reference/libeutil/libeutil-sections.txt
index bc648c7..d308a8d 100644
--- a/doc/reference/libeutil/libeutil-sections.txt
+++ b/doc/reference/libeutil/libeutil-sections.txt
@@ -1741,8 +1741,7 @@ EEditorSelectionPrivate
<TITLE>EEditorSpellCheckDialog</TITLE>
EEditorSpellCheckDialog
e_editor_spell_check_dialog_new
-e_editor_spell_check_dialog_get_dictionaries
-e_editor_spell_check_dialog_set_dictionaries
+e_editor_spell_check_dialog_update_dictionaries
<SUBSECTION Standard>
E_EDITOR_SPELL_CHECK_DIALOG
E_IS_EDITOR_SPELL_CHECK_DIALOG
diff --git a/e-util/e-editor-actions.c b/e-util/e-editor-actions.c
index ea36a05..d751e1d 100644
--- a/e-util/e-editor-actions.c
+++ b/e-util/e-editor-actions.c
@@ -863,10 +863,6 @@ action_spell_check_cb (GtkAction *action,
if (editor->priv->spell_check_dialog == NULL) {
editor->priv->spell_check_dialog =
e_editor_spell_check_dialog_new (editor);
-
- e_editor_spell_check_dialog_set_dictionaries (
- E_EDITOR_SPELL_CHECK_DIALOG (editor->priv->spell_check_dialog),
- editor->priv->active_dictionaries);
}
gtk_window_present (GTK_WINDOW (editor->priv->spell_check_dialog));
diff --git a/e-util/e-editor-spell-check-dialog.c b/e-util/e-editor-spell-check-dialog.c
index 64b5cd1..75b0122 100644
--- a/e-util/e-editor-spell-check-dialog.c
+++ b/e-util/e-editor-spell-check-dialog.c
@@ -46,7 +46,6 @@ struct _EEditorSpellCheckDialogPrivate {
GtkWidget *suggestion_label;
GtkWidget *tree_view;
- GList *dictionaries;
WebKitDOMDOMSelection *selection;
gchar *word;
@@ -448,6 +447,19 @@ editor_spell_check_dialog_finalize (GObject *object)
}
static void
+editor_spell_check_dialog_constructed (GObject *object)
+{
+ EEditorSpellCheckDialog *dialog;
+
+ /* Chain up to parent's constructed() method. */
+ G_OBJECT_CLASS (e_editor_spell_check_dialog_parent_class)->
+ constructed (object);
+
+ dialog = E_EDITOR_SPELL_CHECK_DIALOG (object);
+ e_editor_spell_check_dialog_update_dictionaries (dialog);
+}
+
+static void
e_editor_spell_check_dialog_class_init (EEditorSpellCheckDialogClass *class)
{
GtkWidgetClass *widget_class;
@@ -458,6 +470,7 @@ e_editor_spell_check_dialog_class_init (EEditorSpellCheckDialogClass *class)
object_class = G_OBJECT_CLASS (class);
object_class->finalize = editor_spell_check_dialog_finalize;
+ object_class->constructed = editor_spell_check_dialog_constructed;
widget_class = GTK_WIDGET_CLASS (class);
widget_class->show = editor_spell_check_dialog_show;
@@ -623,32 +636,40 @@ e_editor_spell_check_dialog_new (EEditor *editor)
NULL);
}
-GList *
-e_editor_spell_check_dialog_get_dictionaries (EEditorSpellCheckDialog *dialog)
-{
- g_return_val_if_fail (E_IS_EDITOR_SPELL_CHECK_DIALOG (dialog), NULL);
-
- return g_list_copy (dialog->priv->dictionaries);
-}
-
void
-e_editor_spell_check_dialog_set_dictionaries (EEditorSpellCheckDialog *dialog,
- GList *dictionaries)
+e_editor_spell_check_dialog_update_dictionaries (EEditorSpellCheckDialog *dialog)
{
+ EEditor *editor;
+ EEditorWidget *editor_widget;
+ ESpellChecker *spell_checker;
GtkComboBox *combo_box;
GtkListStore *store;
- GList *list;
+ GQueue queue = G_QUEUE_INIT;
+ gchar **languages;
+ guint n_languages = 0;
+ guint ii;
g_return_if_fail (E_IS_EDITOR_SPELL_CHECK_DIALOG (dialog));
- /* Free the old list of spell checkers. */
- g_list_free (dialog->priv->dictionaries);
-
- /* Copy and sort the new list of spell checkers. */
- list = g_list_sort (
- g_list_copy (dictionaries),
- (GCompareFunc) e_spell_dictionary_compare);
- dialog->priv->dictionaries = list;
+ editor = e_editor_dialog_get_editor (E_EDITOR_DIALOG (dialog));
+ editor_widget = e_editor_get_editor_widget (editor);
+ spell_checker = e_editor_widget_get_spell_checker (editor_widget);
+
+ languages = e_spell_checker_list_active_languages (
+ spell_checker, &n_languages);
+ for (ii = 0; ii < n_languages; ii++) {
+ ESpellDictionary *dictionary;
+
+ dictionary = e_spell_checker_ref_dictionary (
+ spell_checker, languages[ii]);
+ if (dictionary != NULL)
+ g_queue_push_tail (&queue, dictionary);
+ else
+ g_warning (
+ "%s: No '%s' dictionary found",
+ G_STRFUNC, languages[ii]);
+ }
+ g_strfreev (languages);
/* Populate a list store for the combo box. */
store = gtk_list_store_new (
@@ -656,12 +677,12 @@ e_editor_spell_check_dialog_set_dictionaries (EEditorSpellCheckDialog *dialog,
G_TYPE_STRING, /* COLUMN_NAME */
E_TYPE_SPELL_DICTIONARY); /* COLUMN_DICTIONARY */
- while (list != NULL) {
- ESpellDictionary *dictionary = list->data;
+ while (!g_queue_is_empty (&queue)) {
+ ESpellDictionary *dictionary;
GtkTreeIter iter;
const gchar *name;
- dictionary = E_SPELL_DICTIONARY (list->data);
+ dictionary = g_queue_pop_head (&queue);
name = e_spell_dictionary_get_name (dictionary);
gtk_list_store_append (store, &iter);
@@ -671,7 +692,7 @@ e_editor_spell_check_dialog_set_dictionaries (EEditorSpellCheckDialog *dialog,
COLUMN_DICTIONARY, dictionary,
-1);
- list = g_list_next (list);
+ g_object_unref (dictionary);
}
/* FIXME Try to restore selection. */
@@ -681,3 +702,4 @@ e_editor_spell_check_dialog_set_dictionaries (EEditorSpellCheckDialog *dialog,
g_object_unref (store);
}
+
diff --git a/e-util/e-editor-spell-check-dialog.h b/e-util/e-editor-spell-check-dialog.h
index 1df962e..c368ec6 100644
--- a/e-util/e-editor-spell-check-dialog.h
+++ b/e-util/e-editor-spell-check-dialog.h
@@ -62,13 +62,11 @@ struct _EEditorSpellCheckDialogClass {
};
GType e_editor_spell_check_dialog_get_type
- (void) G_GNUC_CONST;
-GtkWidget * e_editor_spell_check_dialog_new (EEditor *editor);
-GList * e_editor_spell_check_dialog_get_dictionaries
- (EEditorSpellCheckDialog *dialog);
-void e_editor_spell_check_dialog_set_dictionaries
- (EEditorSpellCheckDialog *dialog,
- GList *dictionaries);
+ (void) G_GNUC_CONST;
+GtkWidget * e_editor_spell_check_dialog_new
+ (EEditor *editor);
+void e_editor_spell_check_dialog_update_dictionaries
+ (EEditorSpellCheckDialog *dialog);
G_END_DECLS
diff --git a/e-util/e-editor.c b/e-util/e-editor.c
index e06df9f..91567b2 100644
--- a/e-util/e-editor.c
+++ b/e-util/e-editor.c
@@ -455,11 +455,10 @@ editor_spell_languages_changed (EEditor *editor,
"spell-checking-languages", languages->str,
NULL);
- if (editor->priv->spell_check_dialog != NULL) {
- e_editor_spell_check_dialog_set_dictionaries (
- E_EDITOR_SPELL_CHECK_DIALOG (editor->priv->spell_check_dialog),
- dictionaries);
- }
+ if (editor->priv->spell_check_dialog != NULL)
+ e_editor_spell_check_dialog_update_dictionaries (
+ E_EDITOR_SPELL_CHECK_DIALOG (
+ editor->priv->spell_check_dialog));
g_string_free (languages, TRUE);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]