X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FModuleList.cpp;h=a9658710029e440959749bd48b9f0902f63070d7;hb=01a21a60b5c764afa3646958fe0c8eb9473aff3e;hp=f5412b8ead7ae96e9971a830ba54676dfe3ac1d5;hpb=2a25d7039f6fbfd1d5bae87fd9fd91fdf316459a;p=lyx.git diff --git a/src/ModuleList.cpp b/src/ModuleList.cpp index f5412b8ead..a965871002 100644 --- a/src/ModuleList.cpp +++ b/src/ModuleList.cpp @@ -30,7 +30,7 @@ namespace lyx { //global variable: module list -ModuleList moduleList; +ModuleList theModuleList; LyXModule::LyXModule(string const & n, string const & i, @@ -45,7 +45,18 @@ LyXModule::LyXModule(string const & n, string const & i, } -bool LyXModule::isAvailable() { +vector LyXModule::prerequisites() const { +#ifdef TEX2LYX + return vector(); +#else + if (!checked_) + isAvailable(); + return prerequisites_; +#endif +} + + +bool LyXModule::isAvailable() const { #ifdef TEX2LYX return true; #else @@ -54,16 +65,16 @@ bool LyXModule::isAvailable() { if (checked_) return available_; checked_ = true; + available_ = true; //check whether all of the required packages are available vector::const_iterator it = package_list_.begin(); vector::const_iterator end = package_list_.end(); for (; it != end; ++it) { if (!LaTeXFeatures::isAvailable(*it)) { available_ = false; - return available_; + prerequisites_.push_back(*it); } } - available_ = true; return available_; #endif } @@ -76,7 +87,7 @@ bool LyXModule::isCompatible(string const & modname) const excluded_modules_.end()) return false; - LyXModule const * const lm = moduleList[modname]; + LyXModule const * const lm = theModuleList[modname]; if (!lm) return true; @@ -91,10 +102,10 @@ bool LyXModule::isCompatible(string const & modname) const bool LyXModule::areCompatible(string const & mod1, string const & mod2) { - LyXModule const * const lm1 = moduleList[mod1]; + LyXModule const * const lm1 = theModuleList[mod1]; if (lm1) return lm1->isCompatible(mod2); - LyXModule const * const lm2 = moduleList[mod2]; + LyXModule const * const lm2 = theModuleList[mod2]; if (lm2) return lm2->isCompatible(mod1); // Can't check it either way. @@ -119,9 +130,8 @@ bool ModuleList::read() LYXERR(Debug::TCLASS, "Reading modules from `" << real_file << '\''); if (real_file.empty()) { - LYXERR0("unable to find modules file `" - << to_utf8(makeDisplayPath(real_file.absFilename(), 1000)) - << "'.\nNo modules will be available."); + LYXERR0("unable to find modules file `lyxmodules.lst'.\n" + << "No modules will be available."); return false; } @@ -134,7 +144,7 @@ bool ModuleList::read() if (!lex.isOK()) { LYXERR0("unable to open modules file `" - << to_utf8(makeDisplayPath(real_file.absFilename(), 1000)) + << to_utf8(makeDisplayPath(real_file.absFileName(), 1000)) << "'\nNo modules will be available."); return false; } @@ -202,8 +212,8 @@ bool ModuleList::read() LYXERR(Debug::TCLASS, "End of parsing of lyxmodules.lst"); - if (!moduleList.empty()) - sort(moduleList.begin(), moduleList.end(), ModuleSorter()); + if (!theModuleList.empty()) + sort(theModuleList.begin(), theModuleList.end(), ModuleSorter()); return true; } @@ -242,15 +252,26 @@ LyXModuleList::iterator ModuleList::end() } -LyXModule * ModuleList::operator[](string const & str) +LyXModule const * ModuleList::operator[](string const & str) const { - LyXModuleList::iterator it = modlist_.begin(); + LyXModuleList::const_iterator it = modlist_.begin(); for (; it != modlist_.end(); ++it) if (it->getID() == str) { - LyXModule & mod = *it; + LyXModule const & mod = *it; return &mod; } return 0; } +LyXModule * ModuleList::operator[](string const & str) +{ + LyXModuleList::iterator it = modlist_.begin(); + for (; it != modlist_.end(); ++it) + if (it->getID() == str) { + LyXModule & mod = *it; + return &mod; + } + return 0; +} + } // namespace lyx