]> git.lyx.org Git - lyx.git/blobdiff - src/LayoutModuleList.cpp
fix GIT - version control for LyX documents not detected
[lyx.git] / src / LayoutModuleList.cpp
index 7b79531efc47a102bd4187caba9ce46cdefe7b3c..d532b2d142cd22c30dfa17fc9bb5a6b311d74350 100644 (file)
@@ -59,7 +59,7 @@ 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;
 
@@ -67,10 +67,8 @@ bool LayoutModuleList::moduleCanBeAdded(string const & 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<string> const reqs = lm->getRequiredModules();
        if (reqs.empty())
                return true;
 
-       mit = begin(); // reset
+       const_iterator mit = begin();
+       const_iterator const men = end();
        vector<string>::const_iterator rit = reqs.begin();
        vector<string>::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<string> 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;
                        }