Salome HOME
Issue #273: Add copyright string
[modules/shaper.git] / src / PartSetPlugin / PartSetPlugin_Remove.cpp
index 5e99cb1f9a8734f5c318133546e6f65e740f5e46..d77712bb34a01cd5c025da5b44165a95fc525dc8 100644 (file)
@@ -1,3 +1,5 @@
+// Copyright (C) 2014-20xx CEA/DEN, EDF R&D
+
 // File:        PartSetPlugin_Remove.cxx
 // Created:     20 May 2014
 // Author:      Mikhail PONIKAROV
@@ -7,22 +9,26 @@
 #include <ModelAPI_Document.h>
 #include <ModelAPI_Data.h>
 #include <ModelAPI_AttributeDocRef.h>
+#include <ModelAPI_ResultPart.h>
+#include <ModelAPI_Session.h>
 
 void PartSetPlugin_Remove::execute()
 {
-  boost::shared_ptr<ModelAPI_PluginManager> aPManager = ModelAPI_PluginManager::get();
-  boost::shared_ptr<ModelAPI_Document> aRoot = aPManager->rootDocument();
-  boost::shared_ptr<ModelAPI_Document> aCurrent;
-  boost::shared_ptr<PartSetPlugin_Part> a;
-  for(int a = aRoot->size(getGroup()) - 1; a >= 0; a--) {
-    boost::shared_ptr<ModelAPI_Feature> aFeature = aRoot->feature(getGroup(), a, true);
-    if (aFeature->getKind() == "Part") {
-      boost::shared_ptr<PartSetPlugin_Part> aPart = 
-        boost::static_pointer_cast<PartSetPlugin_Part>(aFeature);
-      if (aPart->data()->docRef(PART_ATTR_DOC_REF)->value() == aPManager->currentDocument()) {
+  std::shared_ptr<ModelAPI_Session> aPManager = ModelAPI_Session::get();
+  std::shared_ptr<ModelAPI_Document> aRoot = aPManager->moduleDocument();
+  std::shared_ptr<ModelAPI_Document> aCurrent;
+  std::shared_ptr<PartSetPlugin_Part> a;
+  for (int a = aRoot->size(ModelAPI_ResultPart::group()) - 1; a >= 0; a--) {
+    ResultPartPtr aPart = std::dynamic_pointer_cast<ModelAPI_ResultPart>(
+        aRoot->object(ModelAPI_ResultPart::group(), a));
+    if (aPart
+        && aPart->data()->document(ModelAPI_ResultPart::DOC_REF())->value()
+            == aPManager->activeDocument()) {
+      FeaturePtr aFeature = aRoot->feature(aPart);
+      if (aFeature) {
         // do remove
-        aPart->data()->docRef(PART_ATTR_DOC_REF)->value()->close();
-        aRoot->removeFeature(aPart);
+        aPart->data()->document(ModelAPI_ResultPart::DOC_REF())->value()->close();
+        aRoot->removeFeature(aFeature);
       }
     }
   }