Salome HOME
Issue #2052 : really remove results if during the feature execution number of results...
[modules/shaper.git] / src / Model / Model_Application.cpp
index 2879897154ad7f740725afb1aaa6849cb2679054..e6170af5c12bee586e13fab20b10fce79a011b5a 100644 (file)
@@ -9,14 +9,6 @@
 
 #include <ModelAPI_Events.h>
 
-#ifdef OCAFBROWSER
-#include <DFBrowserAPI_PluginMgr.h>
-#include <DFBrowserAPI_Communicator.h>
-
-static bool FirstCall = true;
-#endif
-
-IMPLEMENT_STANDARD_HANDLE(Model_Application, TDocStd_Application)
 IMPLEMENT_STANDARD_RTTIEXT(Model_Application, TDocStd_Application)
 
 static Handle_Model_Application TheApplication = new Model_Application;
@@ -24,12 +16,6 @@ static Handle_Model_Application TheApplication = new Model_Application;
 //=======================================================================
 Handle(Model_Application) Model_Application::getApplication()
 {
-#ifdef OCAFBROWSER
-    if (FirstCall) {
-      DFBrowserAPI_PluginMgr::activateBrowser("OCAFBrowser.dll", TheApplication);
-      FirstCall = false;
-    }
-#endif
   return TheApplication;
 }
 
@@ -130,9 +116,9 @@ const std::string& Model_Application::loadPath() const
 }
 
 //=======================================================================
-void Model_Application::setLoadByDemand(std::string theID)
+void Model_Application::setLoadByDemand(std::string theID, const int theDocID)
 {
-  myLoadedByDemand.insert(theID);
+  myLoadedByDemand[theID] = theDocID;
 }
 
 //=======================================================================
@@ -164,8 +150,21 @@ void Model_Application::removeUselessDocuments(
 
 int Model_Application::generateDocumentId()
 {
-  int aResult = int(myDocs.size());
-  for(; myDocs.find(aResult) != myDocs.end(); aResult++) {} // count until the result id is unique
+  int aResult;
+  // count until the result id is unique
+  for(aResult = int(myDocs.size()); true; aResult++) {
+    if (myDocs.find(aResult) == myDocs.end()) {
+      bool aFound = false;
+      std::map<std::string, int>::iterator aLBDIter = myLoadedByDemand.begin();
+      for(; aLBDIter != myLoadedByDemand.end(); aLBDIter++) {
+        if (aLBDIter->second == aResult) {
+          aFound = true;
+          break;
+        }
+      }
+      if (!aFound) break;
+    }
+  }
   return aResult;
 }