X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FLayoutModuleList.cpp;h=d532b2d142cd22c30dfa17fc9bb5a6b311d74350;hb=f146bded7a1eed37174efca16ea63e65f93f6fbc;hp=b05fc120692602fef21330f404503717449dd7b9;hpb=90c64a5f5e41c8680a9c08bf78e1bb0cee558291;p=lyx.git diff --git a/src/LayoutModuleList.cpp b/src/LayoutModuleList.cpp index b05fc12069..d532b2d142 100644 --- a/src/LayoutModuleList.cpp +++ b/src/LayoutModuleList.cpp @@ -59,18 +59,16 @@ bool LayoutModuleList::moduleCanBeAdded(string const & modName, // Is the module already present? const_iterator it = begin(); const_iterator const en = end(); - for (; it != en; it++) + for (; it != en; ++it) if (*it == modName) return false; - LyXModule const * const lm = moduleList[modName]; + LyXModule const * const lm = theModuleList[modName]; if (!lm) return true; - // Is this module explicitly excluded by the document class? - const_iterator const exclmodstart = lay->excludedModules().begin(); - const_iterator const exclmodend = lay->excludedModules().end(); - if (find(exclmodstart, exclmodend, modName) != exclmodend) + // Does this module conflict with the document class or any loaded modules? + if (moduleConflicts(modName, lay)) return false; // Is this module already provided by the document class? @@ -79,26 +77,13 @@ bool LayoutModuleList::moduleCanBeAdded(string const & modName, if (find(provmodstart, provmodend, modName) != provmodend) return false; - // Check for conflicts with used modules - // first the provided modules... - const_iterator provmodit = provmodstart; - for (; provmodit != provmodend; ++provmodit) { - if (!LyXModule::areCompatible(modName, *provmodit)) - return false; - } - // and then the selected modules - const_iterator mit = begin(); - const_iterator const men = end(); - for (; mit != men; ++mit) - if (!LyXModule::areCompatible(modName, *mit)) - return false; - // Check whether some required module is available vector const reqs = lm->getRequiredModules(); if (reqs.empty()) return true; - mit = begin(); // reset + const_iterator mit = begin(); + const_iterator const men = end(); vector::const_iterator rit = reqs.begin(); vector::const_iterator ren = reqs.end(); bool foundone = false; @@ -114,6 +99,32 @@ bool LayoutModuleList::moduleCanBeAdded(string const & modName, } +bool LayoutModuleList::moduleConflicts(string const & modName, + LayoutFile const * const lay) const +{ + // Is this module explicitly excluded by the document class? + const_iterator const exclmodstart = lay->excludedModules().begin(); + const_iterator const exclmodend = lay->excludedModules().end(); + if (find(exclmodstart, exclmodend, modName) != exclmodend) + return true; + // Check for conflicts with used modules + // first the provided modules... + const_iterator provmodit = lay->providedModules().begin(); + const_iterator const provmodend = lay->providedModules().end(); + for (; provmodit != provmodend; ++provmodit) { + if (!LyXModule::areCompatible(modName, *provmodit)) + return true; + } + // and then the selected modules + const_iterator mit = begin(); + const_iterator const men = end(); + for (; mit != men; ++mit) + if (!LyXModule::areCompatible(modName, *mit)) + return true; + return false; +} + + void LayoutModuleList::addDefaultModules(LayoutFile const * const lay, std::list removedModules) { @@ -131,7 +142,7 @@ void LayoutModuleList::addDefaultModules(LayoutFile const * const lay, iterator insertpos = begin(); int numinserts = 0; - for (; mit != men; mit++) { + for (; mit != men; ++mit) { string const & modName = *mit; // make sure the user hasn't removed it if (find(removedModules.begin(), removedModules.end(), modName) != @@ -192,7 +203,7 @@ bool LayoutModuleList::removeBadModules(LayoutFile const * const lay) for (; !excluded && pit != pen; ++pit) { if (!LyXModule::areCompatible(modname, *pit)) { LYXERR0("Module " << modname << - " dropped becuase it conflicts with provided module `" << *pit << "'."); + " dropped because it conflicts with provided module `" << *pit << "'."); consistent = false; excluded = true; } @@ -236,7 +247,7 @@ bool LayoutModuleList::checkModuleConsistency(LayoutFile const * const lay) // determine whether some provided module or some prior module // satisfies our requirements - LyXModule const * const oldmod = moduleList[modname]; + LyXModule const * const oldmod = theModuleList[modname]; if (!oldmod) { LYXERR0("Default module " << modname << " added although it is unavailable and can't check requirements.");