Sketcher: [skip ci] explicit command to stop current operation

Fore more details: https://forum.freecadweb.org/viewtopic.php?f=3&t=42207
This commit is contained in:
wmayer
2020-02-06 15:55:00 +01:00
parent 78039eb0de
commit e0f1079f1f
3 changed files with 42 additions and 0 deletions

View File

@@ -328,6 +328,45 @@ bool CmdSketcherLeaveSketch::isActive(void)
return false;
}
DEF_STD_CMD_A(CmdSketcherStopOperation)
CmdSketcherStopOperation::CmdSketcherStopOperation()
: Command("Sketcher_StopOperation")
{
sAppModule = "Sketcher";
sGroup = QT_TR_NOOP("Sketcher");
sMenuText = QT_TR_NOOP("Stop operation");
sToolTipText = QT_TR_NOOP("Stop current operation");
sWhatsThis = "Sketcher_StopOperation";
sStatusTip = sToolTipText;
sPixmap = "process-stop";
eType = 0;
}
void CmdSketcherStopOperation::activated(int iMsg)
{
Q_UNUSED(iMsg);
Gui::Document *doc = getActiveGuiDocument();
if (doc) {
SketcherGui::ViewProviderSketch* vp = dynamic_cast<SketcherGui::ViewProviderSketch*>(doc->getInEdit());
if (vp) {
vp->purgeHandler();
}
}
}
bool CmdSketcherStopOperation::isActive(void)
{
Gui::Document *doc = getActiveGuiDocument();
if (doc) {
SketcherGui::ViewProviderSketch* vp = dynamic_cast<SketcherGui::ViewProviderSketch*>(doc->getInEdit());
if (vp)
return true;
}
return false;
}
DEF_STD_CMD_A(CmdSketcherReorientSketch)
CmdSketcherReorientSketch::CmdSketcherReorientSketch()
@@ -872,6 +911,7 @@ void CreateSketcherCommands(void)
rcCmdMgr.addCommand(new CmdSketcherNewSketch());
rcCmdMgr.addCommand(new CmdSketcherEditSketch());
rcCmdMgr.addCommand(new CmdSketcherLeaveSketch());
rcCmdMgr.addCommand(new CmdSketcherStopOperation());
rcCmdMgr.addCommand(new CmdSketcherReorientSketch());
rcCmdMgr.addCommand(new CmdSketcherMapSketch());
rcCmdMgr.addCommand(new CmdSketcherViewSketch());

View File

@@ -401,6 +401,7 @@ void ViewProviderSketch::deactivateHandler()
std::vector<Base::Vector2d> editCurve;
editCurve.clear();
drawEdit(editCurve); // erase any line
resetPositionText();
edit->sketchHandler->deactivated(this);
edit->sketchHandler->unsetCursor();
delete(edit->sketchHandler);

View File

@@ -90,6 +90,7 @@ Gui::MenuItem* Workbench::setupMenuBar() const
addSketcherWorkbenchVirtualSpace(*virtualspace);
addSketcherWorkbenchSketchActions( *sketch );
*sketch << "Sketcher_StopOperation";
*sketch << geom
<< cons
<< consaccel