diff --git a/src/Mod/Complete/Gui/Workbench.cpp b/src/Mod/Complete/Gui/Workbench.cpp index 3d7ce8438..0993aab67 100644 --- a/src/Mod/Complete/Gui/Workbench.cpp +++ b/src/Mod/Complete/Gui/Workbench.cpp @@ -274,6 +274,7 @@ Gui::MenuItem* Workbench::setupMenuBar() const *sketch << "Sketcher_NewSketch" + << "Sketcher_EditSketch" << "Sketcher_LeaveSketch" << "Sketcher_ViewSketch" << "Sketcher_MapSketch" diff --git a/src/Mod/PartDesign/Gui/Workbench.cpp b/src/Mod/PartDesign/Gui/Workbench.cpp index 49a3738a4..905a759b6 100644 --- a/src/Mod/PartDesign/Gui/Workbench.cpp +++ b/src/Mod/PartDesign/Gui/Workbench.cpp @@ -109,6 +109,7 @@ void Workbench::activated() const char* Sketch[] = { "Sketcher_NewSketch", + "Sketcher_EditSketch", "PartDesign_Pad", "PartDesign_Pocket", "PartDesign_Revolution", @@ -205,6 +206,7 @@ Gui::MenuItem* Workbench::setupMenuBar() const root->insertItem(item, part); part->setCommand("&Part Design"); *part << "Sketcher_NewSketch" + << "Sketcher_EditSketch" << "Sketcher_LeaveSketch" << "Sketcher_ViewSketch" << "Sketcher_MapSketch" diff --git a/src/Mod/Sketcher/Gui/Command.cpp b/src/Mod/Sketcher/Gui/Command.cpp index 77feb72f2..8444cce08 100644 --- a/src/Mod/Sketcher/Gui/Command.cpp +++ b/src/Mod/Sketcher/Gui/Command.cpp @@ -62,7 +62,7 @@ CmdSketcherNewSketch::CmdSketcherNewSketch() sAppModule = "Sketcher"; sGroup = QT_TR_NOOP("Sketcher"); sMenuText = QT_TR_NOOP("Create sketch"); - sToolTipText = QT_TR_NOOP("Create a new or edit the selected sketch"); + sToolTipText = QT_TR_NOOP("Create a new sketch"); sWhatsThis = sToolTipText; sStatusTip = sToolTipText; sPixmap = "Sketcher_NewSketch"; @@ -70,15 +70,9 @@ CmdSketcherNewSketch::CmdSketcherNewSketch() void CmdSketcherNewSketch::activated(int iMsg) { - Gui::SelectionFilter SketchFilter("SELECT Sketcher::SketchObject COUNT 1"); Gui::SelectionFilter FaceFilter ("SELECT Part::Feature SUBELEMENT Face COUNT 1"); - if (SketchFilter.match()) { - Sketcher::SketchObject *Sketch = static_cast(SketchFilter.Result[0][0].getObject()); - openCommand("Edit Sketch"); - doCommand(Gui,"Gui.activeDocument().setEdit('%s')",Sketch->getNameInDocument()); - } - else if (FaceFilter.match()) { + if (FaceFilter.match()) { // get the selected object Part::Feature *part = static_cast(FaceFilter.Result[0][0].getObject()); Base::Placement ObjectPos = part->Placement.getValue(); @@ -181,6 +175,72 @@ bool CmdSketcherNewSketch::isActive(void) return false; } +DEF_STD_CMD_A(CmdSketcherEditSketch); + +CmdSketcherEditSketch::CmdSketcherEditSketch() + :Command("Sketcher_EditSketch") +{ + sAppModule = "Sketcher"; + sGroup = QT_TR_NOOP("Sketcher"); + sMenuText = QT_TR_NOOP("Edit sketch"); + sToolTipText = QT_TR_NOOP("Edit the selected sketch"); + sWhatsThis = sToolTipText; + sStatusTip = sToolTipText; + sPixmap = "Sketcher_EditSketch"; +} + +void CmdSketcherEditSketch::activated(int iMsg) +{ + Gui::SelectionFilter SketchFilter("SELECT Sketcher::SketchObject COUNT 1"); + + if (SketchFilter.match()) { + Sketcher::SketchObject *Sketch = static_cast(SketchFilter.Result[0][0].getObject()); + openCommand("Edit Sketch"); + doCommand(Gui,"Gui.activeDocument().setEdit('%s')",Sketch->getNameInDocument()); + } +} + +bool CmdSketcherEditSketch::isActive(void) +{ + return Gui::Selection().countObjectsOfType(Sketcher::SketchObject::getClassTypeId()) == 1; +} + +DEF_STD_CMD_A(CmdSketcherLeaveSketch); + +CmdSketcherLeaveSketch::CmdSketcherLeaveSketch() + : Command("Sketcher_LeaveSketch") +{ + sAppModule = "Sketcher"; + sGroup = QT_TR_NOOP("Sketcher"); + sMenuText = QT_TR_NOOP("Leave sketch"); + sToolTipText = QT_TR_NOOP("Close the editing of the sketch"); + sWhatsThis = sToolTipText; + sStatusTip = sToolTipText; + sPixmap = "Sketcher_LeaveSketch"; + eType = 0; +} + +void CmdSketcherLeaveSketch::activated(int iMsg) +{ + openCommand("Sketch changed"); + doCommand(Gui,"Gui.activeDocument().resetEdit()"); + doCommand(Doc,"App.ActiveDocument.recompute()"); + commitCommand(); + +} + +bool CmdSketcherLeaveSketch::isActive(void) +{ + Gui::Document *doc = getActiveGuiDocument(); + if (doc) { + // checks if a Sketch Viewprovider is in Edit and is in no special mode + SketcherGui::ViewProviderSketch* vp = dynamic_cast(doc->getInEdit()); + if (vp && vp->getSketchMode() == ViewProviderSketch::STATUS_NONE) + return true; + } + return false; +} + DEF_STD_CMD_A(CmdSketcherReorientSketch); CmdSketcherReorientSketch::CmdSketcherReorientSketch() @@ -368,43 +428,6 @@ bool CmdSketcherMapSketch::isActive(void) return getActiveGuiDocument() != 0; } - -DEF_STD_CMD_A(CmdSketcherLeaveSketch); - -CmdSketcherLeaveSketch::CmdSketcherLeaveSketch() - : Command("Sketcher_LeaveSketch") -{ - sAppModule = "Sketcher"; - sGroup = QT_TR_NOOP("Sketcher"); - sMenuText = QT_TR_NOOP("Leave sketch"); - sToolTipText = QT_TR_NOOP("Close the editing of the sketch"); - sWhatsThis = sToolTipText; - sStatusTip = sToolTipText; - sPixmap = "Sketcher_LeaveSketch"; - eType = 0; -} - -void CmdSketcherLeaveSketch::activated(int iMsg) -{ - openCommand("Sketch changed"); - doCommand(Gui,"Gui.activeDocument().resetEdit()"); - doCommand(Doc,"App.ActiveDocument.recompute()"); - commitCommand(); - -} - -bool CmdSketcherLeaveSketch::isActive(void) -{ - Gui::Document *doc = getActiveGuiDocument(); - if (doc) { - // checks if a Sketch Viewprovider is in Edit and is in no special mode - SketcherGui::ViewProviderSketch* vp = dynamic_cast(doc->getInEdit()); - if (vp && vp->getSketchMode() == ViewProviderSketch::STATUS_NONE) - return true; - } - return false; -} - DEF_STD_CMD_A(CmdSketcherViewSketch); CmdSketcherViewSketch::CmdSketcherViewSketch() @@ -482,9 +505,10 @@ void CreateSketcherCommands(void) Gui::CommandManager &rcCmdMgr = Gui::Application::Instance->commandManager(); rcCmdMgr.addCommand(new CmdSketcherNewSketch()); + rcCmdMgr.addCommand(new CmdSketcherEditSketch()); + rcCmdMgr.addCommand(new CmdSketcherLeaveSketch()); rcCmdMgr.addCommand(new CmdSketcherReorientSketch()); rcCmdMgr.addCommand(new CmdSketcherMapSketch()); - rcCmdMgr.addCommand(new CmdSketcherLeaveSketch()); rcCmdMgr.addCommand(new CmdSketcherViewSketch()); rcCmdMgr.addCommand(new CmdSketcherValidateSketch()); } diff --git a/src/Mod/Sketcher/Gui/Resources/Sketcher.qrc b/src/Mod/Sketcher/Gui/Resources/Sketcher.qrc index cb912585e..af0ec61ab 100644 --- a/src/Mod/Sketcher/Gui/Resources/Sketcher.qrc +++ b/src/Mod/Sketcher/Gui/Resources/Sketcher.qrc @@ -64,6 +64,7 @@ icons/Sketcher_DraftLine.svg icons/Sketcher_Trimming.svg icons/Sketcher_External.svg + icons/Sketcher_EditSketch.svg icons/Sketcher_LeaveSketch.svg icons/Sketcher_MapSketch.svg icons/Sketcher_NewSketch.svg diff --git a/src/Mod/Sketcher/Gui/Resources/icons/Sketcher_EditSketch.svg b/src/Mod/Sketcher/Gui/Resources/icons/Sketcher_EditSketch.svg new file mode 100644 index 000000000..2e92cb42e --- /dev/null +++ b/src/Mod/Sketcher/Gui/Resources/icons/Sketcher_EditSketch.svg @@ -0,0 +1,278 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + diff --git a/src/Mod/Sketcher/Gui/Workbench.cpp b/src/Mod/Sketcher/Gui/Workbench.cpp index 08f8dab32..be268272d 100644 --- a/src/Mod/Sketcher/Gui/Workbench.cpp +++ b/src/Mod/Sketcher/Gui/Workbench.cpp @@ -108,6 +108,7 @@ Gui::MenuItem* Workbench::setupMenuBar() const *sketch << "Sketcher_NewSketch" + << "Sketcher_EditSketch" << "Sketcher_LeaveSketch" << "Sketcher_ViewSketch" << "Sketcher_MapSketch"