[gtkhtml] Add signal "spell-languages-changed"



commit 113a55231cc35aff8d5a8501c3821ffdd43d2aba
Author: Milan Crha <mcrha redhat com>
Date:   Wed May 9 19:46:50 2012 +0200

    Add signal "spell-languages-changed"
    
    Emitted when user changes list of languages for spelling

 components/editor/gtkhtml-editor-actions.c |    2 +
 components/editor/gtkhtml-editor-private.h |    2 +
 components/editor/gtkhtml-editor.c         |   40 ++++++++++++++++++++++++++++
 3 files changed, 44 insertions(+), 0 deletions(-)
---
diff --git a/components/editor/gtkhtml-editor-actions.c b/components/editor/gtkhtml-editor-actions.c
index f01676a..b2f3b82 100644
--- a/components/editor/gtkhtml-editor-actions.c
+++ b/components/editor/gtkhtml-editor-actions.c
@@ -798,6 +798,8 @@ action_language_cb (GtkToggleAction *action,
 
 	html = gtkhtml_editor_get_html (editor);
 	html_engine_spell_check (html->engine);
+
+	gtkthtml_editor_emit_spell_languages_changed (editor);
 }
 
 static void
diff --git a/components/editor/gtkhtml-editor-private.h b/components/editor/gtkhtml-editor-private.h
index 62502ee..edf0999 100644
--- a/components/editor/gtkhtml-editor-private.h
+++ b/components/editor/gtkhtml-editor-private.h
@@ -210,6 +210,8 @@ void		gtkhtml_editor_spell_check	(GtkhtmlEditor *editor,
 gboolean	gtkhtml_editor_next_spell_error	(GtkhtmlEditor *editor);
 gboolean	gtkhtml_editor_prev_spell_error	(GtkhtmlEditor *editor);
 void		gtkhtml_editor_update_context	(GtkhtmlEditor *editor);
+void		gtkthtml_editor_emit_spell_languages_changed
+						(GtkhtmlEditor *editor);
 
 G_END_DECLS
 
diff --git a/components/editor/gtkhtml-editor.c b/components/editor/gtkhtml-editor.c
index 1611ce2..902baf9 100644
--- a/components/editor/gtkhtml-editor.c
+++ b/components/editor/gtkhtml-editor.c
@@ -42,6 +42,7 @@ enum {
 	LINK_CLICKED,
 	OBJECT_DELETED,
 	URI_REQUESTED,
+	SPELL_LANGUAGES_CHANGED,
 	LAST_SIGNAL
 };
 
@@ -938,6 +939,16 @@ editor_class_init (GtkhtmlEditorClass *class)
 		G_TYPE_NONE, 2,
 		G_TYPE_STRING,
 		G_TYPE_POINTER);
+
+	signals[SPELL_LANGUAGES_CHANGED] = g_signal_new (
+		"spell-languages-changed",
+		G_OBJECT_CLASS_TYPE (class),
+		G_SIGNAL_RUN_LAST,
+		0,
+		NULL, NULL,
+		g_cclosure_marshal_VOID__POINTER,
+		G_TYPE_NONE, 1,
+		G_TYPE_POINTER);
 }
 
 static void
@@ -1730,3 +1741,32 @@ gtkhtml_editor_drop_undo (GtkhtmlEditor *editor)
 
 	gtk_html_drop_undo (html);
 }
+
+void
+gtkthtml_editor_emit_spell_languages_changed (GtkhtmlEditor *editor)
+{
+	GList *languages, *iter;
+
+	g_return_if_fail (editor != NULL);
+
+	languages = NULL;
+	for (iter = editor->priv->active_spell_checkers; iter; iter = g_list_next (iter)) {
+		const GtkhtmlSpellLanguage *language;
+		GtkhtmlSpellChecker *checker = iter->data;
+
+		if (!checker)
+			continue;
+
+		language = gtkhtml_spell_checker_get_language (checker);
+		if (!language)
+			continue;
+
+		languages = g_list_prepend (languages, (gpointer) language);
+	}
+
+	languages = g_list_reverse (languages);
+
+	g_signal_emit (editor, signals[SPELL_LANGUAGES_CHANGED], 0, languages);
+
+	g_list_free (languages);
+}



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]