diff --git a/src/Mod/PartDesign/Gui/TaskDressUpParameters.cpp b/src/Mod/PartDesign/Gui/TaskDressUpParameters.cpp index 0b2fbb133..6de650fc9 100644 --- a/src/Mod/PartDesign/Gui/TaskDressUpParameters.cpp +++ b/src/Mod/PartDesign/Gui/TaskDressUpParameters.cpp @@ -50,8 +50,8 @@ using namespace Gui; TaskDressUpParameters::TaskDressUpParameters(ViewProviderDressUp *DressUpView, bool selectEdges, bool selectFaces, QWidget *parent) : allowFaces(selectFaces), allowEdges(selectEdges), - TaskBox(Gui::BitmapFactory().pixmap((std::string("PartDesign_") + DressUpView->featureName).c_str()), - QString::fromAscii((DressUpView->featureName + " parameters").c_str()), + TaskBox(Gui::BitmapFactory().pixmap((std::string("PartDesign_") + DressUpView->featureName()).c_str()), + QString::fromAscii((DressUpView->featureName() + " parameters").c_str()), true, parent), DressUpView(DressUpView) diff --git a/src/Mod/PartDesign/Gui/ViewProviderChamfer.cpp b/src/Mod/PartDesign/Gui/ViewProviderChamfer.cpp index c375a8d1e..4d3be5e6c 100644 --- a/src/Mod/PartDesign/Gui/ViewProviderChamfer.cpp +++ b/src/Mod/PartDesign/Gui/ViewProviderChamfer.cpp @@ -24,46 +24,22 @@ #include "PreCompiled.h" #ifndef _PreComp_ -# include -# include -# include #endif -#include "ViewProviderChamfer.h" #include "TaskChamferParameters.h" -#include -#include -#include - +#include "ViewProviderChamfer.h" using namespace PartDesignGui; PROPERTY_SOURCE(PartDesignGui::ViewProviderChamfer,PartDesignGui::ViewProviderDressUp) -bool ViewProviderChamfer::setEdit(int ModNum) -{ - if (ModNum == ViewProvider::Default ) { - TaskDlgDressUpParameters *dressUpDlg = NULL; - if (checkDlgOpen(dressUpDlg)) { - // always change to PartDesign WB, remember where we come from - oldWb = Gui::Command::assureWorkbench("PartDesignWorkbench"); - - // start the edit dialog - if (dressUpDlg) - Gui::Control().showDialog(dressUpDlg); - else - Gui::Control().showDialog(new TaskDlgChamferParameters(this)); - - return true; - } else { - return false; - } - } - else { - return ViewProviderDressUp::setEdit(ModNum); - } +const std::string & ViewProviderChamfer::featureName() const { + static const std::string name = "Chamfer"; + return name; } - +TaskDlgFeatureParameters *ViewProviderChamfer::getEditDialog() { + return new TaskDlgChamferParameters (this); +} diff --git a/src/Mod/PartDesign/Gui/ViewProviderChamfer.h b/src/Mod/PartDesign/Gui/ViewProviderChamfer.h index 2a9bab302..4764793ca 100644 --- a/src/Mod/PartDesign/Gui/ViewProviderChamfer.h +++ b/src/Mod/PartDesign/Gui/ViewProviderChamfer.h @@ -36,12 +36,14 @@ class PartDesignGuiExport ViewProviderChamfer : public ViewProviderDressUp public: /// constructor ViewProviderChamfer() - { featureName = std::string("Chamfer"); - sPixmap = "PartDesign_Chamfer.svg"; } + { sPixmap = "PartDesign_Chamfer.svg"; } + + /// return "Chamfer" + virtual const std::string & featureName() const; 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/ViewProviderDraft.cpp b/src/Mod/PartDesign/Gui/ViewProviderDraft.cpp index 4d7de9aaa..0ae3f38fb 100644 --- a/src/Mod/PartDesign/Gui/ViewProviderDraft.cpp +++ b/src/Mod/PartDesign/Gui/ViewProviderDraft.cpp @@ -24,49 +24,22 @@ #include "PreCompiled.h" #ifndef _PreComp_ -# include -# include -# include -# include -# include #endif -#include "ViewProviderDraft.h" #include "TaskDraftParameters.h" -#include -#include -#include -#include -#include - +#include "ViewProviderDraft.h" using namespace PartDesignGui; PROPERTY_SOURCE(PartDesignGui::ViewProviderDraft,PartDesignGui::ViewProviderDressUp) -bool ViewProviderDraft::setEdit(int ModNum) -{ - if (ModNum == ViewProvider::Default ) { - TaskDlgDressUpParameters *dressUpDlg = NULL; - if (checkDlgOpen(dressUpDlg)) { - // always change to PartDesign WB, remember where we come from - oldWb = Gui::Command::assureWorkbench("PartDesignWorkbench"); - - // start the edit dialog - if (dressUpDlg) - Gui::Control().showDialog(dressUpDlg); - else - Gui::Control().showDialog(new TaskDlgDraftParameters(this)); - - return true; - } else { - return false; - } - } - else { - return ViewProviderDressUp::setEdit(ModNum); - } +const std::string & ViewProviderDraft::featureName() const { + static const std::string name = "Draft"; + return name; } +TaskDlgFeatureParameters *ViewProviderDraft::getEditDialog() { + return new TaskDlgDraftParameters (this); +} diff --git a/src/Mod/PartDesign/Gui/ViewProviderDraft.h b/src/Mod/PartDesign/Gui/ViewProviderDraft.h index b918c58e6..c1b2c40df 100644 --- a/src/Mod/PartDesign/Gui/ViewProviderDraft.h +++ b/src/Mod/PartDesign/Gui/ViewProviderDraft.h @@ -36,11 +36,14 @@ class PartDesignGuiExport ViewProviderDraft : public ViewProviderDressUp public: /// constructor ViewProviderDraft() - { featureName = std::string("Draft"); - sPixmap = "PartDesign_Draft.svg"; } + { sPixmap = "PartDesign_Draft.svg"; } + + /// return "Draft" + virtual const std::string & featureName() const; protected: - virtual bool setEdit(int ModNum); + /// Returns a newly create dialog for the part to be placed in the task view + virtual TaskDlgFeatureParameters *getEditDialog(); }; } // namespace PartDesignGui diff --git a/src/Mod/PartDesign/Gui/ViewProviderDressUp.cpp b/src/Mod/PartDesign/Gui/ViewProviderDressUp.cpp index 5437d03d1..14c4d0139 100644 --- a/src/Mod/PartDesign/Gui/ViewProviderDressUp.cpp +++ b/src/Mod/PartDesign/Gui/ViewProviderDressUp.cpp @@ -45,53 +45,27 @@ using namespace PartDesignGui; PROPERTY_SOURCE(PartDesignGui::ViewProviderDressUp,PartDesignGui::ViewProvider) + void ViewProviderDressUp::setupContextMenu(QMenu* menu, QObject* receiver, const char* member) { QAction* act; - act = menu->addAction(QObject::tr((std::string("Edit ") + featureName + " feature").c_str()), receiver, member); + // TODO check if this gets a sane translation (2015-07-26, Fat-Zer) + act = menu->addAction(QObject::tr((std::string("Edit ") + featureName() + " feature").c_str()), receiver, member); act->setData(QVariant((int)ViewProvider::Default)); PartGui::ViewProviderPart::setupContextMenu(menu, receiver, member); } -const bool ViewProviderDressUp::checkDlgOpen(TaskDlgDressUpParameters* dressUpDlg) { - // 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(); - dressUpDlg = qobject_cast(dlg); - if ((dressUpDlg != NULL) && (dressUpDlg->getDressUpView() != this)) - dressUpDlg = NULL; // another transformed feature left open its task panel - - if ((dlg != NULL) && (dressUpDlg == 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().closeDialog(); - else - return false; - } - - // clear the selection (convenience) - Gui::Selection().clearSelection(); - - // Continue (usually in virtual method setEdit()) - return true; +const std::string & ViewProviderDressUp::featureName() const { + static const std::string name = "Undefined"; + return name; } -bool ViewProviderDressUp::onDelete(const std::vector &s) -{ - return ViewProvider::onDelete(s); -} void ViewProviderDressUp::highlightReferences(const bool on) { PartDesign::DressUp* pcDressUp = static_cast(getObject()); - Part::Feature* base = static_cast(pcDressUp->Base.getValue()); + Part::Feature* base = pcDressUp->getBaseObject (/*silent =*/ true); if (base == NULL) return; PartGui::ViewProviderPart* vp = dynamic_cast( Gui::Application::Instance->getViewProvider(base)); diff --git a/src/Mod/PartDesign/Gui/ViewProviderDressUp.h b/src/Mod/PartDesign/Gui/ViewProviderDressUp.h index dabb95c62..e9e364823 100644 --- a/src/Mod/PartDesign/Gui/ViewProviderDressUp.h +++ b/src/Mod/PartDesign/Gui/ViewProviderDressUp.h @@ -38,7 +38,7 @@ class PartDesignGuiExport ViewProviderDressUp : public ViewProvider public: /// constructor ViewProviderDressUp() - : featureName("undefined") {} + {} /// destructor virtual ~ViewProviderDressUp() {} @@ -46,16 +46,14 @@ public: /// grouping handling void setupContextMenu(QMenu*, QObject*, const char*); - virtual bool onDelete(const std::vector &); - /// Highlight the references that have been selected void highlightReferences(const bool on); - - // The feature name of the subclass - std::string featureName; - -protected: - const bool checkDlgOpen(TaskDlgDressUpParameters* dressUpDlg); + + /** + * Returns the feature Name associated with the view provider. + * Should be reimplemented in the successor. + */ + virtual const std::string & featureName() const; private: std::vector originalFaceColors; diff --git a/src/Mod/PartDesign/Gui/ViewProviderFillet.cpp b/src/Mod/PartDesign/Gui/ViewProviderFillet.cpp index 24ad5d908..06c9556b0 100644 --- a/src/Mod/PartDesign/Gui/ViewProviderFillet.cpp +++ b/src/Mod/PartDesign/Gui/ViewProviderFillet.cpp @@ -24,45 +24,22 @@ #include "PreCompiled.h" #ifndef _PreComp_ -# include -# include -# include #endif -#include "ViewProviderFillet.h" #include "TaskFilletParameters.h" -#include -#include -#include - +#include "ViewProviderFillet.h" using namespace PartDesignGui; PROPERTY_SOURCE(PartDesignGui::ViewProviderFillet,PartDesignGui::ViewProviderDressUp) -bool ViewProviderFillet::setEdit(int ModNum) -{ - if (ModNum == ViewProvider::Default ) { - TaskDlgDressUpParameters *dressUpDlg = NULL; - if (checkDlgOpen(dressUpDlg)) { - // always change to PartDesign WB, remember where we come from - oldWb = Gui::Command::assureWorkbench("PartDesignWorkbench"); - - // start the edit dialog - if (dressUpDlg) - Gui::Control().showDialog(dressUpDlg); - else - Gui::Control().showDialog(new TaskDlgFilletParameters(this)); - - return true; - } else { - return false; - } - } - else { - return ViewProviderDressUp::setEdit(ModNum); - } +const std::string & ViewProviderFillet::featureName() const { + static const std::string name = "Fillet"; + return name; } +TaskDlgFeatureParameters *ViewProviderFillet::getEditDialog() { + return new TaskDlgFilletParameters (this); +} diff --git a/src/Mod/PartDesign/Gui/ViewProviderFillet.h b/src/Mod/PartDesign/Gui/ViewProviderFillet.h index 240fffa36..f0ef344e8 100644 --- a/src/Mod/PartDesign/Gui/ViewProviderFillet.h +++ b/src/Mod/PartDesign/Gui/ViewProviderFillet.h @@ -36,11 +36,14 @@ class PartDesignGuiExport ViewProviderFillet : public ViewProviderDressUp public: /// constructor ViewProviderFillet() - { featureName = std::string("Fillet"); - sPixmap = "PartDesign_Fillet.svg"; } + { sPixmap = "PartDesign_Fillet.svg"; } + + /// return "Fillet" + virtual const std::string & featureName() const; protected: - virtual bool setEdit(int ModNum); + /// Returns a newly create dialog for the part to be placed in the task view + virtual TaskDlgFeatureParameters *getEditDialog(); }; } // namespace PartDesignGui diff --git a/src/Mod/PartDesign/Gui/ViewProviderThickness.cpp b/src/Mod/PartDesign/Gui/ViewProviderThickness.cpp index f7d3f7da2..fd25b663e 100644 --- a/src/Mod/PartDesign/Gui/ViewProviderThickness.cpp +++ b/src/Mod/PartDesign/Gui/ViewProviderThickness.cpp @@ -24,46 +24,22 @@ #include "PreCompiled.h" #ifndef _PreComp_ -# include -# include #endif -#include "ViewProviderThickness.h" #include "TaskThicknessParameters.h" -#include -#include -#include -#include -#include - +#include "ViewProviderThickness.h" using namespace PartDesignGui; PROPERTY_SOURCE(PartDesignGui::ViewProviderThickness,PartDesignGui::ViewProviderDressUp) -bool ViewProviderThickness::setEdit(int ModNum) -{ - if (ModNum == ViewProvider::Default ) { - TaskDlgDressUpParameters *dressUpDlg = NULL; - if (checkDlgOpen(dressUpDlg)) { - // always change to PartDesign WB, remember where we come from - oldWb = Gui::Command::assureWorkbench("PartDesignWorkbench"); - - // start the edit dialog - if (dressUpDlg) - Gui::Control().showDialog(dressUpDlg); - else - Gui::Control().showDialog(new TaskDlgThicknessParameters(this)); - - return true; - } else { - return false; - } - } - else { - return ViewProviderDressUp::setEdit(ModNum); - } +const std::string & ViewProviderThickness::featureName() const { + static const std::string name = "Thickness"; + return name; } +TaskDlgFeatureParameters *ViewProviderThickness::getEditDialog() { + return new TaskDlgThicknessParameters (this); +} diff --git a/src/Mod/PartDesign/Gui/ViewProviderThickness.h b/src/Mod/PartDesign/Gui/ViewProviderThickness.h index ef1216c85..e78d6d7b9 100644 --- a/src/Mod/PartDesign/Gui/ViewProviderThickness.h +++ b/src/Mod/PartDesign/Gui/ViewProviderThickness.h @@ -36,11 +36,14 @@ class PartDesignGuiExport ViewProviderThickness : public ViewProviderDressUp public: /// constructor ViewProviderThickness() - { featureName = std::string("Thickness"); - sPixmap = "PartDesign_Thickness.svg"; } + { sPixmap = "PartDesign_Thickness.svg"; } + + /// return "Thickness" + virtual const std::string & featureName() const; protected: - virtual bool setEdit(int ModNum); + /// Returns a newly create dialog for the part to be placed in the task view + virtual TaskDlgFeatureParameters *getEditDialog(); }; } // namespace PartDesignGui