diff --git a/src/Mod/PartDesign/Gui/ViewProvider.cpp b/src/Mod/PartDesign/Gui/ViewProvider.cpp index 55396796af..156424678f 100644 --- a/src/Mod/PartDesign/Gui/ViewProvider.cpp +++ b/src/Mod/PartDesign/Gui/ViewProvider.cpp @@ -31,6 +31,7 @@ #include #endif +#include #include #include #include @@ -66,9 +67,8 @@ bool ViewProvider::doubleClicked(void) { try { PartDesign::Body* body = PartDesign::Body::findBodyOf(getObject()); - std::string Msg("Edit "); - Msg += this->pcObject->Label.getValue(); - Gui::Command::openCommand(Msg.c_str()); + QString text = QObject::tr("Edit %1").arg(QString::fromUtf8(getObject()->Label.getValue())); + Gui::Command::openCommand(text.toUtf8()); PartDesignGui::setEdit(pcObject,body); } catch (const Base::Exception&) { @@ -77,6 +77,25 @@ bool ViewProvider::doubleClicked(void) return true; } +void ViewProvider::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 ViewProvider::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(&ViewProvider::startDefaultEditMode, this)); +} + void ViewProvider::setupContextMenu(QMenu* menu, QObject* receiver, const char* member) { QAction* act = menu->addAction(QObject::tr("Set colors..."), receiver, member); diff --git a/src/Mod/PartDesign/Gui/ViewProvider.h b/src/Mod/PartDesign/Gui/ViewProvider.h index 1506f5eef2..6ff7ffccb4 100644 --- a/src/Mod/PartDesign/Gui/ViewProvider.h +++ b/src/Mod/PartDesign/Gui/ViewProvider.h @@ -76,6 +76,8 @@ protected: virtual void setupContextMenu(QMenu* menu, QObject* receiver, const char* member) override; virtual bool setEdit(int ModNum) override; virtual void unsetEdit(int ModNum) override; + void startDefaultEditMode(); + void addDefaultAction(QMenu*, const QString&); virtual bool onDelete(const std::vector &) override; diff --git a/src/Mod/PartDesign/Gui/ViewProviderGroove.cpp b/src/Mod/PartDesign/Gui/ViewProviderGroove.cpp index 782effe822..b173676cbc 100644 --- a/src/Mod/PartDesign/Gui/ViewProviderGroove.cpp +++ b/src/Mod/PartDesign/Gui/ViewProviderGroove.cpp @@ -47,9 +47,7 @@ ViewProviderGroove::~ViewProviderGroove() void ViewProviderGroove::setupContextMenu(QMenu* menu, QObject* receiver, const char* member) { - QAction* act; - act = menu->addAction(QObject::tr("Edit groove"), receiver, member); - act->setData(QVariant((int)ViewProvider::Default)); + addDefaultAction(menu, QObject::tr("Edit groove")); PartDesignGui::ViewProviderSketchBased::setupContextMenu(menu, receiver, member); } diff --git a/src/Mod/PartDesign/Gui/ViewProviderPad.cpp b/src/Mod/PartDesign/Gui/ViewProviderPad.cpp index 93e5cc63d2..e7eeeaa3d1 100644 --- a/src/Mod/PartDesign/Gui/ViewProviderPad.cpp +++ b/src/Mod/PartDesign/Gui/ViewProviderPad.cpp @@ -47,12 +47,7 @@ ViewProviderPad::~ViewProviderPad() void ViewProviderPad::setupContextMenu(QMenu* menu, QObject* receiver, const char* member) { - // Note: This methode couldn't be unified with others because menu entry string - // should present united in sources for proper translation and shouldn't be - // constructed on runtime. - QAction* act; - act = menu->addAction(QObject::tr("Edit pad"), receiver, member); - act->setData(QVariant((int)ViewProvider::Default)); + addDefaultAction(menu, QObject::tr("Edit pad")); PartDesignGui::ViewProviderSketchBased::setupContextMenu(menu, receiver, member); } diff --git a/src/Mod/PartDesign/Gui/ViewProviderPocket.cpp b/src/Mod/PartDesign/Gui/ViewProviderPocket.cpp index e610196a89..8343ceb8fd 100644 --- a/src/Mod/PartDesign/Gui/ViewProviderPocket.cpp +++ b/src/Mod/PartDesign/Gui/ViewProviderPocket.cpp @@ -49,9 +49,7 @@ ViewProviderPocket::~ViewProviderPocket() void ViewProviderPocket::setupContextMenu(QMenu* menu, QObject* receiver, const char* member) { - QAction* act; - act = menu->addAction(QObject::tr("Edit pocket"), receiver, member); - act->setData(QVariant((int)ViewProvider::Default)); + addDefaultAction(menu, QObject::tr("Edit pocket")); PartDesignGui::ViewProviderSketchBased::setupContextMenu(menu, receiver, member); } diff --git a/src/Mod/PartDesign/Gui/ViewProviderRevolution.cpp b/src/Mod/PartDesign/Gui/ViewProviderRevolution.cpp index 1cf70ebbb1..80c869e6a9 100644 --- a/src/Mod/PartDesign/Gui/ViewProviderRevolution.cpp +++ b/src/Mod/PartDesign/Gui/ViewProviderRevolution.cpp @@ -47,9 +47,7 @@ ViewProviderRevolution::~ViewProviderRevolution() void ViewProviderRevolution::setupContextMenu(QMenu* menu, QObject* receiver, const char* member) { - QAction* act; - act = menu->addAction(QObject::tr("Edit revolution"), receiver, member); - act->setData(QVariant((int)ViewProvider::Default)); + addDefaultAction(menu, QObject::tr("Edit revolution")); PartDesignGui::ViewProviderSketchBased::setupContextMenu(menu, receiver, member); }