diff --git a/src/Gui/ViewProviderDocumentObject.cpp b/src/Gui/ViewProviderDocumentObject.cpp index 0230117675..f10e07b054 100644 --- a/src/Gui/ViewProviderDocumentObject.cpp +++ b/src/Gui/ViewProviderDocumentObject.cpp @@ -24,7 +24,9 @@ #include "PreCompiled.h" #ifndef _PreComp_ +# include # include +# include # include # include # include @@ -47,7 +49,9 @@ #include #include #include +#include "ActionFunction.h" #include "Application.h" +#include "Command.h" #include "Document.h" #include "Selection.h" #include "MainWindow.h" @@ -256,6 +260,25 @@ void ViewProviderDocumentObject::setShowable(bool enable) } } +void ViewProviderDocumentObject::startDefaultEditMode() +{ + QString text = QObject::tr("Edit %1").arg(QString::fromUtf8(getObject()->Label.getValue())); + Gui::Command::openCommand(text.toUtf8()); + + Gui::Document* document = this->getDocument(); + if (document) { + document->setEdit(this, ViewProvider::Default); + } +} + +void ViewProviderDocumentObject::addDefaultAction(QMenu* menu, const QString& text) +{ + QAction* act = menu->addAction(text); + act->setData(QVariant((int)ViewProvider::Default)); + Gui::ActionFunction* func = new Gui::ActionFunction(menu); + func->trigger(act, boost::bind(&ViewProviderDocumentObject::startDefaultEditMode, this)); +} + void ViewProviderDocumentObject::setModeSwitch() { if(isShowable()) ViewProvider::setModeSwitch(); diff --git a/src/Gui/ViewProviderDocumentObject.h b/src/Gui/ViewProviderDocumentObject.h index 3af4173d13..aa8dfbe7ce 100644 --- a/src/Gui/ViewProviderDocumentObject.h +++ b/src/Gui/ViewProviderDocumentObject.h @@ -155,6 +155,9 @@ public: void setShowable(bool enable); bool isShowable() const; + /** Start the edit mode with ViewProvider::Default */ + void startDefaultEditMode(); + protected: /*! Get the active mdi view of the document this view provider is part of. @note The returned mdi view doesn't need to be a 3d view but can be e.g. @@ -203,6 +206,9 @@ protected: virtual void setModeSwitch() override; + /** Adds a menu item and bind it with \ref startDefaultEditMode(). */ + void addDefaultAction(QMenu*, const QString&); + protected: App::DocumentObject *pcObject; Gui::Document* pcDocument; diff --git a/src/Mod/Part/Gui/ViewProviderPrimitive.cpp b/src/Mod/Part/Gui/ViewProviderPrimitive.cpp index 4057f190ee..007c69b529 100644 --- a/src/Mod/Part/Gui/ViewProviderPrimitive.cpp +++ b/src/Mod/Part/Gui/ViewProviderPrimitive.cpp @@ -70,17 +70,6 @@ void ViewProviderPrimitive::setupContextMenu(QMenu* menu, QObject* receiver, con ViewProviderPart::setupContextMenu(menu, receiver, member); } -void ViewProviderPrimitive::startDefaultEditMode() -{ - QString text = QObject::tr("Edit %1").arg(QString::fromUtf8(getObject()->Label.getValue())); - Gui::Command::openCommand(text.toUtf8()); - - Gui::Document* document = this->getDocument(); - if (document) { - document->setEdit(this, ViewProvider::Default); - } -} - bool ViewProviderPrimitive::setEdit(int ModNum) { if (ModNum == ViewProvider::Default) { diff --git a/src/Mod/Part/Gui/ViewProviderPrimitive.h b/src/Mod/Part/Gui/ViewProviderPrimitive.h index 65e0f5a5b8..4c88f5daf2 100644 --- a/src/Mod/Part/Gui/ViewProviderPrimitive.h +++ b/src/Mod/Part/Gui/ViewProviderPrimitive.h @@ -46,9 +46,6 @@ protected: bool setEdit(int ModNum); void unsetEdit(int ModNum); -private: - void startDefaultEditMode(); - private: ViewProviderAttachExtension extension; }; diff --git a/src/Mod/TechDraw/Gui/ViewProviderBalloon.cpp b/src/Mod/TechDraw/Gui/ViewProviderBalloon.cpp index 28450ce266..864306c9f7 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderBalloon.cpp +++ b/src/Mod/TechDraw/Gui/ViewProviderBalloon.cpp @@ -120,17 +120,6 @@ void ViewProviderBalloon::setupContextMenu(QMenu* menu, QObject* receiver, const ViewProviderDrawingView::setupContextMenu(menu, receiver, member); } -void ViewProviderBalloon::startDefaultEditMode() -{ - QString text = QObject::tr("Edit %1").arg(QString::fromUtf8(getObject()->Label.getValue())); - Gui::Command::openCommand(text.toUtf8()); - - Gui::Document* document = this->getDocument(); - if (document) { - document->setEdit(this, ViewProvider::Default); - } -} - bool ViewProviderBalloon::setEdit(int ModNum) { if (ModNum == ViewProvider::Default ) { diff --git a/src/Mod/TechDraw/Gui/ViewProviderBalloon.h b/src/Mod/TechDraw/Gui/ViewProviderBalloon.h index 9dcef1b50f..84c971c814 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderBalloon.h +++ b/src/Mod/TechDraw/Gui/ViewProviderBalloon.h @@ -63,7 +63,6 @@ public: virtual void unsetEdit(int ModNum); virtual bool doubleClicked(void); virtual bool canDelete(App::DocumentObject* obj) const; - void startDefaultEditMode(); virtual TechDraw::DrawViewBalloon* getViewObject() const; diff --git a/src/Mod/TechDraw/Gui/ViewProviderDimension.cpp b/src/Mod/TechDraw/Gui/ViewProviderDimension.cpp index 4ab084793f..747140c0d0 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderDimension.cpp +++ b/src/Mod/TechDraw/Gui/ViewProviderDimension.cpp @@ -135,17 +135,6 @@ void ViewProviderDimension::setupContextMenu(QMenu* menu, QObject* receiver, con ViewProviderDrawingView::setupContextMenu(menu, receiver, member); } -void ViewProviderDimension::startDefaultEditMode() -{ - QString text = QObject::tr("Edit %1").arg(QString::fromUtf8(getObject()->Label.getValue())); - Gui::Command::openCommand(text.toUtf8()); - - Gui::Document* document = this->getDocument(); - if (document) { - document->setEdit(this, ViewProvider::Default); - } -} - bool ViewProviderDimension::setEdit(int ModNum) { if (ModNum == ViewProvider::Default) { diff --git a/src/Mod/TechDraw/Gui/ViewProviderDimension.h b/src/Mod/TechDraw/Gui/ViewProviderDimension.h index 156369a840..8a0e04e61f 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderDimension.h +++ b/src/Mod/TechDraw/Gui/ViewProviderDimension.h @@ -76,7 +76,6 @@ public: virtual bool setEdit(int ModNum); virtual void unsetEdit(int ModNum); virtual bool doubleClicked(void); - void startDefaultEditMode(); virtual TechDraw::DrawViewDimension* getViewObject() const;