From 1b1bd5f17e7f3097727e752e92bae42a8478609d Mon Sep 17 00:00:00 2001 From: Alexander Golubev Date: Fri, 31 Jul 2015 14:00:14 +0300 Subject: [PATCH] PartDesign/Gui: make Transformed ViewProviders use common code with other --- .../Gui/ViewProviderLinearPattern.cpp | 32 ++---------------- .../Gui/ViewProviderLinearPattern.h | 3 +- .../PartDesign/Gui/ViewProviderMirrored.cpp | 32 ++---------------- src/Mod/PartDesign/Gui/ViewProviderMirrored.h | 3 +- .../Gui/ViewProviderMultiTransform.cpp | 32 ++---------------- .../Gui/ViewProviderMultiTransform.h | 4 ++- .../Gui/ViewProviderPolarPattern.cpp | 32 ++---------------- .../PartDesign/Gui/ViewProviderPolarPattern.h | 3 +- src/Mod/PartDesign/Gui/ViewProviderScaled.cpp | 32 ++---------------- src/Mod/PartDesign/Gui/ViewProviderScaled.h | 3 +- .../Gui/ViewProviderTransformed.cpp | 33 ++----------------- 11 files changed, 24 insertions(+), 185 deletions(-) diff --git a/src/Mod/PartDesign/Gui/ViewProviderLinearPattern.cpp b/src/Mod/PartDesign/Gui/ViewProviderLinearPattern.cpp index ab22de86d..b51c3294f 100644 --- a/src/Mod/PartDesign/Gui/ViewProviderLinearPattern.cpp +++ b/src/Mod/PartDesign/Gui/ViewProviderLinearPattern.cpp @@ -28,39 +28,11 @@ #include "ViewProviderLinearPattern.h" #include "TaskLinearPatternParameters.h" -#include -#include -#include -#include -#include using namespace PartDesignGui; PROPERTY_SOURCE(PartDesignGui::ViewProviderLinearPattern,PartDesignGui::ViewProviderTransformed) -bool ViewProviderLinearPattern::setEdit(int ModNum) -{ - ViewProviderTransformed::setEdit(ModNum); - - if (ModNum == ViewProvider::Default ) { - TaskDlgLinearPatternParameters *linearpatternDlg = NULL; - - if (checkDlgOpen(linearpatternDlg)) { - // always change to PartDesign WB, remember where we come from - oldWb = Gui::Command::assureWorkbench("PartDesignWorkbench"); - - // start the edit dialog - if (linearpatternDlg) - Gui::Control().showDialog(linearpatternDlg); - else - Gui::Control().showDialog(new TaskDlgLinearPatternParameters(this)); - - return true; - } else { - return false; - } - } - else { - return ViewProviderPart::setEdit(ModNum); - } +TaskDlgFeatureParameters *ViewProviderLinearPattern::getEditDialog() { + return new TaskDlgLinearPatternParameters (this); } diff --git a/src/Mod/PartDesign/Gui/ViewProviderLinearPattern.h b/src/Mod/PartDesign/Gui/ViewProviderLinearPattern.h index 04a4eef4d..9e4dc4a58 100644 --- a/src/Mod/PartDesign/Gui/ViewProviderLinearPattern.h +++ b/src/Mod/PartDesign/Gui/ViewProviderLinearPattern.h @@ -37,7 +37,8 @@ public: sPixmap = "PartDesign_LinearPattern.svg"; } protected: - virtual bool setEdit(int ModNum); + /// Returns a newly create dialog for the part to be placed in the task view + virtual TaskDlgFeatureParameters *getEditDialog(); }; diff --git a/src/Mod/PartDesign/Gui/ViewProviderMirrored.cpp b/src/Mod/PartDesign/Gui/ViewProviderMirrored.cpp index 8c7384cb2..b41070c76 100644 --- a/src/Mod/PartDesign/Gui/ViewProviderMirrored.cpp +++ b/src/Mod/PartDesign/Gui/ViewProviderMirrored.cpp @@ -28,39 +28,11 @@ #include "ViewProviderMirrored.h" #include "TaskMirroredParameters.h" -#include -#include -#include -#include -#include using namespace PartDesignGui; PROPERTY_SOURCE(PartDesignGui::ViewProviderMirrored,PartDesignGui::ViewProviderTransformed) -bool ViewProviderMirrored::setEdit(int ModNum) -{ - ViewProviderTransformed::setEdit(ModNum); - - if (ModNum == ViewProvider::Default ) { - TaskDlgMirroredParameters *mirroredDlg = NULL; - - if (checkDlgOpen(mirroredDlg)) { - // always change to PartDesign WB, remember where we come from - oldWb = Gui::Command::assureWorkbench("PartDesignWorkbench"); - - // start the edit dialog - if (mirroredDlg) - Gui::Control().showDialog(mirroredDlg); - else - Gui::Control().showDialog(new TaskDlgMirroredParameters(this)); - - return true; - } else { - return false; - } - } - else { - return ViewProviderPart::setEdit(ModNum); - } +TaskDlgFeatureParameters *ViewProviderMirrored::getEditDialog() { + return new TaskDlgMirroredParameters (this); } diff --git a/src/Mod/PartDesign/Gui/ViewProviderMirrored.h b/src/Mod/PartDesign/Gui/ViewProviderMirrored.h index 0bbb3018d..a64975121 100644 --- a/src/Mod/PartDesign/Gui/ViewProviderMirrored.h +++ b/src/Mod/PartDesign/Gui/ViewProviderMirrored.h @@ -38,7 +38,8 @@ public: } protected: - virtual bool setEdit(int ModNum); + /// Returns a newly create dialog for the part to be placed in the task view + virtual TaskDlgFeatureParameters *getEditDialog(); }; diff --git a/src/Mod/PartDesign/Gui/ViewProviderMultiTransform.cpp b/src/Mod/PartDesign/Gui/ViewProviderMultiTransform.cpp index 72c777b2c..6feef1e93 100644 --- a/src/Mod/PartDesign/Gui/ViewProviderMultiTransform.cpp +++ b/src/Mod/PartDesign/Gui/ViewProviderMultiTransform.cpp @@ -29,40 +29,14 @@ #include "ViewProviderMultiTransform.h" #include "TaskMultiTransformParameters.h" #include -#include -#include #include -#include using namespace PartDesignGui; PROPERTY_SOURCE(PartDesignGui::ViewProviderMultiTransform,PartDesignGui::ViewProviderTransformed) -bool ViewProviderMultiTransform::setEdit(int ModNum) -{ - ViewProviderTransformed::setEdit(ModNum); - - if (ModNum == ViewProvider::Default ) { - TaskDlgMultiTransformParameters *multitransformDlg = NULL; - - if (checkDlgOpen(multitransformDlg)) { - // always change to PartDesign WB, remember where we come from - oldWb = Gui::Command::assureWorkbench("PartDesignWorkbench"); - - // start the edit dialog - if (multitransformDlg) - Gui::Control().showDialog(multitransformDlg); - else - Gui::Control().showDialog(new TaskDlgMultiTransformParameters(this)); - - return true; - } else { - return false; - } - } - else { - return ViewProviderPart::setEdit(ModNum); - } +TaskDlgFeatureParameters *ViewProviderMultiTransform::getEditDialog() { + return new TaskDlgMultiTransformParameters (this); } std::vector ViewProviderMultiTransform::claimChildren(void) const @@ -80,7 +54,7 @@ bool ViewProviderMultiTransform::onDelete(const std::vector &svec) PartDesign::MultiTransform* pcMultiTransform = static_cast(getObject()); std::vector transformFeatures = pcMultiTransform->Transformations.getValues(); - // if abort command deleted the object the transformed features must be deleted, too + // if the multitransform object was deleted the transformed features must be deleted, too for (std::vector::const_iterator it = transformFeatures.begin(); it != transformFeatures.end(); ++it) { if ((*it) != NULL) diff --git a/src/Mod/PartDesign/Gui/ViewProviderMultiTransform.h b/src/Mod/PartDesign/Gui/ViewProviderMultiTransform.h index 261497a0c..acd4a41fd 100644 --- a/src/Mod/PartDesign/Gui/ViewProviderMultiTransform.h +++ b/src/Mod/PartDesign/Gui/ViewProviderMultiTransform.h @@ -41,7 +41,9 @@ public: virtual bool onDelete(const std::vector &); protected: - virtual bool setEdit(int ModNum); + /// Returns a newly create dialog for the part to be placed in the task view + virtual TaskDlgFeatureParameters *getEditDialog(); + }; diff --git a/src/Mod/PartDesign/Gui/ViewProviderPolarPattern.cpp b/src/Mod/PartDesign/Gui/ViewProviderPolarPattern.cpp index d72468c48..f0081291b 100644 --- a/src/Mod/PartDesign/Gui/ViewProviderPolarPattern.cpp +++ b/src/Mod/PartDesign/Gui/ViewProviderPolarPattern.cpp @@ -28,39 +28,11 @@ #include "ViewProviderPolarPattern.h" #include "TaskPolarPatternParameters.h" -#include -#include -#include -#include -#include using namespace PartDesignGui; PROPERTY_SOURCE(PartDesignGui::ViewProviderPolarPattern,PartDesignGui::ViewProviderTransformed) -bool ViewProviderPolarPattern::setEdit(int ModNum) -{ - ViewProviderTransformed::setEdit(ModNum); - - if (ModNum == ViewProvider::Default ) { - TaskDlgPolarPatternParameters *polarpatternDlg = NULL; - - if (checkDlgOpen(polarpatternDlg)) { - // always change to PartDesign WB, remember where we come from - oldWb = Gui::Command::assureWorkbench("PartDesignWorkbench"); - - // start the edit dialog - if (polarpatternDlg) - Gui::Control().showDialog(polarpatternDlg); - else - Gui::Control().showDialog(new TaskDlgPolarPatternParameters(this)); - - return true; - } else { - return false; - } - } - else { - return ViewProviderPart::setEdit(ModNum); - } +TaskDlgFeatureParameters *ViewProviderPolarPattern::getEditDialog() { + return new TaskDlgPolarPatternParameters (this); } diff --git a/src/Mod/PartDesign/Gui/ViewProviderPolarPattern.h b/src/Mod/PartDesign/Gui/ViewProviderPolarPattern.h index cf0dc4984..6fad87d19 100644 --- a/src/Mod/PartDesign/Gui/ViewProviderPolarPattern.h +++ b/src/Mod/PartDesign/Gui/ViewProviderPolarPattern.h @@ -37,7 +37,8 @@ public: sPixmap = "PartDesign_PolarPattern.svg"; } protected: - virtual bool setEdit(int ModNum); + /// Returns a newly create dialog for the part to be placed in the task view + virtual TaskDlgFeatureParameters *getEditDialog(); }; diff --git a/src/Mod/PartDesign/Gui/ViewProviderScaled.cpp b/src/Mod/PartDesign/Gui/ViewProviderScaled.cpp index ff09edb24..8d15c6235 100644 --- a/src/Mod/PartDesign/Gui/ViewProviderScaled.cpp +++ b/src/Mod/PartDesign/Gui/ViewProviderScaled.cpp @@ -28,39 +28,11 @@ #include "ViewProviderScaled.h" #include "TaskScaledParameters.h" -#include -#include -#include -#include -#include using namespace PartDesignGui; PROPERTY_SOURCE(PartDesignGui::ViewProviderScaled,PartDesignGui::ViewProviderTransformed) -bool ViewProviderScaled::setEdit(int ModNum) -{ - ViewProviderTransformed::setEdit(ModNum); - - if (ModNum == ViewProvider::Default ) { - TaskDlgScaledParameters *scaledDlg = NULL; - - if (checkDlgOpen(scaledDlg)) { - // always change to PartDesign WB, remember where we come from - oldWb = Gui::Command::assureWorkbench("PartDesignWorkbench"); - - // start the edit dialog - if (scaledDlg) - Gui::Control().showDialog(scaledDlg); - else - Gui::Control().showDialog(new TaskDlgScaledParameters(this)); - - return true; - } else { - return false; - } - } - else { - return ViewProviderPart::setEdit(ModNum); - } +TaskDlgFeatureParameters *ViewProviderScaled::getEditDialog() { + return new TaskDlgScaledParameters (this); } diff --git a/src/Mod/PartDesign/Gui/ViewProviderScaled.h b/src/Mod/PartDesign/Gui/ViewProviderScaled.h index a7fde745f..e225ac4f3 100644 --- a/src/Mod/PartDesign/Gui/ViewProviderScaled.h +++ b/src/Mod/PartDesign/Gui/ViewProviderScaled.h @@ -37,7 +37,8 @@ public: sPixmap = "PartDesign_Scaled.svg"; } protected: - virtual bool setEdit(int ModNum); + /// Returns a newly create dialog for the part to be placed in the task view + virtual TaskDlgFeatureParameters *getEditDialog(); }; diff --git a/src/Mod/PartDesign/Gui/ViewProviderTransformed.cpp b/src/Mod/PartDesign/Gui/ViewProviderTransformed.cpp index e3a6ada4f..c07ad038e 100644 --- a/src/Mod/PartDesign/Gui/ViewProviderTransformed.cpp +++ b/src/Mod/PartDesign/Gui/ViewProviderTransformed.cpp @@ -109,7 +109,8 @@ bool ViewProviderTransformed::setEdit(int ModNum) pcRoot->addChild(pcRejectedRoot); recomputeFeature(); - return true; + + return ViewProvider::setEdit(ModNum); } void ViewProviderTransformed::unsetEdit(int ModNum) @@ -136,36 +137,6 @@ bool ViewProviderTransformed::onDelete(const std::vector &s) return ViewProvider::onDelete(s); } -const bool ViewProviderTransformed::checkDlgOpen(TaskDlgTransformedParameters* transformedDlg) { - // When double-clicking on the item for this feature the - // object unsets and sets its edit mode without closing - // the task panel - Gui::TaskView::TaskDialog *dlg = Gui::Control().activeDialog(); - transformedDlg = qobject_cast(dlg); - - if ((transformedDlg != NULL) && (transformedDlg->getTransformedView() != this)) - transformedDlg = NULL; // another transformed feature left open its task panel - - if ((dlg != NULL) && (transformedDlg == NULL)) { - QMessageBox msgBox; - msgBox.setText(QObject::tr("A dialog is already open in the task panel")); - msgBox.setInformativeText(QObject::tr("Do you want to close this dialog?")); - msgBox.setStandardButtons(QMessageBox::Yes | QMessageBox::No); - msgBox.setDefaultButton(QMessageBox::Yes); - int ret = msgBox.exec(); - if (ret == QMessageBox::Yes) - Gui::Control().reject(); - else - return false; - } - - // clear the selection (convenience) - Gui::Selection().clearSelection(); - - // Continue (usually in virtual method setEdit()) - return true; -} - void ViewProviderTransformed::recomputeFeature(void) { PartDesign::Transformed* pcTransformed = static_cast(getObject());