Bugzilla – Attachment 191939 Details for
Bug 354999
Installation boot menu items without help file
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Forgot Password
gnome-spell 1.0.7 patch
gnome-spell-enchant.diff (text/x-patch), 14.95 KB, created by
Kalman Kemenczy
on 2008-01-27 19:19:13 UTC
(
hide
)
Description:
gnome-spell 1.0.7 patch
Filename:
MIME Type:
Creator:
Kalman Kemenczy
Created:
2008-01-27 19:19:13 UTC
Size:
14.95 KB
patch
obsolete
>=== modified file 'configure.in' >--- configure.in 2008-01-27 17:04:54 +0000 >+++ configure.in 2008-01-27 17:09:44 +0000 >@@ -68,34 +68,6 @@ > AC_SUBST(API_VERSION) > > dnl >-dnl aspell >-dnl >- >-AC_ARG_WITH(aspell-prefix, [ --with-aspell-prefix=DIR >- specify under which prefix aspell is installed.], with_aspell_prefix="$withval", ) >- >-if test "x$with_aspell_prefix" != "x"; then >- saved_LDFLAGS=$LDFLAGS >- LDFLAGS="-L$with_aspell_prefix/lib "$LDFLAGS >- ASPELL_INC="-I$with_aspell_prefix/include" >- ASPELL_LIBS="-L$with_aspell_prefix/lib -laspell" >- ASPELL_DATA="$with_aspell_prefix/lib/aspell" >-else >- LDFLAGS="-L`aspell config prefix`/lib "$LDFLAGS >- ASPELL_INC="-I`aspell config prefix`/include" >- ASPELL_LIBS="-L`aspell config prefix`/lib -laspell" >- ASPELL_DICT="`aspell config dict-dir`" >-fi >-AC_CHECK_LIB(aspell,new_aspell_config,,AC_MSG_ERROR([gnome-spell cannot be built without aspell library]),) >-if test "x$with_aspell_prefix" != "x"; then >- LDFLAGS=$saved_LDFLAGS >-fi >- >-AC_SUBST(ASPELL_DICT) >-AC_SUBST(ASPELL_INC) >-AC_SUBST(ASPELL_LIBS) >- >-dnl > dnl flags > dnl > >@@ -104,7 +76,7 @@ > AC_SUBST(CPPFLAGS) > AC_SUBST(LDFLAGS) > >-GNOME_SPELL_MODULES="libgnomeui-2.0 >= 1.112.1 libbonoboui-2.0 >= 1.112.1 libglade-2.0 >= 1.99.9" >+GNOME_SPELL_MODULES="libgnomeui-2.0 >= 1.112.1 libbonoboui-2.0 >= 1.112.1 libglade-2.0 >= 1.99.9 enchant >= 1.2.5" > PKG_CHECK_MODULES(GNOME_SPELL, $GNOME_SPELL_MODULES) > AC_SUBST(GNOME_SPELL_CFLAGS) > AC_SUBST(GNOME_SPELL_LIBS) > >=== modified file 'gnome-spell/Makefile.am' >--- gnome-spell/Makefile.am 2008-01-27 17:04:54 +0000 >+++ gnome-spell/Makefile.am 2008-01-27 17:09:44 +0000 >@@ -7,13 +7,11 @@ > > INCLUDES = \ > -I$(srcdir) \ >- $(ASPELL_INC) \ > -DPREFIX=\""$(prefix)"\" \ > -DGNOMEDATADIR=\""$(datadir)"\" \ > -DGNOMELOCALEDIR=\""$(datadir)/locale"\" \ > -DGLADE_DATADIR=\"$(gladedir)\" \ > -DPLUGIN_DIR=\""$(PLUGIN_DIR)"\" \ >- -DASPELL_DICT=\""$(ASPELL_DICT)"\" \ > $(GNOME_SPELL_CFLAGS) \ > $(END) > >@@ -55,7 +53,6 @@ > libgnome_spell_component_la_LDFLAGS = -release $(API_VERSION) $(NO_UNDEFINED) > libgnome_spell_component_la_LIBADD = \ > libgnome-spell-idl.la \ >- $(ASPELL_LIBS) \ > $(GNOME_SPELL_LIBS) \ > $(END) > >@@ -69,7 +66,6 @@ > > test_gnome_spell_component_LDADD = \ > libgnome-spell-idl.la \ >- $(ASPELL_LIBS) \ > $(GNOME_SPELL_LIBS) \ > $(END) > > >=== modified file 'gnome-spell/dictionary.c' >--- gnome-spell/dictionary.c 2008-01-27 17:04:54 +0000 >+++ gnome-spell/dictionary.c 2008-01-27 17:09:44 +0000 >@@ -30,16 +30,21 @@ > #include <glib.h> > #include <libgnome/gnome-i18n.h> > #include <libgnome/gnome-config.h> >-#include <gconf/gconf-client.h> > #include <bonobo.h> > > #include "Spell.h" > #include "dictionary.h" > >+#include <enchant/enchant.h> >+ >+typedef struct { >+ EnchantBroker * config; >+ EnchantDict * speller; >+} SpellEngine; >+ > static BonoboObjectClass *dictionary_parent_class; > > #define DICT_DEBUG(x) >-#define GNOME_SPELL_GCONF_DIR "/GNOME/Spell" > > static void release_engines (GNOMESpellDictionary *dict); > >@@ -72,12 +77,24 @@ > { > GNOMESpellDictionary *dict = GNOME_SPELL_DICTIONARY (object); > >- dict->changed = TRUE; > dict->engines = NULL; > dict->languages = g_hash_table_new (g_str_hash, g_str_equal); > dict->engines_ht = g_hash_table_new (NULL, NULL); > } > >+static char ** >+dup_string_list (char ** str_list, size_t list_len) >+{ >+ char ** new_str_list; >+ size_t i; >+ >+ new_str_list = g_new0 (char *, list_len + 1); >+ for (i = 0; i < list_len; i++) >+ new_str_list [i] = g_strdup (str_list [i]); >+ >+ return new_str_list; >+} >+ > static void > dictionary_finalize (GObject *object) > { >@@ -93,15 +110,16 @@ > } > > static SpellEngine * >-new_engine (const gchar *language) >+new_engine (const gchar *language, CORBA_Environment *ev) > { > SpellEngine *se; > > se = g_new0 (SpellEngine, 1); >- se->config = new_aspell_config (); >- aspell_config_replace (se->config, "language-tag", language); >- aspell_config_replace (se->config, "encoding", "utf-8"); >- se->changed = TRUE; >+ se->config = enchant_broker_init (); >+ se->speller = enchant_broker_request_dict (se->config, language); >+ >+ if(se->speller == NULL) >+ raise_error (ev, enchant_broker_get_error (se->config)); > > return se; > } >@@ -129,9 +147,9 @@ > SpellEngine *se = dict->engines->data; > > if (se->speller) >- delete_aspell_speller (se->speller); >+ enchant_broker_free_dict (se->config, se->speller); > if (se->config) >- delete_aspell_config (se->config); >+ enchant_broker_free (se->config); > g_free (se); > dict->engines = g_slist_remove (dict->engines, se); > } >@@ -140,7 +158,6 @@ > g_hash_table_foreach_remove (dict->languages, remove_engine_ht, NULL); > > dict->engines = NULL; >- dict->changed = TRUE; > } > > static LangInfo known_languages [] = { >@@ -352,88 +369,31 @@ > }; > > static GSList * >-get_languages_real (gint *ln) >+get_languages (gint *ln) > { > GSList *langs; >- AspellCanHaveError *err; >- AspellConfig *config; >- AspellSpeller *speller; >- gint i; >- >- DICT_DEBUG (printf ("get_languages_real\n")); >- >+ EnchantBroker *broker; >+ gint i, nb_langs; >+ >+ DICT_DEBUG (printf ("get_languages\n")); >+ >+ /* todo: this could probably be better done by enchant_broker_list_dicts(), but let's keep >+ the initial code change to a minimum */ >+ >+ broker = enchant_broker_init (); > langs = NULL; >- *ln = 0; >+ nb_langs = 0; > for (i=0; i < G_N_ELEMENTS (known_languages); i++) { >- config = new_aspell_config (); >- aspell_config_replace (config, "language-tag", known_languages [i].abbreviation); >- err = new_aspell_speller (config); >- if (aspell_error_number (err) == 0) { >- speller = to_aspell_speller (err); >+ if (enchant_broker_dict_exists (broker, known_languages [i].abbreviation)) { > DICT_DEBUG (printf ("Language: %s\n", known_languages [i].name)); >- delete_aspell_speller (speller); > langs = g_slist_prepend (langs, GINT_TO_POINTER (i)); >- (*ln) ++; >- } >- } >- >- return langs; >-} >- >-static GSList * >-get_languages_load (GConfClient *gc, gint *ln) >-{ >- GString *str; >- GSList *langs = NULL; >- gint i, lang_num; >- >- /* printf ("get_languages_load\n"); */ >- >- str = g_string_new (NULL); >- *ln = gconf_client_get_int (gc, GNOME_SPELL_GCONF_DIR "/languages", NULL); >- for (i = 0; i < *ln; i++) { >- g_string_sprintf (str, GNOME_SPELL_GCONF_DIR "/language%d", i); >- lang_num = gconf_client_get_int (gc, str->str, NULL); >- langs = g_slist_prepend (langs, GINT_TO_POINTER (lang_num)); >- } >- >- return langs; >-} >- >-static GSList * >-get_languages (gint *ln) >-{ >- GSList *langs, *l; >- GConfClient *gc; >- time_t mtime; >- struct stat buf; >- gint i, kl; >- >- gc = gconf_client_get_default (); >- >- mtime = gconf_client_get_int (gc, GNOME_SPELL_GCONF_DIR "/mtime", NULL); >- kl = gconf_client_get_int (gc, GNOME_SPELL_GCONF_DIR "/known_languages", NULL); >- >- if (stat (ASPELL_DICT, &buf) || buf.st_mtime != mtime || kl != G_N_ELEMENTS(known_languages)) { >- GString *str; >- langs = get_languages_real (ln); >- >- str = g_string_new (NULL); >- gconf_client_set_int (gc, GNOME_SPELL_GCONF_DIR "/languages", *ln, NULL); >- for (l = langs, i = 0; i < *ln; i ++) { >- g_string_sprintf (str, GNOME_SPELL_GCONF_DIR "/language%d", *ln - i - 1); >- gconf_client_set_int (gc, str->str, GPOINTER_TO_INT (l->data), NULL); >- l = l->next; >- } >- gconf_client_set_int (gc, GNOME_SPELL_GCONF_DIR "/mtime", buf.st_mtime, NULL); >- gconf_client_set_int (gc, GNOME_SPELL_GCONF_DIR "/known_languages", G_N_ELEMENTS(known_languages), NULL); >- g_string_free (str, TRUE); >- gnome_config_sync (); >- } else >- langs = get_languages_load (gc, ln); >- >- gconf_client_suggest_sync (gc, NULL); >- g_object_unref (gc); >+ nb_langs++; >+ } >+ } >+ >+ *ln = nb_langs; >+ >+ enchant_broker_free (broker); > > return langs; > } >@@ -504,59 +464,19 @@ > SpellEngine *se; > > one_language = g_strndup (begin, len); >- se = new_engine (one_language); >+ se = new_engine (one_language, ev); > dict->engines = g_slist_prepend (dict->engines, se); > g_hash_table_insert (dict->languages, one_language, se); > g_hash_table_insert (dict->engines_ht, se, g_strdup (one_language)); >- >- dict->changed = TRUE; >- } >- } >-} >- >-static void >-update_engine (SpellEngine *se, CORBA_Environment * ev) >-{ >- AspellCanHaveError *err; >- >- DICT_DEBUG (printf ("Dictionary: creating new aspell speller\n")); >- >- if (se->changed) { >- if (se->speller) >- delete_aspell_speller (se->speller); >- err = new_aspell_speller (se->config); >- if (aspell_error_number (err) != 0) { >- g_warning ("aspell error: %s\n", aspell_error_message (err)); >- se->speller = NULL; >- raise_error (ev, aspell_error_message (err)); >- } else { >- se->speller = to_aspell_speller (err); >- se->changed = FALSE; >- } >- } >-} >- >-static void >-update_engines (GNOMESpellDictionary *dict, CORBA_Environment * ev) >-{ >- g_return_if_fail (IS_GNOME_SPELL_DICTIONARY (dict)); >- >- if (dict->changed) { >- GSList *l; >- >- for (l = dict->engines; l; l = l->next) { >- update_engine ((SpellEngine *) l->data, ev); >- } >- >- dict->changed = FALSE; >+ } > } > } > > static CORBA_boolean > engine_check_word (SpellEngine *se, const gchar *word, CORBA_Environment *ev) > { >- CORBA_boolean result = CORBA_TRUE; >- gint aspell_result; >+ CORBA_boolean result = CORBA_FALSE; >+ gint enchant_result; > > #ifndef G_DISABLE_CHECKS > g_return_val_if_fail (se->speller, CORBA_TRUE); >@@ -564,12 +484,12 @@ > if (!se->speller) > return CORBA_TRUE; > #endif >- aspell_result = aspell_speller_check (se->speller, word, strlen (word)); >- if (aspell_result == 0) >- result = CORBA_FALSE; >- if (aspell_result == -1) { >- g_warning ("aspell error: %s\n", aspell_speller_error_message (se->speller)); >- raise_error (ev, aspell_speller_error_message (se->speller)); >+ enchant_result = enchant_dict_check (se->speller, word, strlen (word)); >+ if (enchant_result == 0) >+ result = CORBA_TRUE; >+ if (enchant_result == -1) { >+ g_warning ("enchant error: %s\n", enchant_dict_get_error (se->speller)); >+ raise_error (ev, enchant_dict_get_error (se->speller)); > } > > return result; >@@ -592,7 +512,6 @@ > if (!strcmp (word, "Ximian")) > return CORBA_TRUE; > >- update_engines (dict, ev); > for (l = dict->engines; l; l = l->next) { > if (((SpellEngine *) l->data)->speller) { > valid_speller = TRUE; >@@ -621,11 +540,10 @@ > if (!word) > return; > #endif >- update_engines (dict, ev); > DICT_DEBUG (printf ("Dictionary add_word_to_session: %s\n", word)); > for (l = dict->engines; l; l = l->next) { > if (((SpellEngine *) l->data)->speller) >- aspell_speller_add_to_session (((SpellEngine *) l->data)->speller, word, strlen (word)); >+ enchant_dict_add_to_session (((SpellEngine *) l->data)->speller, word, strlen (word)); > } > } > >@@ -642,13 +560,11 @@ > if (!word || !language) > return; > #endif >- update_engines (dict, ev); > DICT_DEBUG (printf ("Dictionary add_word_to_personal: %s (%s)\n", word, language)); > se = (SpellEngine *) g_hash_table_lookup (dict->languages, language); > > if (se && se->speller) { >- aspell_speller_add_to_personal (se->speller, word, strlen (word)); >- aspell_speller_save_all_word_lists (se->speller); >+ enchant_dict_add_to_pwl (se->speller, word, strlen (word)); > DICT_DEBUG (printf ("Added and saved.\n")); > } > } >@@ -666,14 +582,12 @@ > if (!word || !replacement) > return; > #endif >- update_engines (dict, ev); > DICT_DEBUG (printf ("Dictionary correction: %s <-- %s\n", word, replacement)); > se = (SpellEngine *) g_hash_table_lookup (dict->languages, language); > > if (se && se->speller) { >- aspell_speller_store_replacement (se->speller, word, strlen (word), >- replacement, strlen (replacement)); >- aspell_speller_save_all_word_lists (se->speller); >+ enchant_dict_store_replacement (se->speller, word, strlen (word), >+ replacement, strlen (replacement)); > DICT_DEBUG (printf ("Set and saved.\n")); > } > } >@@ -683,8 +597,8 @@ > const CORBA_char *word, CORBA_Environment *ev) > { > GNOMESpellDictionary *dict = GNOME_SPELL_DICTIONARY (bonobo_object_from_servant (servant)); >- const AspellWordList *suggestions; >- AspellStringEnumeration *elements; >+ char **suggestions; >+ size_t number_of_suggestions; > GNOME_Spell_StringSeq *seq = NULL; > GSList *l, *suggestion_list = NULL; > gint i, len, pos; >@@ -696,17 +610,19 @@ > return NULL; > #endif > DICT_DEBUG (printf ("Dictionary correction: %s\n", word)); >- update_engines (dict, ev); > > len = 0; > for (l = dict->engines; l; l = l->next) { > SpellEngine *se = (SpellEngine *) l->data; > > if (se->speller) { >- suggestions = aspell_speller_suggest (se->speller, word, strlen (word)); >- suggestion_list = g_slist_prepend (suggestion_list, (gpointer) suggestions); >- len += 2*aspell_word_list_size (suggestions); >+ suggestions = enchant_dict_suggest (se->speller, word, strlen (word), &number_of_suggestions); >+ suggestion_list = g_slist_prepend (suggestion_list, >+ (gpointer) dup_string_list (suggestions, number_of_suggestions)); >+ len += 2*number_of_suggestions; > suggestion_list = g_slist_prepend (suggestion_list, engine_to_language (dict, se)); >+ suggestion_list = g_slist_prepend (suggestion_list, GINT_TO_POINTER (number_of_suggestions)); >+ enchant_dict_free_string_list (se->speller, suggestions); > } > } > >@@ -723,17 +639,18 @@ > gint list_len; > gchar *language; > >+ list_len = GPOINTER_TO_INT (l->data); >+ l = l->next; > language = (gchar *) l->data; > l = l->next; >- suggestions = (const AspellWordList *) l->data; >- elements = aspell_word_list_elements (suggestions); >- list_len = aspell_word_list_size (suggestions); >+ suggestions = (char **) l->data; > for (i = 0; i < list_len; i ++, pos ++) { >- seq->_buffer [pos] = CORBA_string_dup (aspell_string_enumeration_next (elements)); >+ seq->_buffer [pos] = CORBA_string_dup (suggestions [i]); > pos ++; > seq->_buffer [pos] = CORBA_string_dup (language); > } >- delete_aspell_string_enumeration (elements); >+ >+ g_strfreev (suggestions); > } > CORBA_sequence_set_release (seq, CORBA_TRUE); > g_slist_free (suggestion_list); > >=== modified file 'gnome-spell/dictionary.h' >--- gnome-spell/dictionary.h 2008-01-27 17:04:54 +0000 >+++ gnome-spell/dictionary.h 2008-01-27 17:09:44 +0000 >@@ -26,7 +26,6 @@ > G_BEGIN_DECLS > > #include <bonobo/bonobo-object.h> >-#include <aspell.h> > > #define GNOME_SPELL_DICTIONARY_TYPE (gnome_spell_dictionary_get_type ()) > #define GNOME_SPELL_DICTIONARY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), \ >@@ -37,12 +36,6 @@ > #define IS_GNOME_SPELL_DICTIONARY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GNOME_SPELL_DICTIONARY_TYPE)) > > typedef struct { >- AspellConfig *config; >- AspellSpeller *speller; >- gboolean changed; >-} SpellEngine; >- >-typedef struct { > gchar *abbreviation; > gchar *name; > } LangInfo; >@@ -50,7 +43,6 @@ > typedef struct { > BonoboObject parent; > >- gboolean changed; > GSList *engines; > GHashTable *languages; > GHashTable *engines_ht; > >=== modified file 'gnome-spell/test-spell.c' >--- gnome-spell/test-spell.c 2008-01-27 17:04:54 +0000 >+++ gnome-spell/test-spell.c 2008-01-27 17:09:44 +0000 >@@ -52,7 +52,6 @@ > * test dictionary > */ > >- GNOME_Spell_Dictionary_getLanguages (en, &ev); > GNOME_Spell_Dictionary_setLanguage (en, "en", &ev); > > printf ("check: %s --> %d\n", >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
Actions:
View
Attachments on
bug 354999
:
191939