From 001135d68fd57af615a978c0120a110f71316fbd Mon Sep 17 00:00:00 2001 From: wmayer Date: Fri, 6 Oct 2017 22:24:54 +0200 Subject: [PATCH] fixes #0003164: Elements of an analysis including the mesh and constraints should be hidden when hiding the analysis (Space) --- src/Mod/Fem/Gui/ViewProviderAnalysis.cpp | 28 ++++++++++++++++++++++-- src/Mod/Fem/Gui/ViewProviderAnalysis.h | 11 ++++++++-- src/Mod/Fem/Gui/ViewProviderSolver.cpp | 8 +++++-- src/Mod/Fem/Gui/ViewProviderSolver.h | 8 ++++--- src/Mod/Fem/ObjectsFem.py | 2 ++ 5 files changed, 48 insertions(+), 9 deletions(-) diff --git a/src/Mod/Fem/Gui/ViewProviderAnalysis.cpp b/src/Mod/Fem/Gui/ViewProviderAnalysis.cpp index 82161f9163..d60587e000 100644 --- a/src/Mod/Fem/Gui/ViewProviderAnalysis.cpp +++ b/src/Mod/Fem/Gui/ViewProviderAnalysis.cpp @@ -31,6 +31,7 @@ #endif #include "ViewProviderAnalysis.h" +#include #include #include #include @@ -74,9 +75,32 @@ bool ViewProviderFemAnalysis::doubleClicked(void) std::vector ViewProviderFemAnalysis::claimChildren(void)const { - std::vector temp(static_cast(getObject())->Member.getValues()); + return static_cast(getObject())->Member.getValues(); +} - return temp; +std::vector ViewProviderFemAnalysis::getDisplayModes(void) const +{ + return { "Analysis" }; +} + +void ViewProviderFemAnalysis::hide(void) +{ + Gui::ViewProviderDocumentObject::hide(); + std::vector temp(static_cast + (getObject())->Member.getValues()); + for (auto it : temp) { + Gui::Application::Instance->hideViewProvider(it); + } +} + +void ViewProviderFemAnalysis::show(void) +{ + Gui::ViewProviderDocumentObject::show(); + std::vector temp(static_cast + (getObject())->Member.getValues()); + for (auto it : temp) { + Gui::Application::Instance->showViewProvider(it); + } } void ViewProviderFemAnalysis::setupContextMenu(QMenu* menu, QObject* , const char* ) diff --git a/src/Mod/Fem/Gui/ViewProviderAnalysis.h b/src/Mod/Fem/Gui/ViewProviderAnalysis.h index 5b92fba7b6..3301fa0f6f 100644 --- a/src/Mod/Fem/Gui/ViewProviderAnalysis.h +++ b/src/Mod/Fem/Gui/ViewProviderAnalysis.h @@ -51,9 +51,16 @@ public: void setupContextMenu(QMenu*, QObject*, const char*); virtual bool onDelete(const std::vector &); - + /// A list of all possible display modes + virtual std::vector getDisplayModes(void) const; // shows solid in the tree - virtual bool isShow(void) const{return true;} + virtual bool isShow(void) const { + return Visibility.getValue(); + } + /// Hide the object in the view + virtual void hide(void); + /// Show the object in the view + virtual void show(void); /** @name Drag and drop */ //@{ diff --git a/src/Mod/Fem/Gui/ViewProviderSolver.cpp b/src/Mod/Fem/Gui/ViewProviderSolver.cpp index 89cdc86f82..3e91ff99ac 100644 --- a/src/Mod/Fem/Gui/ViewProviderSolver.cpp +++ b/src/Mod/Fem/Gui/ViewProviderSolver.cpp @@ -46,8 +46,7 @@ PROPERTY_SOURCE(FemGui::ViewProviderSolver, Gui::ViewProviderDocumentObject) ViewProviderSolver::ViewProviderSolver() { - sPixmap = "fem-solver"; - + sPixmap = "fem-solver"; } ViewProviderSolver::~ViewProviderSolver() @@ -55,6 +54,11 @@ ViewProviderSolver::~ViewProviderSolver() } +std::vector ViewProviderSolver::getDisplayModes(void) const +{ + return { "Solver" }; +} + // Python feature ----------------------------------------------------------------------- diff --git a/src/Mod/Fem/Gui/ViewProviderSolver.h b/src/Mod/Fem/Gui/ViewProviderSolver.h index f818df70ef..69118929a2 100644 --- a/src/Mod/Fem/Gui/ViewProviderSolver.h +++ b/src/Mod/Fem/Gui/ViewProviderSolver.h @@ -52,9 +52,11 @@ public: ~ViewProviderSolver(); // shows solid in the tree - virtual bool isShow(void) const{return true;} -protected: - + virtual bool isShow(void) const { + return Visibility.getValue(); + } + /// A list of all possible display modes + virtual std::vector getDisplayModes(void) const; }; typedef Gui::ViewProviderPythonFeatureT ViewProviderSolverPython; diff --git a/src/Mod/Fem/ObjectsFem.py b/src/Mod/Fem/ObjectsFem.py index 5579fcbb4f..303e8d9caa 100644 --- a/src/Mod/Fem/ObjectsFem.py +++ b/src/Mod/Fem/ObjectsFem.py @@ -34,6 +34,8 @@ import FreeCAD def makeAnalysis(doc, name="Analysis"): '''makeAnalysis(name): makes a Fem Analysis object''' obj = doc.addObject("Fem::FemAnalysisPython", name) + if FreeCAD.GuiUp: + obj.ViewObject.Proxy=0 return obj