From fa8bdfd5506ea1c8848581bb5d80ccf6ea505bf6 Mon Sep 17 00:00:00 2001 From: wmayer Date: Mon, 24 Apr 2023 12:25:04 +0200 Subject: [PATCH] PD: harmonize API of view provider classes * add virtual method featureName() to ViewProviderTransformed * add featureIcon() to ViewProviderTransformed and ViewProviderDressUp --- src/Mod/PartDesign/Gui/TaskDressUpParameters.cpp | 2 +- .../PartDesign/Gui/TaskTransformedParameters.cpp | 2 +- src/Mod/PartDesign/Gui/ViewProviderDressUp.cpp | 5 +++++ src/Mod/PartDesign/Gui/ViewProviderDressUp.h | 1 + .../PartDesign/Gui/ViewProviderLinearPattern.cpp | 6 ++++++ src/Mod/PartDesign/Gui/ViewProviderLinearPattern.h | 5 +++-- src/Mod/PartDesign/Gui/ViewProviderMirrored.cpp | 6 ++++++ src/Mod/PartDesign/Gui/ViewProviderMirrored.h | 3 ++- .../PartDesign/Gui/ViewProviderMultiTransform.cpp | 8 +++++++- src/Mod/PartDesign/Gui/ViewProviderMultiTransform.h | 2 +- src/Mod/PartDesign/Gui/ViewProviderPolarPattern.cpp | 6 ++++++ src/Mod/PartDesign/Gui/ViewProviderPolarPattern.h | 3 ++- src/Mod/PartDesign/Gui/ViewProviderScaled.cpp | 6 ++++++ src/Mod/PartDesign/Gui/ViewProviderScaled.h | 3 ++- src/Mod/PartDesign/Gui/ViewProviderTransformed.cpp | 13 ++++++++++++- src/Mod/PartDesign/Gui/ViewProviderTransformed.h | 7 ++++--- 16 files changed, 65 insertions(+), 13 deletions(-) diff --git a/src/Mod/PartDesign/Gui/TaskDressUpParameters.cpp b/src/Mod/PartDesign/Gui/TaskDressUpParameters.cpp index 56119e9ebd..be09cb2e22 100644 --- a/src/Mod/PartDesign/Gui/TaskDressUpParameters.cpp +++ b/src/Mod/PartDesign/Gui/TaskDressUpParameters.cpp @@ -55,7 +55,7 @@ using namespace Gui; /* TRANSLATOR PartDesignGui::TaskDressUpParameters */ TaskDressUpParameters::TaskDressUpParameters(ViewProviderDressUp *DressUpView, bool selectEdges, bool selectFaces, QWidget *parent) - : TaskBox(Gui::BitmapFactory().pixmap((std::string("PartDesign_") + DressUpView->featureName()).c_str()), + : TaskBox(Gui::BitmapFactory().pixmap(DressUpView->featureIcon().c_str()), DressUpView->menuName, true, parent) diff --git a/src/Mod/PartDesign/Gui/TaskTransformedParameters.cpp b/src/Mod/PartDesign/Gui/TaskTransformedParameters.cpp index 44704a87b2..13c7156a29 100644 --- a/src/Mod/PartDesign/Gui/TaskTransformedParameters.cpp +++ b/src/Mod/PartDesign/Gui/TaskTransformedParameters.cpp @@ -53,7 +53,7 @@ using namespace Gui; /* TRANSLATOR PartDesignGui::TaskTransformedParameters */ TaskTransformedParameters::TaskTransformedParameters(ViewProviderTransformed *TransformedView, QWidget *parent) - : TaskBox(Gui::BitmapFactory().pixmap((std::string("PartDesign_") + TransformedView->featureName).c_str()), + : TaskBox(Gui::BitmapFactory().pixmap(TransformedView->featureIcon().c_str()), TransformedView->menuName, true, parent) , proxy(nullptr) , TransformedView(TransformedView) diff --git a/src/Mod/PartDesign/Gui/ViewProviderDressUp.cpp b/src/Mod/PartDesign/Gui/ViewProviderDressUp.cpp index 2dfc60755e..1ffff9fc5c 100644 --- a/src/Mod/PartDesign/Gui/ViewProviderDressUp.cpp +++ b/src/Mod/PartDesign/Gui/ViewProviderDressUp.cpp @@ -58,6 +58,11 @@ const std::string & ViewProviderDressUp::featureName() const { return name; } +std::string ViewProviderDressUp::featureIcon() const +{ + return std::string("PartDesign_") + featureName(); +} + bool ViewProviderDressUp::setEdit(int ModNum) { if (ModNum == ViewProvider::Default ) { diff --git a/src/Mod/PartDesign/Gui/ViewProviderDressUp.h b/src/Mod/PartDesign/Gui/ViewProviderDressUp.h index 3addd0af82..f89ea5a366 100644 --- a/src/Mod/PartDesign/Gui/ViewProviderDressUp.h +++ b/src/Mod/PartDesign/Gui/ViewProviderDressUp.h @@ -55,6 +55,7 @@ public: * Should be reimplemented in the successor. */ virtual const std::string & featureName() const; + std::string featureIcon() const; QString menuName; protected: diff --git a/src/Mod/PartDesign/Gui/ViewProviderLinearPattern.cpp b/src/Mod/PartDesign/Gui/ViewProviderLinearPattern.cpp index 3f57850dce..88a24dbef4 100644 --- a/src/Mod/PartDesign/Gui/ViewProviderLinearPattern.cpp +++ b/src/Mod/PartDesign/Gui/ViewProviderLinearPattern.cpp @@ -33,3 +33,9 @@ PROPERTY_SOURCE(PartDesignGui::ViewProviderLinearPattern,PartDesignGui::ViewProv TaskDlgFeatureParameters *ViewProviderLinearPattern::getEditDialog() { return new TaskDlgLinearPatternParameters (this); } + +const std::string & ViewProviderLinearPattern::featureName() const +{ + static const std::string name = "LinearPattern"; + return name; +} diff --git a/src/Mod/PartDesign/Gui/ViewProviderLinearPattern.h b/src/Mod/PartDesign/Gui/ViewProviderLinearPattern.h index 2cc3537607..e18b4298b1 100644 --- a/src/Mod/PartDesign/Gui/ViewProviderLinearPattern.h +++ b/src/Mod/PartDesign/Gui/ViewProviderLinearPattern.h @@ -34,10 +34,11 @@ class PartDesignGuiExport ViewProviderLinearPattern : public ViewProviderTransfo PROPERTY_HEADER_WITH_OVERRIDE(PartDesignGui::ViewProviderLinearPattern); public: ViewProviderLinearPattern() - { featureName = std::string("LinearPattern"); - menuName = tr("LinearPattern parameters"); + { menuName = tr("LinearPattern parameters"); sPixmap = "PartDesign_LinearPattern.svg"; } + const std::string & featureName() const override; + protected: /// Returns a newly create dialog for the part to be placed in the task view TaskDlgFeatureParameters *getEditDialog() override; diff --git a/src/Mod/PartDesign/Gui/ViewProviderMirrored.cpp b/src/Mod/PartDesign/Gui/ViewProviderMirrored.cpp index e92e8935fe..64a53b98a0 100644 --- a/src/Mod/PartDesign/Gui/ViewProviderMirrored.cpp +++ b/src/Mod/PartDesign/Gui/ViewProviderMirrored.cpp @@ -33,3 +33,9 @@ PROPERTY_SOURCE(PartDesignGui::ViewProviderMirrored,PartDesignGui::ViewProviderT TaskDlgFeatureParameters *ViewProviderMirrored::getEditDialog() { return new TaskDlgMirroredParameters (this); } + +const std::string & ViewProviderMirrored::featureName() const +{ + static const std::string name = "Mirrored"; + return name; +} diff --git a/src/Mod/PartDesign/Gui/ViewProviderMirrored.h b/src/Mod/PartDesign/Gui/ViewProviderMirrored.h index 8657eb7f5d..cccd45e370 100644 --- a/src/Mod/PartDesign/Gui/ViewProviderMirrored.h +++ b/src/Mod/PartDesign/Gui/ViewProviderMirrored.h @@ -34,11 +34,12 @@ class PartDesignGuiExport ViewProviderMirrored : public ViewProviderTransformed PROPERTY_HEADER_WITH_OVERRIDE(PartDesignGui::ViewProviderMirrored); public: ViewProviderMirrored() { - featureName = std::string("Mirrored"); menuName = tr("Mirrored parameters"); sPixmap = "PartDesign_Mirrored.svg"; } + const std::string & featureName() const override; + protected: /// Returns a newly create dialog for the part to be placed in the task view TaskDlgFeatureParameters *getEditDialog() override; diff --git a/src/Mod/PartDesign/Gui/ViewProviderMultiTransform.cpp b/src/Mod/PartDesign/Gui/ViewProviderMultiTransform.cpp index 2ee4d174a7..6a9ffaa559 100644 --- a/src/Mod/PartDesign/Gui/ViewProviderMultiTransform.cpp +++ b/src/Mod/PartDesign/Gui/ViewProviderMultiTransform.cpp @@ -37,9 +37,15 @@ TaskDlgFeatureParameters *ViewProviderMultiTransform::getEditDialog() { return new TaskDlgMultiTransformParameters (this); } +const std::string & ViewProviderMultiTransform::featureName() const +{ + static const std::string name = "MultiTransform"; + return name; +} + void ViewProviderMultiTransform::setupContextMenu(QMenu* menu, QObject* receiver, const char* member) { - this->addDefaultAction(menu, QObject::tr("Edit %1").arg(QString::fromStdString(featureName))); + this->addDefaultAction(menu, QObject::tr("Edit %1").arg(QString::fromStdString(featureName()))); PartDesignGui::ViewProvider::setupContextMenu(menu, receiver, member); // clazy:exclude=skipped-base-method } diff --git a/src/Mod/PartDesign/Gui/ViewProviderMultiTransform.h b/src/Mod/PartDesign/Gui/ViewProviderMultiTransform.h index 18fccfbe58..1d6a532eea 100644 --- a/src/Mod/PartDesign/Gui/ViewProviderMultiTransform.h +++ b/src/Mod/PartDesign/Gui/ViewProviderMultiTransform.h @@ -34,11 +34,11 @@ class PartDesignGuiExport ViewProviderMultiTransform : public ViewProviderTransf PROPERTY_HEADER_WITH_OVERRIDE(PartDesignGui::ViewProviderMultiTransform); public: ViewProviderMultiTransform() { - featureName = std::string("MultiTransform"); menuName = tr("MultiTransform parameters"); sPixmap = "PartDesign_MultiTransform.svg"; } + const std::string & featureName() const override; std::vector claimChildren() const override; void setupContextMenu(QMenu*, QObject*, const char*) override; diff --git a/src/Mod/PartDesign/Gui/ViewProviderPolarPattern.cpp b/src/Mod/PartDesign/Gui/ViewProviderPolarPattern.cpp index 49570fd647..d1f8b19aa5 100644 --- a/src/Mod/PartDesign/Gui/ViewProviderPolarPattern.cpp +++ b/src/Mod/PartDesign/Gui/ViewProviderPolarPattern.cpp @@ -32,3 +32,9 @@ PROPERTY_SOURCE(PartDesignGui::ViewProviderPolarPattern,PartDesignGui::ViewProvi TaskDlgFeatureParameters *ViewProviderPolarPattern::getEditDialog() { return new TaskDlgPolarPatternParameters (this); } + +const std::string & ViewProviderPolarPattern::featureName() const +{ + static const std::string name = "PolarPattern"; + return name; +} diff --git a/src/Mod/PartDesign/Gui/ViewProviderPolarPattern.h b/src/Mod/PartDesign/Gui/ViewProviderPolarPattern.h index e00b4d32fb..311743a0aa 100644 --- a/src/Mod/PartDesign/Gui/ViewProviderPolarPattern.h +++ b/src/Mod/PartDesign/Gui/ViewProviderPolarPattern.h @@ -34,11 +34,12 @@ class PartDesignGuiExport ViewProviderPolarPattern : public ViewProviderTransfor PROPERTY_HEADER_WITH_OVERRIDE(PartDesignGui::ViewProviderPolarPattern); public: ViewProviderPolarPattern() { - featureName = std::string("PolarPattern"); menuName = tr("PolarPattern parameters"); sPixmap = "PartDesign_PolarPattern.svg"; } + const std::string & featureName() const override; + protected: /// Returns a newly create dialog for the part to be placed in the task view TaskDlgFeatureParameters *getEditDialog() override; diff --git a/src/Mod/PartDesign/Gui/ViewProviderScaled.cpp b/src/Mod/PartDesign/Gui/ViewProviderScaled.cpp index 3bd2d60bff..712c8f5f39 100644 --- a/src/Mod/PartDesign/Gui/ViewProviderScaled.cpp +++ b/src/Mod/PartDesign/Gui/ViewProviderScaled.cpp @@ -33,3 +33,9 @@ PROPERTY_SOURCE(PartDesignGui::ViewProviderScaled,PartDesignGui::ViewProviderTra TaskDlgFeatureParameters *ViewProviderScaled::getEditDialog() { return new TaskDlgScaledParameters (this); } + +const std::string & ViewProviderScaled::featureName() const +{ + static const std::string name = "Scaled"; + return name; +} diff --git a/src/Mod/PartDesign/Gui/ViewProviderScaled.h b/src/Mod/PartDesign/Gui/ViewProviderScaled.h index b14d5f38a8..9e9cd8e264 100644 --- a/src/Mod/PartDesign/Gui/ViewProviderScaled.h +++ b/src/Mod/PartDesign/Gui/ViewProviderScaled.h @@ -34,11 +34,12 @@ class PartDesignGuiExport ViewProviderScaled : public ViewProviderTransformed PROPERTY_HEADER_WITH_OVERRIDE(PartDesignGui::ViewProviderScaled); public: ViewProviderScaled() { - featureName = std::string("Scaled"); menuName = tr("Scaled parameters"); sPixmap = "PartDesign_Scaled.svg"; } + const std::string & featureName() const override; + protected: /// Returns a newly create dialog for the part to be placed in the task view TaskDlgFeatureParameters *getEditDialog() override; diff --git a/src/Mod/PartDesign/Gui/ViewProviderTransformed.cpp b/src/Mod/PartDesign/Gui/ViewProviderTransformed.cpp index 5816a721ad..c85f225ff1 100644 --- a/src/Mod/PartDesign/Gui/ViewProviderTransformed.cpp +++ b/src/Mod/PartDesign/Gui/ViewProviderTransformed.cpp @@ -59,10 +59,21 @@ using namespace PartDesignGui; PROPERTY_SOURCE(PartDesignGui::ViewProviderTransformed,PartDesignGui::ViewProvider) +const std::string & ViewProviderTransformed::featureName() const +{ + static const std::string name = "undefined"; + return name; +} + +std::string ViewProviderTransformed::featureIcon() const +{ + return std::string("PartDesign_") + featureName(); +} + void ViewProviderTransformed::setupContextMenu(QMenu* menu, QObject* receiver, const char* member) { QAction* act; - act = menu->addAction(QObject::tr("Edit %1").arg(QString::fromStdString(featureName)), receiver, member); + act = menu->addAction(QObject::tr("Edit %1").arg(QString::fromStdString(featureName())), receiver, member); act->setData(QVariant((int)ViewProvider::Default)); PartDesignGui::ViewProvider::setupContextMenu(menu, receiver, member); } diff --git a/src/Mod/PartDesign/Gui/ViewProviderTransformed.h b/src/Mod/PartDesign/Gui/ViewProviderTransformed.h index 6afa144049..34d2ff405c 100644 --- a/src/Mod/PartDesign/Gui/ViewProviderTransformed.h +++ b/src/Mod/PartDesign/Gui/ViewProviderTransformed.h @@ -37,11 +37,14 @@ class PartDesignGuiExport ViewProviderTransformed : public ViewProvider public: /// constructor ViewProviderTransformed() - : featureName("undefined"), pcRejectedRoot(nullptr) {} + : pcRejectedRoot(nullptr) {} /// destructor ~ViewProviderTransformed() override {} + // The feature name of the subclass + virtual const std::string & featureName() const; + std::string featureIcon() const; void setupContextMenu(QMenu*, QObject*, const char*) override; bool onDelete(const std::vector &) override; @@ -49,8 +52,6 @@ public: /// signals if the transformation contains errors boost::signals2::signal signalDiagnosis; - // The feature name of the subclass - std::string featureName; // Name of menu dialog QString menuName;