diff --git a/src/Mod/Fem/Gui/ViewProviderAnalysis.cpp b/src/Mod/Fem/Gui/ViewProviderAnalysis.cpp index 08bea1e56f..108bdf1d67 100644 --- a/src/Mod/Fem/Gui/ViewProviderAnalysis.cpp +++ b/src/Mod/Fem/Gui/ViewProviderAnalysis.cpp @@ -33,13 +33,11 @@ #include #include - #include #include #include #include #include - #include #include #include diff --git a/src/Mod/Fem/Gui/ViewProviderFemPostFilter.cpp b/src/Mod/Fem/Gui/ViewProviderFemPostFilter.cpp index ec12139c86..7edfb2fadd 100644 --- a/src/Mod/Fem/Gui/ViewProviderFemPostFilter.cpp +++ b/src/Mod/Fem/Gui/ViewProviderFemPostFilter.cpp @@ -20,12 +20,13 @@ * * ***************************************************************************/ - #include "PreCompiled.h" + +#include + #include "ViewProviderFemPostFilter.h" #include "TaskPostBoxes.h" -#include -#include + using namespace FemGui; diff --git a/src/Mod/Fem/Gui/ViewProviderFemPostFunction.cpp b/src/Mod/Fem/Gui/ViewProviderFemPostFunction.cpp index d1472dd05c..336ff942ca 100644 --- a/src/Mod/Fem/Gui/ViewProviderFemPostFunction.cpp +++ b/src/Mod/Fem/Gui/ViewProviderFemPostFunction.cpp @@ -20,55 +20,45 @@ * * ***************************************************************************/ - #include "PreCompiled.h" #ifndef _PreComp_ +# include +# include +# include +# include +# include +# include # include -# include -# include # include +# include # include # include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include +# include # include +# include # include # include #endif -#include "ViewProviderFemPostFunction.h" -#include "TaskPostBoxes.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include #include #include +#include +#include +#include +#include +#include + +#include "ViewProviderFemPostFunction.h" +#include "TaskPostBoxes.h" #include "ui_PlaneWidget.h" #include "ui_SphereWidget.h" + using namespace FemGui; namespace bp = boost::placeholders; @@ -134,7 +124,47 @@ void ViewProviderFemPostFunctionProvider::updateSize() { } } +bool ViewProviderFemPostFunctionProvider::onDelete(const std::vector&) +{ + // warn the user if the object has childs + auto objs = claimChildren(); + if (!objs.empty()) + { + // generate dialog + QString bodyMessage; + QTextStream bodyMessageStream(&bodyMessage); + bodyMessageStream << qApp->translate("Std_Delete", + "The functions list is not empty, therefore the\nfollowing referencing objects might be lost:"); + bodyMessageStream << '\n'; + for (auto ObjIterator : objs) + bodyMessageStream << '\n' << QString::fromUtf8(ObjIterator->Label.getValue()); + bodyMessageStream << "\n\n" << QObject::tr("Are you sure you want to continue?"); + // show and evaluate the dialog + int DialogResult = QMessageBox::warning(Gui::getMainWindow(), + qApp->translate("Std_Delete", "Object dependencies"), bodyMessage, + QMessageBox::Yes, QMessageBox::No); + if (DialogResult == QMessageBox::Yes) + return true; + else + return false; + } + else { + return true; + } +} + +bool ViewProviderFemPostFunctionProvider::canDelete(App::DocumentObject* obj) const +{ + // deletions of objects from a FemFunction don't necesarily destroy anything + // thus we can pass this action + // we can warn the user if necessary in the object's ViewProvider in the onDelete() function + Q_UNUSED(obj) + return true; +} + + +// *************************************************************************** PROPERTY_SOURCE(FemGui::ViewProviderFemPostFunction, Gui::ViewProviderDocumentObject) @@ -217,13 +247,11 @@ bool ViewProviderFemPostFunction::doubleClicked(void) { return true; } - SoTransformManip* ViewProviderFemPostFunction::setupManipulator() { return new SoCenterballManip; } - std::vector ViewProviderFemPostFunction::getDisplayModes(void) const { std::vector StrList; @@ -322,7 +350,6 @@ void ViewProviderFemPostFunction::onChanged(const App::Property* prop) { } - // *************************************************************************** PROPERTY_SOURCE(FemGui::ViewProviderFemPostPlaneFunction, FemGui::ViewProviderFemPostFunction) @@ -461,7 +488,6 @@ void PlaneWidget::originChanged(double) { } - // *************************************************************************** PROPERTY_SOURCE(FemGui::ViewProviderFemPostSphereFunction, FemGui::ViewProviderFemPostFunction) diff --git a/src/Mod/Fem/Gui/ViewProviderFemPostFunction.h b/src/Mod/Fem/Gui/ViewProviderFemPostFunction.h index 9761c6cab7..6444b9427c 100644 --- a/src/Mod/Fem/Gui/ViewProviderFemPostFunction.h +++ b/src/Mod/Fem/Gui/ViewProviderFemPostFunction.h @@ -83,6 +83,11 @@ public: App::PropertyFloat SizeY; App::PropertyFloat SizeZ; + // handling when object is deleted + virtual bool onDelete(const std::vector&); + /// asks view provider if the given object can be deleted + virtual bool canDelete(App::DocumentObject* obj) const; + protected: virtual std::vector< App::DocumentObject* > claimChildren(void) const; virtual std::vector< App::DocumentObject* > claimChildren3D(void) const;