From 06da15e643a66a472e2028e1ff53262c69b2adc5 Mon Sep 17 00:00:00 2001 From: wmayer Date: Sun, 6 Nov 2016 17:16:50 +0100 Subject: [PATCH] + add convenience method recomputeFeature() + make method recompute() protected --- src/App/DocumentObject.cpp | 8 ++++++++ src/App/DocumentObject.h | 7 +++++-- src/Mod/Drawing/App/FeatureView.h | 10 +++++----- src/Mod/Drawing/Gui/TaskOrthoViews.cpp | 2 +- src/Mod/Fem/Gui/TaskDlgCreateNodeSet.cpp | 2 +- src/Mod/Fem/Gui/TaskDlgMeshShapeNetgen.cpp | 8 ++++---- src/Mod/Part/App/PartFeature.h | 8 ++++---- src/Mod/PartDesign/Gui/TaskPrimitiveParameters.cpp | 10 ++++------ src/Mod/Robot/Gui/TaskDlgEdge2Trac.cpp | 2 +- src/Mod/Robot/Gui/TaskDlgTrajectoryDressUp.cpp | 4 ++-- src/Mod/TechDraw/App/DrawHatch.cpp | 2 +- src/Mod/TechDraw/App/DrawProjGroup.cpp | 4 ++-- src/Mod/TechDraw/Gui/TaskProjGroup.cpp | 6 +++--- 13 files changed, 41 insertions(+), 32 deletions(-) diff --git a/src/App/DocumentObject.cpp b/src/App/DocumentObject.cpp index 6e1417be56..cadeba482a 100644 --- a/src/App/DocumentObject.cpp +++ b/src/App/DocumentObject.cpp @@ -102,6 +102,14 @@ DocumentObjectExecReturn *DocumentObject::execute(void) return StdReturn; } +bool DocumentObject::recomputeFeature() +{ + Document* doc = this->getDocument(); + if (doc) + doc->recomputeFeature(this); + return isValid(); +} + short DocumentObject::mustExecute(void) const { if(isTouched()) diff --git a/src/App/DocumentObject.h b/src/App/DocumentObject.h index 6e1d997f36..3a9007c4d2 100644 --- a/src/App/DocumentObject.h +++ b/src/App/DocumentObject.h @@ -120,8 +120,6 @@ public: bool isRestoring() const {return StatusBits.test(4);} /// returns true if this objects is currently restoring from file bool isDeleting() const {return StatusBits.test(5);} - /// recompute only this object - virtual App::DocumentObjectExecReturn *recompute(void); /// return the status bits unsigned long getStatus() const {return StatusBits.to_ulong();} bool testStatus(ObjectStatus pos) const {return StatusBits.test((size_t)pos);} @@ -162,6 +160,9 @@ public: */ virtual short mustExecute(void) const; + /// Recompute only this feature + bool recomputeFeature(); + /// get the status Message const char *getStatusString(void) const; @@ -197,6 +198,8 @@ public: const std::string & getOldLabel() const { return oldLabel; } protected: + /// recompute only this object + virtual App::DocumentObjectExecReturn *recompute(void); /** get called by the document to recompute this feature * Normaly this method get called in the processing of * Document::recompute(). diff --git a/src/Mod/Drawing/App/FeatureView.h b/src/Mod/Drawing/App/FeatureView.h index 3be5f9a878..ee249f8b33 100644 --- a/src/Mod/Drawing/App/FeatureView.h +++ b/src/Mod/Drawing/App/FeatureView.h @@ -52,18 +52,18 @@ public: App::PropertyString ViewResult; App::PropertyBool Visible; + /// returns the type name of the ViewProvider + virtual const char* getViewProviderName(void) const { + return "DrawingGui::ViewProviderDrawingView"; + } +protected: /** @name methods overide Feature */ //@{ /// recalculate the Feature virtual App::DocumentObjectExecReturn *recompute(void); virtual App::DocumentObjectExecReturn *execute(void); //@} - - /// returns the type name of the ViewProvider - virtual const char* getViewProviderName(void) const { - return "DrawingGui::ViewProviderDrawingView"; - } }; typedef App::FeaturePythonT FeatureViewPython; diff --git a/src/Mod/Drawing/Gui/TaskOrthoViews.cpp b/src/Mod/Drawing/Gui/TaskOrthoViews.cpp index 10d20ef444..64dc5efcea 100644 --- a/src/Mod/Drawing/Gui/TaskOrthoViews.cpp +++ b/src/Mod/Drawing/Gui/TaskOrthoViews.cpp @@ -314,7 +314,7 @@ OrthoViews::~OrthoViews() for (int i = views.size() - 1; i >= 0; i--) delete views[i]; - page->recompute(); + page->recomputeFeature(); } void OrthoViews::slotDeletedDocument(const App::Document& Obj) diff --git a/src/Mod/Fem/Gui/TaskDlgCreateNodeSet.cpp b/src/Mod/Fem/Gui/TaskDlgCreateNodeSet.cpp index 8ec4ff22cf..a2e6dbf88e 100644 --- a/src/Mod/Fem/Gui/TaskDlgCreateNodeSet.cpp +++ b/src/Mod/Fem/Gui/TaskDlgCreateNodeSet.cpp @@ -75,7 +75,7 @@ bool TaskDlgCreateNodeSet::accept() { try { FemSetNodesObject->Nodes.setValues(param->tempSet); - FemSetNodesObject->recompute(); + FemSetNodesObject->recomputeFeature(); //Gui::Document* doc = Gui::Application::Instance->activeDocument(); //if(doc) // doc->resetEdit(); diff --git a/src/Mod/Fem/Gui/TaskDlgMeshShapeNetgen.cpp b/src/Mod/Fem/Gui/TaskDlgMeshShapeNetgen.cpp index 73ae7f453a..8d046ca33a 100644 --- a/src/Mod/Fem/Gui/TaskDlgMeshShapeNetgen.cpp +++ b/src/Mod/Fem/Gui/TaskDlgMeshShapeNetgen.cpp @@ -101,11 +101,11 @@ bool TaskDlgMeshShapeNetgen::accept() if(param->touched) { Gui::WaitCursor wc; - App::DocumentObjectExecReturn* ret = FemMeshShapeNetgenObject->recompute(); - if (ret) { + bool ret = FemMeshShapeNetgenObject->recomputeFeature(); + if (!ret) { wc.restoreCursor(); - QMessageBox::critical(Gui::getMainWindow(), tr("Meshing failure"), QString::fromStdString(ret->Why)); - delete ret; + QMessageBox::critical(Gui::getMainWindow(), tr("Meshing failure"), + QString::fromStdString(FemMeshShapeNetgenObject->getStatusString())); return true; } } diff --git a/src/Mod/Part/App/PartFeature.h b/src/Mod/Part/App/PartFeature.h index 892c480a55..f1284b2723 100644 --- a/src/Mod/Part/App/PartFeature.h +++ b/src/Mod/Part/App/PartFeature.h @@ -55,10 +55,6 @@ public: /** @name methods override feature */ //@{ - /// recalculate the feature - /// recompute only this object - virtual App::DocumentObjectExecReturn *recompute(void); - virtual App::DocumentObjectExecReturn *execute(void); virtual short mustExecute(void) const; //@} @@ -71,6 +67,10 @@ public: TopLoc_Location getLocation() const; protected: + /// recompute only this object + virtual App::DocumentObjectExecReturn *recompute(void); + /// recalculate the feature + virtual App::DocumentObjectExecReturn *execute(void); virtual void onChanged(const App::Property* prop); /** * Build a history of changes diff --git a/src/Mod/PartDesign/Gui/TaskPrimitiveParameters.cpp b/src/Mod/PartDesign/Gui/TaskPrimitiveParameters.cpp index f38743cf1c..93fbe28e0e 100644 --- a/src/Mod/PartDesign/Gui/TaskPrimitiveParameters.cpp +++ b/src/Mod/PartDesign/Gui/TaskPrimitiveParameters.cpp @@ -638,15 +638,13 @@ TaskPrimitiveParameters::~TaskPrimitiveParameters() } -void TaskPrimitiveParameters::objectChanged(const App::DocumentObject& obj, const App::Property& p) { - - if(&obj == cs && strcmp(p.getName(), "Placement")==0) { - - vp_prm->getObject()->recompute(); +void TaskPrimitiveParameters::objectChanged(const App::DocumentObject& obj, const App::Property& p) +{ + if (&obj == cs && strcmp(p.getName(), "Placement")==0) { + vp_prm->getObject()->recomputeFeature(); } } - bool TaskPrimitiveParameters::accept() { primitive->setPrimitive(QString::fromUtf8(vp_prm->getObject()->getNameInDocument())); diff --git a/src/Mod/Robot/Gui/TaskDlgEdge2Trac.cpp b/src/Mod/Robot/Gui/TaskDlgEdge2Trac.cpp index 2c0079ac2a..76a95f89bd 100644 --- a/src/Mod/Robot/Gui/TaskDlgEdge2Trac.cpp +++ b/src/Mod/Robot/Gui/TaskDlgEdge2Trac.cpp @@ -96,7 +96,7 @@ bool TaskDlgEdge2Trac::accept() try { if (select->isSelectionValid()){ select->accept(); - Edge2TaskObject->recompute(); + Edge2TaskObject->recomputeFeature(); Gui::Document* doc = Gui::Application::Instance->activeDocument(); if(doc) doc->resetEdit(); diff --git a/src/Mod/Robot/Gui/TaskDlgTrajectoryDressUp.cpp b/src/Mod/Robot/Gui/TaskDlgTrajectoryDressUp.cpp index efeab2e063..af317c3473 100644 --- a/src/Mod/Robot/Gui/TaskDlgTrajectoryDressUp.cpp +++ b/src/Mod/Robot/Gui/TaskDlgTrajectoryDressUp.cpp @@ -69,14 +69,14 @@ void TaskDlgTrajectoryDressUp::clicked(int button) // transfert the values to the object param->writeValues(); // May throw an exception which we must handle here - pcObject->recompute(); + pcObject->recomputeFeature(); } } bool TaskDlgTrajectoryDressUp::accept() { param->writeValues(); - pcObject->recompute(); + pcObject->recomputeFeature(); Gui::Document* doc = Gui::Application::Instance->activeDocument(); if(doc) diff --git a/src/Mod/TechDraw/App/DrawHatch.cpp b/src/Mod/TechDraw/App/DrawHatch.cpp index 3e83afd301..9fbad857b5 100644 --- a/src/Mod/TechDraw/App/DrawHatch.cpp +++ b/src/Mod/TechDraw/App/DrawHatch.cpp @@ -94,7 +94,7 @@ App::DocumentObjectExecReturn *DrawHatch::execute(void) DrawViewPart* parent = getSourceView(); if (parent) { parent->touch(); - parent->recompute(); + parent->recomputeFeature(); } return App::DocumentObject::StdReturn; } diff --git a/src/Mod/TechDraw/App/DrawProjGroup.cpp b/src/Mod/TechDraw/App/DrawProjGroup.cpp index a232c48c29..9c9304b615 100644 --- a/src/Mod/TechDraw/App/DrawProjGroup.cpp +++ b/src/Mod/TechDraw/App/DrawProjGroup.cpp @@ -305,7 +305,7 @@ App::DocumentObject * DrawProjGroup::addProjection(const char *viewProjType) addView(view); //from DrawViewCollection - add to ProjGroup Views moveToCentre(); - view->recompute(); + view->recomputeFeature(); } return view; @@ -641,7 +641,7 @@ void DrawProjGroup::updateChildren(double scale) if(std::abs(view->Scale.getValue() - scale) > FLT_EPSILON) { view->Scale.setValue(scale); } - view->recompute(); + view->recomputeFeature(); } } } diff --git a/src/Mod/TechDraw/Gui/TaskProjGroup.cpp b/src/Mod/TechDraw/Gui/TaskProjGroup.cpp index ca6d6003f5..9fd34ebe5a 100644 --- a/src/Mod/TechDraw/Gui/TaskProjGroup.cpp +++ b/src/Mod/TechDraw/Gui/TaskProjGroup.cpp @@ -128,7 +128,7 @@ void TaskProjGroup::viewToggled(bool toggle) changed = true; } if (changed) { - multiView->recompute(); + multiView->recomputeFeature(); if (multiView->ScaleType.isValue("Automatic")) { double scale = multiView->Scale.getValue(); setFractionalScale(scale); @@ -229,7 +229,7 @@ void TaskProjGroup::scaleTypeChanged(int index) return; } - multiView->recompute(); + multiView->recomputeFeature(); Gui::Command::updateActive(); } @@ -304,7 +304,7 @@ void TaskProjGroup::scaleManuallyChanged(int i) double scale = (double) a / (double) b; Gui::Command::doCommand(Gui::Command::Doc, "App.activeDocument().%s.Scale = %f", multiView->getNameInDocument() , scale); - multiView->recompute(); + multiView->recomputeFeature(); Gui::Command::updateActive(); }