From 38d3b1737836861a1bed5d8b4f05e8b3c0aa4a89 Mon Sep 17 00:00:00 2001 From: Dom Lachowicz Date: Fri, 22 May 2009 21:24:38 +0000 Subject: pass the broker to the correct classes and functions; will be useful in setting dictionary paths git-svn-id: svn+ssh://svn.abisource.com/svnroot/enchant/trunk@26481 bcba8976-2d24-0410-9c9c-aab3bd5fdfd6 --- src/ispell/ispell_checker.cpp | 23 ++++++++++++----------- src/ispell/ispell_checker.h | 6 +++++- src/myspell/myspell_checker.cpp | 41 +++++++++++++++++++++-------------------- 3 files changed, 38 insertions(+), 32 deletions(-) diff --git a/src/ispell/ispell_checker.cpp b/src/ispell/ispell_checker.cpp index bfdc6fb..fd1fdf4 100644 --- a/src/ispell/ispell_checker.cpp +++ b/src/ispell/ispell_checker.cpp @@ -115,8 +115,9 @@ ISpellChecker::try_autodetect_charset(const char * const inEncoding) /***************************************************************************/ /***************************************************************************/ -ISpellChecker::ISpellChecker() - : deftflag(-1), +ISpellChecker::ISpellChecker(EnchantBroker * broker) +: m_broker(broker), + deftflag(-1), prefstringchar(-1), m_bSuccessfulInit(false), m_BC(NULL), @@ -301,7 +302,7 @@ ISpellChecker::suggestWord(const char * const utf8Word, size_t length, } static GSList * -ispell_checker_get_dictionary_dirs (void) +ispell_checker_get_dictionary_dirs (EnchantBroker * broker) { GSList *dirs = NULL; @@ -360,13 +361,13 @@ ispell_checker_get_dictionary_dirs (void) } static void -s_buildHashNames (std::vector & names, const char * dict) +s_buildHashNames (std::vector & names, EnchantBroker * broker, const char * dict) { names.clear (); GSList *dirs, *iter; - dirs = ispell_checker_get_dictionary_dirs(); + dirs = ispell_checker_get_dictionary_dirs(broker); for (iter = dirs; iter; iter = iter->next) { char *tmp; @@ -385,7 +386,7 @@ ISpellChecker::loadDictionary (const char * szdict) { std::vector dict_names; - s_buildHashNames (dict_names, szdict); + s_buildHashNames (dict_names, m_broker, szdict); for (size_t i = 0; i < dict_names.size(); i++) { @@ -562,7 +563,7 @@ ispell_provider_request_dict (EnchantProvider * me, const char *const tag) EnchantDict *dict; ISpellChecker * checker; - checker = new ISpellChecker (); + checker = new ISpellChecker (me->owner); if (!checker) { @@ -595,11 +596,11 @@ ispell_provider_dispose_dict (EnchantProvider * me, EnchantDict * dict) } static int -_ispell_provider_dictionary_exists (const char *const szFile) +_ispell_provider_dictionary_exists (EnchantBroker * broker, const char *const szFile) { std::vector names; - s_buildHashNames (names, szFile); + s_buildHashNames (names, broker, szFile); for (size_t i = 0; i < names.size(); i++) { if (g_file_test (names[i].c_str(), G_FILE_TEST_EXISTS)) return 1; @@ -619,7 +620,7 @@ ispell_provider_list_dictionaries (EnchantProvider * me, nb = 0; for (i = 0; i < size_ispell_map; i++) - if (_ispell_provider_dictionary_exists (ispell_map[i].dict)) + if (_ispell_provider_dictionary_exists (me->owner, ispell_map[i].dict)) out_dicts[nb++] = g_strdup (ispell_map[i].lang); *out_n_dicts = nb; @@ -644,7 +645,7 @@ ispell_provider_dictionary_exists (struct str_enchant_provider * me, { const IspellMap * mapping = (const IspellMap *)(&(ispell_map[i])); if (!strcmp (tag, mapping->lang) || !strcmp (shortened_dict.c_str(), mapping->lang)) - return _ispell_provider_dictionary_exists(mapping->dict); + return _ispell_provider_dictionary_exists(me->owner, mapping->dict); } return 0; diff --git a/src/ispell/ispell_checker.h b/src/ispell/ispell_checker.h index be14fc1..7e34e13 100644 --- a/src/ispell/ispell_checker.h +++ b/src/ispell/ispell_checker.h @@ -33,11 +33,12 @@ #include // give glib a chance to override MAXPATHLEN first before it is set in ispell.h #include "ispell.h" +#include "enchant.h" class ISpellChecker { public: - ISpellChecker(); + ISpellChecker(EnchantBroker * broker); ~ISpellChecker(); bool checkWord(const char * const word, size_t len); @@ -46,6 +47,9 @@ public: bool requestDictionary (const char * szLang); private: + EnchantBroker* m_broker; + + ISpellChecker(); ISpellChecker(const ISpellChecker&); // no impl void operator=(const ISpellChecker&); // no impl diff --git a/src/myspell/myspell_checker.cpp b/src/myspell/myspell_checker.cpp index dcadb43..88f9636 100644 --- a/src/myspell/myspell_checker.cpp +++ b/src/myspell/myspell_checker.cpp @@ -57,7 +57,7 @@ ENCHANT_PLUGIN_DECLARE("Myspell") class MySpellChecker { public: - MySpellChecker(); + MySpellChecker(EnchantBroker * broker); ~MySpellChecker(); bool checkWord (const char *word, size_t len); @@ -69,6 +69,7 @@ private: GIConv m_translate_in; /* Selected translation from/to Unicode */ GIConv m_translate_out; Hunspell *myspell; + EnchantBroker *m_broker; }; /***************************************************************************/ @@ -129,8 +130,8 @@ g_iconv_is_valid(GIConv i) return (i != G_ICONV_INVALID); } -MySpellChecker::MySpellChecker() - : m_translate_in(G_ICONV_INVALID), m_translate_out(G_ICONV_INVALID), myspell(0) +MySpellChecker::MySpellChecker(EnchantBroker * broker) +: m_translate_in(G_ICONV_INVALID), m_translate_out(G_ICONV_INVALID), myspell(0), m_broker(broker) { } @@ -218,7 +219,7 @@ MySpellChecker::suggestWord(const char* const utf8Word, size_t len, size_t *nsug } static GSList * -myspell_checker_get_dictionary_dirs (void) +myspell_checker_get_dictionary_dirs (EnchantBroker * broker) { GSList *dirs = NULL; @@ -283,13 +284,13 @@ myspell_checker_get_dictionary_dirs (void) } static void -s_buildDictionaryDirs (std::vector & dirs) +s_buildDictionaryDirs (std::vector & dirs, EnchantBroker * broker) { GSList *myspell_dirs, *iter; dirs.clear (); - myspell_dirs = myspell_checker_get_dictionary_dirs (); + myspell_dirs = myspell_checker_get_dictionary_dirs (broker); for (iter = myspell_dirs; iter; iter = iter->next) { dirs.push_back ((const char *)iter->data); @@ -300,12 +301,12 @@ s_buildDictionaryDirs (std::vector & dirs) } static void -s_buildHashNames (std::vector & names, const char * dict) +s_buildHashNames (std::vector & names, EnchantBroker * broker, const char * dict) { names.clear (); std::vector dirs; - s_buildDictionaryDirs (dirs); + s_buildDictionaryDirs (dirs, broker); char *dict_dic = g_strconcat(dict, ".dic", NULL); for (size_t i = 0; i < dirs.size(); i++) @@ -327,22 +328,22 @@ s_hasCorrespondingAffFile(const std::string & dicFile) } static char * -myspell_request_dictionary (const char * tag) +myspell_request_dictionary (EnchantBroker * broker, const char * tag) { std::vector names; - s_buildHashNames (names, tag); + s_buildHashNames (names, broker, tag); for (size_t i = 0; i < names.size (); i++) { - if (g_file_test(names[i].c_str(), G_FILE_TEST_EXISTS)) { - if(s_hasCorrespondingAffFile(names[i])){ - return g_strdup (names[i].c_str()); - } - } + if (g_file_test(names[i].c_str(), G_FILE_TEST_EXISTS)) { + if(s_hasCorrespondingAffFile(names[i])){ + return g_strdup (names[i].c_str()); + } + } } std::vector dirs; - s_buildDictionaryDirs (dirs); + s_buildDictionaryDirs (dirs, broker); for (size_t i = 0; i < dirs.size(); i++) { GDir *dir = g_dir_open (dirs[i].c_str(), 0, NULL); @@ -372,7 +373,7 @@ MySpellChecker::requestDictionary(const char *szLang) { char *dic = NULL, *aff = NULL; - dic = myspell_request_dictionary (szLang); + dic = myspell_request_dictionary (m_broker, szLang); if (!dic) return false; @@ -467,7 +468,7 @@ myspell_provider_list_dicts (EnchantProvider * me, std::vector dict_dirs, dicts; char ** dictionary_list = NULL; - s_buildDictionaryDirs (dict_dirs); + s_buildDictionaryDirs (dict_dirs, me->owner); for (size_t i = 0; i < dict_dirs.size(); i++) { @@ -497,7 +498,7 @@ myspell_provider_request_dict(EnchantProvider * me, const char *const tag) EnchantDict *dict; MySpellChecker * checker; - checker = new MySpellChecker(); + checker = new MySpellChecker(me->owner); if (!checker) return NULL; @@ -533,7 +534,7 @@ myspell_provider_dictionary_exists (struct str_enchant_provider * me, { std::vector names; - s_buildHashNames (names, tag); + s_buildHashNames (names, me->owner, tag); for (size_t i = 0; i < names.size(); i++) { if (g_file_test (names[i].c_str(), G_FILE_TEST_EXISTS)) { -- cgit v1.2.1