#include <ModelAPI_ResultPart.h>
#include <ModelAPI_CompositeFeature.h>
#include <ModelAPI_Tools.h>
+#include <Events_Error.h>
#include <GeomAPI_Shape.h>
}
//******************************************************************
-bool canRename(QWidget* theParent, const ObjectPtr& theObject, const QString& theName)
+bool canRename(const ObjectPtr& theObject, const QString& theName)
{
if (std::dynamic_pointer_cast<ModelAPI_ResultParameter>(theObject).get()) {
double aValue;
ResultParameterPtr aParam;
if (ModelAPI_Tools::findVariable(theObject->document(), qPrintable(theName), aValue, aParam)) {
- QMessageBox::information(theParent, QObject::tr("Rename parameter"),
- QString(QObject::tr("Selected parameter can not be renamed to: %1. \
-There is a parameter with the same name. Its value is: %2.")).arg(qPrintable(theName)).arg(aValue));
+ QString aErrMsg(QObject::tr("Selected parameter can not be renamed to: %1. \
+ There is a parameter with the same name. Its value is: %2.").arg(qPrintable(theName)).arg(aValue));
+ // We can not use here a dialog box for message - it will crash editing process in ObjectBrowser
+ Events_Error::send(aErrMsg.toStdString());
return false;
}
}
return isSub;
}
+//**************************************************************
+bool isSubOfComposite(const ObjectPtr& theObject)
+{
+ bool isSub = false;
+ std::set<FeaturePtr> aRefFeatures;
+ refsToFeatureInFeatureDocument(theObject, aRefFeatures);
+ std::set<FeaturePtr>::const_iterator anIt = aRefFeatures.begin(),
+ aLast = aRefFeatures.end();
+ for (; anIt != aLast && !isSub; anIt++) {
+ isSub = isSubOfComposite(theObject, *anIt);
+ }
+ return isSub;
+}
+
//**************************************************************
void refsToFeatureInAllDocuments(const ObjectPtr& theSourceObject, const ObjectPtr& theObject,
std::set<FeaturePtr>& theDirectRefFeatures,
theAlreadyProcessed.insert(aFeature);
// 1. find references in the current document
+
std::set<FeaturePtr> aRefFeatures;
refsToFeatureInFeatureDocument(theObject, aRefFeatures);
std::set<FeaturePtr>::const_iterator anIt = aRefFeatures.begin(),
aLast = aRefFeatures.end();
for (; anIt != aLast; anIt++) {
+ // composite feature should not be deleted when the sub feature is to be deleted
if (!isSubOfComposite(theSourceObject, *anIt))
theDirectRefFeatures.insert(*anIt);
}