X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FAppleSpellChecker.cpp;h=189ada71cf730bcc54b642202c355ffe289e48fc;hb=3d4076b598deb18660e50ec9c327efc3b15f15d0;hp=702f49baccce52f62236c4f2b7d510543ebad643;hpb=c95d441818ddf8bbfc384bb889288a55f0aa91ea;p=lyx.git diff --git a/src/AppleSpellChecker.cpp b/src/AppleSpellChecker.cpp index 702f49bacc..189ada71cf 100644 --- a/src/AppleSpellChecker.cpp +++ b/src/AppleSpellChecker.cpp @@ -31,7 +31,8 @@ struct AppleSpellChecker::Private SpellChecker::Result toResult(SpellCheckResult status); string toString(SpellCheckResult status); - + int numDictionaries() const; + /// the speller AppleSpeller speller; @@ -54,9 +55,9 @@ AppleSpellChecker::Private::~Private() } -AppleSpellChecker::AppleSpellChecker(): d(new Private) -{ -} +AppleSpellChecker::AppleSpellChecker() + : d(new Private) +{} AppleSpellChecker::~AppleSpellChecker() @@ -82,10 +83,10 @@ string AppleSpellChecker::Private::toString(SpellCheckResult status) SpellChecker::Result AppleSpellChecker::check(WordLangTuple const & word) { if (!hasDictionary(word.lang())) - return WORD_OK; + return NO_DICTIONARY; string const word_str = to_utf8(word.word()); - string const lang = d->languageMap[word.lang()->code()]; + string const lang = d->languageMap[word.lang()->lang()]; SpellCheckResult result = AppleSpeller_check(d->speller, word_str.c_str(), lang.c_str()); @@ -137,7 +138,8 @@ void AppleSpellChecker::suggest(WordLangTuple const & wl, { suggestions.clear(); string const word_str = to_utf8(wl.word()); - size_t num = AppleSpeller_makeSuggestion(d->speller, word_str.c_str(), wl.lang()->code().c_str()); + size_t num = AppleSpeller_makeSuggestion(d->speller, + word_str.c_str(), wl.lang()->code().c_str()); for (size_t i = 0; i < num; i++) { char const * next = AppleSpeller_getSuggestion(d->speller, i); if (!next) break; @@ -148,7 +150,7 @@ void AppleSpellChecker::suggest(WordLangTuple const & wl, bool AppleSpellChecker::hasDictionary(Language const * lang) const { - string const langmap = d->languageMap[lang->code()]; + string const langmap = d->languageMap[lang->lang()]; bool result = !langmap.empty(); if (result) @@ -156,16 +158,31 @@ bool AppleSpellChecker::hasDictionary(Language const * lang) const result = AppleSpeller_hasLanguage(d->speller,lang->code().c_str()); if (result) { - d->languageMap[lang->code()] = lang->code(); + d->languageMap[lang->lang()] = lang->code(); } else { result = AppleSpeller_hasLanguage(d->speller,lang->lang().c_str()); if (result) - d->languageMap[lang->code()] = lang->lang(); + d->languageMap[lang->lang()] = lang->lang(); } + LYXERR(Debug::GUI, "has dictionary: " << lang->lang() << " = " << result) ; return result; } +int AppleSpellChecker::numDictionaries() const +{ + int result = 0; + map::const_iterator it = d->languageMap.begin(); + map::const_iterator et = d->languageMap.end(); + + for (; it != et; ++it) { + string const langmap = it->second; + result += langmap.empty() ? 0 : 1; + } + return result; +} + + int AppleSpellChecker::numMisspelledWords() const { return AppleSpeller_numMisspelledWords(d->speller);