X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FXGUI%2FXGUI_OperationMgr.cpp;h=1110d1b8d9bfefdf774a7a27d713328e3be88db5;hb=b73fb7468bea81901dbeed8e229d742f788ec282;hp=50f690425b92de3e73a40b4e3ce721691c1bb6cb;hpb=82e5b8212960f00bb388f60650cd464696ef464d;p=modules%2Fshaper.git diff --git a/src/XGUI/XGUI_OperationMgr.cpp b/src/XGUI/XGUI_OperationMgr.cpp index 50f690425..1110d1b8d 100644 --- a/src/XGUI/XGUI_OperationMgr.cpp +++ b/src/XGUI/XGUI_OperationMgr.cpp @@ -19,9 +19,14 @@ // #include "XGUI_OperationMgr.h" + +#include "XGUI_ActiveControlMgr.h" +#include "XGUI_ActiveControlSelector.h" +#include "XGUI_FacesPanelSelector.h" #include "XGUI_ModuleConnector.h" #include "XGUI_Workshop.h" #include "XGUI_ErrorMgr.h" +#include "XGUI_FacesPanel.h" #include "XGUI_Tools.h" #include "XGUI_ObjectsBrowser.h" #include "XGUI_ContextMenuMgr.h" @@ -338,15 +343,16 @@ bool XGUI_OperationMgr::canStopOperation(ModuleBase_Operation* theOperation, if (isGrantedOperation(theOperation->id())) return true; if (theOperation && theOperation->isModified()) { + QString aTitle = theOperation->getDescription()->description(); if (theMessageKind == XGUI_AbortOperationMessage) { - QString aMessage = tr("%1 operation will be aborted.").arg(theOperation->id()); + QString aMessage = tr("%1 operation will be aborted.").arg(aTitle); myActiveMessageBox = createMessageBox(aMessage); bool aResult = myActiveMessageBox->exec() == QMessageBox::Ok; myActiveMessageBox = 0; return aResult; } else if (theMessageKind == XGUI_InformationMessage) { - QString aMessage = tr("Please validate your %1 before saving.").arg(theOperation->id()); + QString aMessage = tr("Please validate your %1 before saving.").arg(aTitle); myActiveMessageBox = createInformationBox(aMessage); myActiveMessageBox->exec(); myActiveMessageBox = 0; @@ -427,9 +433,10 @@ bool XGUI_OperationMgr::canStartOperation(const QString& theId, bool& isCommitte void XGUI_OperationMgr::stopOperation(ModuleBase_Operation* theOperation, bool& isCommitted) { - if (XGUI_Tools::workshop(myWorkshop)->errorMgr()->isApplyEnabled() && theOperation->isModified()) + if (XGUI_Tools::workshop(myWorkshop)->errorMgr()->isApplyEnabled() && + theOperation->isModified()) { isCommitted = theOperation->commit(); - else { + } else { isCommitted = false; abortOperation(theOperation); } @@ -544,6 +551,8 @@ void XGUI_OperationMgr::onBeforeOperationAborted() void XGUI_OperationMgr::onOperationAborted() { ModuleBase_Operation* aSenderOperation = dynamic_cast(sender()); + XGUI_Workshop* aWorkshop = XGUI_Tools::workshop(myWorkshop); + aWorkshop->setStatusBarMessage(""); emit operationAborted(aSenderOperation); } @@ -709,7 +718,22 @@ bool XGUI_OperationMgr::onKeyPressed(QObject *theObject, QKeyEvent* theEvent) ModuleBase_IPropertyPanel* aPanel = aOperation->propertyPanel(); ModuleBase_ModelWidget* anActiveWgt = aPanel->activeWidget(); if (anActiveWgt) + { isAccepted = anActiveWgt && anActiveWgt->processAction(ActionEscape); + if (isAccepted) { + ModuleBase_OperationFeature* aFOperation = + dynamic_cast(currentOperation()); + if (aFOperation) + aFOperation->setNeedToBeAborted(true); + } + } + } + if (!isAccepted) + { + XGUI_ActiveControlSelector* anActiveSelector = + XGUI_Tools::workshop(myWorkshop)->activeControlMgr()->activeSelector(); + if (anActiveSelector && anActiveSelector->getType() == XGUI_FacesPanelSelector::Type()) + isAccepted = XGUI_Tools::workshop(myWorkshop)->facesPanel()->processAction(ActionEscape); } // default Escape button functionality if (!isAccepted && aOperation) { @@ -730,6 +754,8 @@ bool XGUI_OperationMgr::onProcessEnter(QObject* theObject) if (!aOperation) return isAccepted; ModuleBase_IPropertyPanel* aPanel = aOperation->propertyPanel(); + if (!aPanel) + return isAccepted; // the next code is obsolete as we want to process Enter in property panel always // only property panel enter is processed in order to do not process enter in application dialogs //bool isPPChild = isChildObject(theObject, aPanel); @@ -801,6 +827,13 @@ bool XGUI_OperationMgr::onProcessDelete(QObject* theObject) } } } + if (!isAccepted) + { + XGUI_ActiveControlSelector* anActiveSelector = + XGUI_Tools::workshop(myWorkshop)->activeControlMgr()->activeSelector(); + if (anActiveSelector && anActiveSelector->getType() == XGUI_FacesPanelSelector::Type()) + isAccepted = XGUI_Tools::workshop(myWorkshop)->facesPanel()->processAction(ActionDelete); + } if (!isAccepted) { // after widget, object browser and viewer should process delete /// other widgets such as line edit controls should not lead to