X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FThesaurus.cpp;h=a80ef87ad7c09bae4d9b829278cc38a255f66699;hb=2098f1d8c20d51e63e670bcdc9da8996068975bf;hp=f004acc7874857867eee05209f6339b574e15c03;hpb=ce0c09d1aeff5f2d0c3d41470f3555cb23e37c8b;p=lyx.git diff --git a/src/Thesaurus.cpp b/src/Thesaurus.cpp index f004acc787..a80ef87ad7 100644 --- a/src/Thesaurus.cpp +++ b/src/Thesaurus.cpp @@ -13,25 +13,19 @@ #include "Thesaurus.h" -#include "support/debug.h" -#include "support/gettext.h" #include "LyXRC.h" #include "support/FileNameList.h" +#include "support/debug.h" #include "support/filetools.h" +#include "support/gettext.h" #include "support/lstrings.h" #include "support/os.h" #include "support/unicode.h" -#include "frontends/alert.h" +#include "support/mythes/mythes.hxx" -#ifdef HAVE_LIBMYTHES -#include MYTHES_H_LOCATION -#else -#ifdef HAVE_LIBAIKSAURUS -#include AIKSAURUS_H_LOCATION -#endif // HAVE_LIBAIKSAURUS -#endif // !HAVE_LIBMYTHES +#include "frontends/alert.h" #include #include @@ -42,81 +36,6 @@ using namespace lyx::support::os; namespace lyx { -#ifdef HAVE_LIBAIKSAURUS - -struct Thesaurus::Private -{ - Private(): thes_(new Aiksaurus) {} - Aiksaurus * thes_; -}; - -Thesaurus::Meanings Thesaurus::lookup(docstring const & t, docstring const &) -{ - Meanings meanings; - - // aiksaurus is for english text only, therefore it does not work - // with non-ascii strings. - // The interface of the Thesaurus class uses docstring because a - // non-english thesaurus is possible in theory. - if (!support::isAscii(t)) - // to_ascii() would assert - return meanings; - - string const text = to_ascii(t); - - docstring error = from_ascii(d->thes_->error()); - if (!error.empty()) { - static bool sent_error = false; - if (!sent_error) { - frontend::Alert::error(_("Thesaurus failure"), - bformat(_("Aiksaurus returned the following error:\n\n%1$s."), - error)); - sent_error = true; - } - return meanings; - } - if (!d->thes_->find(text.c_str())) - return meanings; - - // weird api, but ... - - int prev_meaning = -1; - int cur_meaning; - docstring meaning; - - // correct, returns "" at the end - string ret = d->thes_->next(cur_meaning); - - while (!ret.empty()) { - if (cur_meaning != prev_meaning) { - meaning = from_ascii(ret); - ret = d->thes_->next(cur_meaning); - prev_meaning = cur_meaning; - } else { - if (ret != text) - meanings[meaning].push_back(from_ascii(ret)); - } - - ret = d->thes_->next(cur_meaning); - } - - for (Meanings::iterator it = meanings.begin(); - it != meanings.end(); ++it) - sort(it->second.begin(), it->second.end()); - - return meanings; -} - - -bool Thesaurus::thesaurusAvailable(docstring const & lang) const -{ - // we support English only - return prefixIs(lang, from_ascii("en_")); -} - -#else // HAVE_LIBAIKSAURUS -#ifdef HAVE_LIBMYTHES - namespace { string const to_iconv_encoding(docstring const & s, string const & encoding) @@ -148,6 +67,17 @@ struct Thesaurus::Private delete it->second; } } + /// + bool thesaurusAvailable(docstring const & lang) const + { + for (Thesauri::const_iterator it = thes_.begin(); + it != thes_.end(); ++it) { + if (it->first == lang) + if (it->second) + return true; + } + return false; + } /// add a thesaurus to the list bool addThesaurus(docstring const & lang); @@ -203,14 +133,7 @@ bool Thesaurus::Private::addThesaurus(docstring const & lang) bool Thesaurus::thesaurusAvailable(docstring const & lang) const { - for (Thesauri::const_iterator it = d->thes_.begin(); - it != d->thes_.end(); ++it) { - if (it->first == lang) - if (it->second) - return true; - } - - return false; + return d->thesaurusAvailable(lang); } @@ -268,26 +191,6 @@ Thesaurus::Meanings Thesaurus::lookup(docstring const & t, docstring const & lan return meanings; } -#else - -struct Thesaurus::Private -{ -}; - - -Thesaurus::Meanings Thesaurus::lookup(docstring const &, docstring const &) -{ - return Meanings(); -} - - -bool Thesaurus::thesaurusAvailable(docstring const &) const -{ - return false; -} - -#endif // HAVE_LIBMYTHES -#endif // HAVE_LIBAIKSAURUS Thesaurus::Thesaurus() : d(new Thesaurus::Private) {