static void on_document_saved (GeditDocument *doc, GeditSpellPlugin *plugin) { GeditAutomaticSpellChecker *autospell; GeditSpellChecker *spell; const gchar *key; /* Make sure to save the metadata here too */ autospell = gedit_automatic_spell_checker_get_from_document (doc); spell = GEDIT_SPELL_CHECKER (g_object_get_qdata (G_OBJECT (doc), spell_checker_id)); if (spell != NULL) { key = gedit_spell_checker_language_to_key (gedit_spell_checker_get_language (spell)); } else { key = NULL; } gedit_document_set_metadata (doc, GEDIT_METADATA_ATTRIBUTE_SPELL_ENABLED, autospell != NULL ? "1" : NULL, GEDIT_METADATA_ATTRIBUTE_SPELL_LANGUAGE, key, NULL); }
static GeditSpellChecker * get_spell_checker_from_document (GeditDocument *doc) { GeditSpellChecker *spell; gpointer data; gedit_debug (DEBUG_PLUGINS); g_return_val_if_fail (doc != NULL, NULL); data = g_object_get_qdata (G_OBJECT (doc), spell_checker_id); if (data == NULL) { const GeditSpellCheckerLanguage *lang = NULL; gchar *value = NULL; spell = gedit_spell_checker_new (); value = gedit_document_get_metadata (doc, GEDIT_METADATA_ATTRIBUTE_SPELL_LANGUAGE); if (value != NULL) { lang = gedit_spell_checker_language_from_key (value); g_free (value); } if (lang != NULL) { gedit_spell_checker_set_language (spell, lang); } g_object_set_qdata_full (G_OBJECT (doc), spell_checker_id, spell, (GDestroyNotify) g_object_unref); g_signal_connect (spell, "set_language", G_CALLBACK (set_spell_language_cb), doc); } else { g_return_val_if_fail (GEDIT_IS_SPELL_CHECKER (data), NULL); spell = GEDIT_SPELL_CHECKER (data); } return spell; }
static void on_document_loaded (GeditDocument *doc, GeditSpellPlugin *plugin) { GeditSpellChecker *spell; GeditView *view; spell = GEDIT_SPELL_CHECKER (g_object_get_qdata (G_OBJECT (doc), spell_checker_id)); if (spell != NULL) { set_language_from_metadata (spell, doc); } view = GEDIT_VIEW (g_object_get_data (G_OBJECT (doc), GEDIT_AUTOMATIC_SPELL_VIEW)); set_auto_spell_from_metadata (plugin, view); }
static GeditSpellChecker * get_spell_checker_from_document (GeditDocument *doc) { GeditSpellChecker *spell; gpointer data; gedit_debug (DEBUG_PLUGINS); g_return_val_if_fail (doc != NULL, NULL); data = g_object_get_qdata (G_OBJECT (doc), spell_checker_id); if (data == NULL) { spell = gedit_spell_checker_new (); set_language_from_metadata (spell, doc); g_object_set_qdata_full (G_OBJECT (doc), spell_checker_id, spell, (GDestroyNotify) g_object_unref); g_signal_connect (spell, "set_language", G_CALLBACK (set_spell_language_cb), doc); } else { g_return_val_if_fail (GEDIT_IS_SPELL_CHECKER (data), NULL); spell = GEDIT_SPELL_CHECKER (data); } return spell; }