Salome HOME
Fix for the issue #905
authormpv <mpv@opencascade.com>
Thu, 10 Sep 2015 12:09:16 +0000 (15:09 +0300)
committermpv <mpv@opencascade.com>
Thu, 10 Sep 2015 12:09:16 +0000 (15:09 +0300)
src/ModuleBase/ModuleBase_OperationFeature.cpp
src/PythonAPI/geom/__init__.py
src/XGUI/XGUI_Workshop.cpp

index 18eba405d98e0b535329c078d2f06e7c8d580251..797f9e2ab19cfd0b2fba3a76fc3506a6e9a8ff9c 100755 (executable)
@@ -195,7 +195,9 @@ void ModuleBase_OperationFeature::abort()
   stopOperation();
   // is is necessary to deactivate current widgets before the model operation is aborted
   // because abort removes the feature and activated filters should not check it
-  propertyPanel()->cleanContent();
+  if (aPropertyPanel) { // feature may be not created (plugin load fail)
+    aPropertyPanel->cleanContent();
+  }
 
   aMgr->abortOperation();
   emit stopped();
index 1ba89b9d9123f22c5d0bee13facae4185a98e818..c6faa27e3512780b64ac000fa1f411a8e30a45e9 100644 (file)
@@ -19,7 +19,6 @@ from GeomAPI import GeomAPI_Shape  as Shape
 # Swigged interfaces to Modeling Algorithms
 
 from GeomAlgoAPI import GeomAlgoAPI_Boolean   as Boolean
-from GeomAlgoAPI import GeomAlgoAPI_Extrusion as Extrusion
 
 
 # Emulation of interfaces not yet swigged
index 6dfaa1765a17b76c76a8d7456e2835bf92a19d13..38ca4d9340844358fa33782bca4267c785ee7423 100644 (file)
@@ -495,14 +495,16 @@ void XGUI_Workshop::onOperationStopped(ModuleBase_Operation* theOperation)
   // They were deactivated on operation start or an object redisplay
   QObjectPtrList anObjects;
   FeaturePtr aFeature = aFOperation->feature();
-  if (myDisplayer->isVisible(aFeature) && !myDisplayer->isActive(aFeature))
-    anObjects.append(aFeature);
-  std::list<ResultPtr> aResults = aFeature->results();
-  std::list<ResultPtr>::const_iterator aIt;
-  for (aIt = aResults.begin(); aIt != aResults.end(); ++aIt) {
-    ResultPtr anObject = *aIt;
-    if (myDisplayer->isVisible(anObject) && !myDisplayer->isActive(anObject)) {
-      anObjects.append(anObject);
+  if (aFeature.get()) { // feature may be not created (plugin load fail)
+    if (myDisplayer->isVisible(aFeature) && !myDisplayer->isActive(aFeature))
+      anObjects.append(aFeature);
+    std::list<ResultPtr> aResults = aFeature->results();
+    std::list<ResultPtr>::const_iterator aIt;
+    for (aIt = aResults.begin(); aIt != aResults.end(); ++aIt) {
+      ResultPtr anObject = *aIt;
+      if (myDisplayer->isVisible(anObject) && !myDisplayer->isActive(anObject)) {
+        anObjects.append(anObject);
+      }
     }
   }
   QIntList aModes;