]> SALOME platform Git repositories - modules/shaper.git/commitdiff
Salome HOME
Debug of loading parts
authormpv <mpv@opencascade.com>
Thu, 21 May 2015 13:55:33 +0000 (16:55 +0300)
committermpv <mpv@opencascade.com>
Thu, 21 May 2015 13:55:33 +0000 (16:55 +0300)
src/Model/Model_Objects.cpp
src/Model/Model_Session.cpp
src/Model/Model_Session.h
src/ModelAPI/ModelAPI_Session.h
src/PartSetPlugin/PartSetPlugin_Part.cpp

index 2dafa892936d21324a40d1c1a3f8c9854660ae06..2356a20537c7b0e12758f70dfcd11a50aeda74f5 100644 (file)
@@ -486,6 +486,7 @@ void Model_Objects::synchronizeFeatures(
       aNewFeatures.insert(aFeature);
       initData(aFeature, aFeatureLabel, TAG_FEATURE_ARGUMENTS);
       updateHistory(aFeature);
+      aFeature->setDisabled(false); // by default created feature is enabled (this allows to recreate the results before "setCurrent" is called)
 
       // event: model is updated
       ModelAPI_EventCreator::get()->sendUpdated(aFeature, aCreateEvent);
@@ -786,7 +787,9 @@ void Model_Objects::updateResults(FeaturePtr theFeature)
         if (aGroup->Get() == ModelAPI_ResultBody::group().c_str()) {
           aNewBody = createBody(theFeature->data(), aResIndex);
         } else if (aGroup->Get() == ModelAPI_ResultPart::group().c_str()) {
-          aNewBody = createPart(theFeature->data(), aResIndex);
+          //aNewBody = createPart(theFeature->data(), aResIndex); 
+          theFeature->execute(); // create the part result
+          break;
         } else if (aGroup->Get() == ModelAPI_ResultConstruction::group().c_str()) {
           theFeature->execute(); // construction shapes are needed for sketch solver
           break;
index ea951c7962c13b8eb64508fcfffc6cf3f60d7e11..de3cddb282f2560b844528f3ae709c76da93c40a 100644 (file)
@@ -250,6 +250,11 @@ std::list<std::shared_ptr<ModelAPI_Document> > Model_Session::allOpenedDocuments
   return aResult;
 }
 
+bool Model_Session::isLoadByDemand(const std::string theDocID)
+{
+  return Model_Application::getApplication()->isLoadByDemand(theDocID);
+}
+
 std::shared_ptr<ModelAPI_Document> Model_Session::copy(
     std::shared_ptr<ModelAPI_Document> theSource, std::string theID)
 {
index ebfef43d0f943958ea15e15b935723e3fa6c77da..2584a2e201aa35a14012df0e8c79c6a08ea29d9c 100644 (file)
@@ -90,6 +90,9 @@ class Model_Session : public ModelAPI_Session, public Events_Listener
   /// Returns all the opened documents of the session (without postponed)
   MODEL_EXPORT virtual std::list<std::shared_ptr<ModelAPI_Document> > allOpenedDocuments();
 
+  /// Returns true if document is not loaded yet
+  MODEL_EXPORT virtual bool isLoadByDemand(const std::string theDocID);
+
   /// Registers the plugin that creates features.
   /// It is obligatory for each plugin to call this function on loading to be found by 
   /// the plugin manager on call of the feature)
index 5c927e7d3eec56226d1b56c43e9e9cbe23acf550..47f6071810e4980069cec0671d47fde61f3e3bf1 100644 (file)
@@ -93,6 +93,9 @@ class MODELAPI_EXPORT ModelAPI_Session
   /// Returns all the opened documents of the session (without postponed)
   virtual std::list<std::shared_ptr<ModelAPI_Document> > allOpenedDocuments() = 0;
 
+  /// Returns true if document is not loaded yet
+  virtual bool isLoadByDemand(const std::string theDocID) = 0;
+
   /// Copies the document to the new one with the given id
   virtual std::shared_ptr<ModelAPI_Document> copy(std::shared_ptr<ModelAPI_Document> theSource,
                                                     std::string theID) = 0;
index 95fa5f06bee10875028b822faaf7c3e3bc11a62b..09a768acf8b9f2b19cc385c1d3bbf96ef8e70cc2 100644 (file)
@@ -27,7 +27,11 @@ void PartSetPlugin_Part::execute()
   if (!aResult) {
     aResult = document()->createPart(data());
     setResult(aResult);
-    aResult->activate();
+    // do not activate part by simple execution if it is not loaded yet: it must be explicitly
+    // activated for this
+    if (!ModelAPI_Session::get()->isLoadByDemand(aResult->data()->name())) {
+      aResult->activate();
+    }
   }
 }