Yes, we will remove aspell from JDS in GNOME 2.18. But there is
something I will check with John Fisher that a conversion tool should be
added to make users convert their aspell dictionaries to myspell ones.

Jeff

On Mon, 2007-02-12 at 11:16 +0800, Brian Cameron wrote:
> Jeff:
> 
> With this change, shouldn't we remove aspell from JDS since we don't use
> it anymore?   Should we make this Obsolete in our GNOME 2.18 case?
> 
> Brian
> 
> 
> > These patches aims to make gedit and evolution to use more languages 
> > dictionaries.
> > In gnome2.17, gedit uses enchant and evolution still uses gnome-spell 
> > which depends on aspell.
> > Since we have delivered many languages of dictionaries in myspell 
> > format, these patches can
> > do:
> > 1. Make gnome-spell use enchant.
> > 2. Make enchant use myspell instead of aspell.
> > 3. Modify spec files to make gnome-spell can be built without enchant 
> > installed.
> > 
> > For the patch (gnome-spell-01-enchant) which makes gnome use enchant, it 
> > comes from
> > http://uyarer.com/doc/gnome-spell-enchant.diff
> > 
> > Jeff
> > 
> > 
> > ------------------------------------------------------------------------
> > 
> > Index: gnome-spell.spec
> > ===================================================================
> > --- gnome-spell.spec        (revision 10393)
> > +++ gnome-spell.spec        (working copy)
> > @@ -22,6 +22,7 @@
> >  URL:               http://www.sun.com/software/javadesktopsystem/
> >  Source:            
> > http://ftp.gnome.org/pub/gnome/sources/gnome-spell/1.0/%{name}-%{version}.tar.bz2
> >  Source1:   mkinstalldirs
> > +Patch1:        gnome-spell-01-enchant.diff
> >  Summary:   GNOME spell checking component
> >  Group:             Applications/Text
> >  
> > @@ -51,6 +52,7 @@
> >  
> >  %prep
> >  %setup  -q -n %{name}-%{version}
> > +%patch1 -p0
> >  cp %SOURCE1 .
> >  
> >  
> > Index: enchant.spec
> > ===================================================================
> > --- enchant.spec    (revision 10393)
> > +++ enchant.spec    (working copy)
> > @@ -22,6 +22,7 @@
> >  Source:            
> > http://www.abisource.com/downloads/%{name}/%{version}/%{name}-%{version}.tar.gz
> >  # date:2006-12-08 bugzilla:10667 owner:dcarbery type:bug
> >  Patch1:         enchant-01-define_FILE.diff
> > +Patch2:         enchant-02-uninstalled-pc.diff
> >  Summary:   Generic spell checking library
> >  Group:             Applications/Text
> >  
> > @@ -35,6 +36,7 @@
> >  %prep
> >  %setup  -q -n %{name}-%{version}
> >  %patch1 -p1
> > +%patch2 -p1
> >  
> >  
> >  %build
> > @@ -57,6 +59,8 @@
> >      --mandir=%{_mandir} \
> >      --infodir=%{_datadir}/info \
> >      --localstatedir=/var \
> > +   --with-myspell-dir=/usr/lib/thunderbird/dictionaries \
> > +   --disable-aspell \
> >      --disable-static
> >  
> >  make -j $CPUS
> > Index: Solaris/SUNWgnome-spell.spec
> > ===================================================================
> > --- Solaris/SUNWgnome-spell.spec    (revision 10500)
> > +++ Solaris/SUNWgnome-spell.spec    (working copy)
> > @@ -47,27 +47,27 @@
> >  %prep
> >  rm -rf %name-%version
> >  mkdir -p %name-%version
> > +%enchant.prep -d %name-%version
> >  %gspell.prep -d %name-%version
> > -%enchant.prep -d %name-%version
> >  
> >  %build
> > +# See http://bugzilla.abisource.com/show_bug.cgi?id=10668 for why LD is 
> > set 
> > +# to $CXX.
> > +export LD=$CXX
> > +%enchant.build -d %name-%version
> >  export PATH=%{_libdir}/aspell:$PATH
> >  export PERL5LIB=%{_prefix}/perl5/site_perl/5.6.1/sun4-solaris-64int
> >  export ACLOCAL_FLAGS="-I %{_datadir}/aclocal"
> >  export CFLAGS="%optflags"
> >  export CXXFLAGS="%cxx_optflags"
> > -export PKG_CONFIG_PATH=%{_pkg_config_path}
> > +export PKG_CONFIG_PATH=../enchant-%{enchant.version}:%{_pkg_config_path}
> >  export MSGFMT="/usr/bin/msgfmt"
> >  export LDFLAGS="%_ldflags"
> >  %gspell.build -d %name-%version
> > -# See http://bugzilla.abisource.com/show_bug.cgi?id=10668 for why LD is 
> > set 
> > -# to $CXX.
> > -export LD=$CXX
> > -%enchant.build -d %name-%version
> >  
> >  %install
> > +%enchant.install -d %name-%version
> >  %gspell.install -d %name-%version
> > -%enchant.install -d %name-%version
> >  
> >  %if %build_l10n
> >  %else
> > 
> > 
> > 
> > ------------------------------------------------------------------------
> > 
> > diff -r -u enchant-1.3.0/configure.in enchant-1.3.0-new/configure.in
> > --- enchant-1.3.0/configure.in      2006-07-23 01:34:46.000000000 +0800
> > +++ enchant-1.3.0-new/configure.in  2007-02-09 14:52:22.315224000 +0800
> > @@ -258,6 +258,7 @@
> >  AC_OUTPUT([
> >  Makefile
> >  enchant.pc
> > +enchant-uninstalled.pc
> >  enchant.spec
> >  src/Makefile
> >  src/aspell/Makefile
> > diff -r -u enchant-1.3.0/enchant-uninstall.pc.in 
> > enchant-1.3.0-new/enchant-uninstall.pc.in
> > --- enchant-1.3.0/enchant-uninstalled.pc.in 2007-02-09 14:57:57.887773000 
> > +0800
> > +++ enchant-1.3.0-new/enchant-uninstalled.pc.in     2007-02-09 
> > 16:08:11.944733000 +0800
> > @@ -0,0 +1,11 @@
> > +pref...@prefix@
> > +exec_pref...@exec_prefix@
> > +libd...@libdir@
> > +included...@includedir@
> > +
> > +Name: libenchant
> > +Description: A spell checking library
> > +Version: @VERSION@
> > +Requires: glib-2.0 gmodule-2.0
> > +Libs: ${pc_top_builddir}/${pcfiledir}/src/libenchant.la
> > +Cflags: -I${pc_top_builddir}/${pcfiledir}/src
> > 
> > 
> > ------------------------------------------------------------------------
> > 
> > Index: configure.in
> > ===================================================================
> > RCS file: /cvs/gnome/gnome-spell/configure.in,v
> > retrieving revision 1.86
> > diff -u -p -u -p -r1.86 configure.in
> > --- configure.in    10 Feb 2006 12:08:11 -0000      1.86
> > +++ configure.in    2 Apr 2006 14:31:45 -0000
> > @@ -68,34 +68,6 @@ AC_DEFINE_UNQUOTED(API_VERSION, "${API_V
> >  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(CFLAGS)
> >  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)
> > Index: gnome-spell/Makefile.am
> > ===================================================================
> > RCS file: /cvs/gnome/gnome-spell/gnome-spell/Makefile.am,v
> > retrieving revision 1.34
> > diff -u -p -u -p -r1.34 Makefile.am
> > --- gnome-spell/Makefile.am 19 Jan 2006 23:37:50 -0000      1.34
> > +++ gnome-spell/Makefile.am 2 Apr 2006 14:31:46 -0000
> > @@ -7,13 +7,11 @@ END =
> >  
> >  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_idl_la_SOURCES =   \
> >  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 @@ libgnome_spell_component_la_SOURCES =             \
> >  
> >  test_gnome_spell_component_LDADD =         \
> >     libgnome-spell-idl.la           \
> > -   $(ASPELL_LIBS)                          \
> >     $(GNOME_SPELL_LIBS)                     \
> >     $(END)
> >  
> > Index: gnome-spell/dictionary.c
> > ===================================================================
> > RCS file: /cvs/gnome/gnome-spell/gnome-spell/dictionary.c,v
> > retrieving revision 1.39
> > diff -u -p -u -p -r1.39 dictionary.c
> > --- gnome-spell/dictionary.c        5 Feb 2006 21:31:09 -0000       1.39
> > +++ gnome-spell/dictionary.c        2 Apr 2006 14:31:46 -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.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 @@ gnome_spell_dictionary_init (GObject *ob
> >  {
> >     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 @@ dictionary_finalize (GObject *object)
> >  }
> >  
> >  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 @@ release_engines (GNOMESpellDictionary *d
> >             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 @@ release_engines (GNOMESpellDictionary *d
> >     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 LangInfo known_languages [] = {
> >  };
> >  
> >  static GSList *
> > -get_languages_real (gint *ln)
> > +get_languages (gint *ln)
> >  {
> >     GSList *langs;
> > -   AspellCanHaveError *err;
> > -   AspellConfig  *config;
> > -   AspellSpeller *speller;
> > -   gint i;
> > +   EnchantBroker *broker;
> > +   gint i, nb_langs;
> >  
> > -   DICT_DEBUG (printf ("get_languages_real\n"));
> > +   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) ++;
> > +                   nb_langs++;
> >             }
> >     }
> >  
> > -   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);
> > +   *ln = nb_langs;
> >  
> > -   gconf_client_suggest_sync (gc, NULL);
> > -   g_object_unref (gc);
> > +   enchant_broker_free (broker);
> >  
> >     return langs;
> >  }
> > @@ -504,59 +464,19 @@ impl_gnome_spell_dictionary_set_language
> >                     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 @@ engine_check_word (SpellEngine *se, cons
> >     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 @@ impl_gnome_spell_dictionary_check_word (
> >     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 @@ impl_gnome_spell_dictionary_add_word_to_
> >     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 @@ impl_gnome_spell_dictionary_add_word_to_
> >     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 @@ impl_gnome_spell_dictionary_set_correcti
> >     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 @@ impl_gnome_spell_dictionary_get_suggesti
> >                                          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 @@ impl_gnome_spell_dictionary_get_suggesti
> >             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 @@ impl_gnome_spell_dictionary_get_suggesti
> >             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);
> > Index: gnome-spell/dictionary.h
> > ===================================================================
> > RCS file: /cvs/gnome/gnome-spell/gnome-spell/dictionary.h,v
> > retrieving revision 1.8
> > diff -u -p -u -p -r1.8 dictionary.h
> > --- gnome-spell/dictionary.h        5 Feb 2006 21:31:09 -0000       1.8
> > +++ gnome-spell/dictionary.h        2 Apr 2006 14:31:46 -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 @@ G_BEGIN_DECLS
> >  #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 {
> >  typedef struct {
> >     BonoboObject parent;
> >  
> > -   gboolean changed;
> >     GSList *engines;
> >     GHashTable *languages;
> >     GHashTable *engines_ht;
> > Index: gnome-spell/test-spell.c
> > ===================================================================
> > RCS file: /cvs/gnome/gnome-spell/gnome-spell/test-spell.c,v
> > retrieving revision 1.12
> > diff -u -p -u -p -r1.12 test-spell.c
> > --- gnome-spell/test-spell.c        6 Mar 2003 16:37:36 -0000       1.12
> > +++ gnome-spell/test-spell.c        2 Apr 2006 14:31:46 -0000
> > @@ -52,7 +52,6 @@ main (int argc, char *argv [])
> >      * test dictionary
> >      */
> >  
> > -   GNOME_Spell_Dictionary_getLanguages (en, &ev);
> >     GNOME_Spell_Dictionary_setLanguage (en, "en", &ev);
> >  
> >     printf ("check: %s --> %d\n",
> 


Reply via email to