From 632c62cfb6c82f0455074f15b71f23d827876a98 Mon Sep 17 00:00:00 2001 From: wmayer Date: Thu, 12 Oct 2017 08:16:57 +0200 Subject: [PATCH] support of backward compatibility to load old fem project files --- src/Mod/Fem/App/FemAnalysis.cpp | 17 +++++++++++++++++ src/Mod/Fem/App/FemAnalysis.h | 4 ++++ src/Mod/Fem/ObjectsFem.py | 4 +--- 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/src/Mod/Fem/App/FemAnalysis.cpp b/src/Mod/Fem/App/FemAnalysis.cpp index a497144ab4..bae059412d 100644 --- a/src/Mod/Fem/App/FemAnalysis.cpp +++ b/src/Mod/Fem/App/FemAnalysis.cpp @@ -63,6 +63,19 @@ void FemAnalysis::onChanged(const Property* prop) App::DocumentObjectGroup::onChanged(prop); } +void FemAnalysis::handleChangedPropertyName(Base::XMLReader &reader, + const char * TypeName, + const char *PropName) +{ + Base::Type type = Base::Type::fromName(TypeName); + if (Group.getClassTypeId() == type && strcmp(PropName, "Member") == 0) { + Group.Restore(reader); + } + else { + App::DocumentObjectGroup::handleChangedPropertyName(reader, TypeName, PropName); + } +} + // Dummy class 'DocumentObject' in Fem namespace PROPERTY_SOURCE_ABSTRACT(Fem::DocumentObject, App::DocumentObject) @@ -75,6 +88,10 @@ PROPERTY_SOURCE_TEMPLATE(Fem::FemAnalysisPython, Fem::FemAnalysis) template<> const char* Fem::FemAnalysisPython::getViewProviderName(void) const { return "FemGui::ViewProviderFemAnalysisPython"; } + +template<> void Fem::FemAnalysisPython::Restore(Base::XMLReader& reader) { + FemAnalysis::Restore(reader); +} //template<> PyObject* Fem::FemAnalysisPython::getPyObject(void) { // if (PythonObject.is(Py::_None())) { // // ref counter is set to 1 diff --git a/src/Mod/Fem/App/FemAnalysis.h b/src/Mod/Fem/App/FemAnalysis.h index 4df6688365..1c03575935 100644 --- a/src/Mod/Fem/App/FemAnalysis.h +++ b/src/Mod/Fem/App/FemAnalysis.h @@ -60,6 +60,10 @@ public: protected: /// get called by the container when a property has changed virtual void onChanged (const App::Property* prop); + /// Support of backward compatibility + virtual void handleChangedPropertyName(Base::XMLReader &reader, + const char * TypeName, + const char *PropName); }; class AppFemExport DocumentObject : public App::DocumentObject diff --git a/src/Mod/Fem/ObjectsFem.py b/src/Mod/Fem/ObjectsFem.py index 383dc154bd..8e0921afc7 100644 --- a/src/Mod/Fem/ObjectsFem.py +++ b/src/Mod/Fem/ObjectsFem.py @@ -33,9 +33,7 @@ import FreeCAD ########## analysis objects ########## def makeAnalysis(doc, name="Analysis"): '''makeAnalysis(document, [name]): makes a Fem Analysis object''' - obj = doc.addObject("Fem::FemAnalysisPython", name) - if FreeCAD.GuiUp: - obj.ViewObject.Proxy = 0 + obj = doc.addObject("Fem::FemAnalysis", name) return obj