+bool XGUI_OperationMgr::abortAllOperations()
+{
+ bool aResult = true;
+ if(!hasOperation())
+ return aResult;
+
+ if (operationsCount() == 1) {
+ if (canStopOperation()) {
+ abortOperation(currentOperation());
+ }
+ else
+ aResult = false;
+ }
+ else {
+ aResult = QMessageBox::question(qApp->activeWindow(),
+ tr("Abort operation"),
+ tr("All active operations will be aborted."),
+ QMessageBox::Ok | QMessageBox::Cancel,
+ QMessageBox::Cancel) == QMessageBox::Ok;
+ while(aResult && hasOperation()) {
+ abortOperation(currentOperation());
+ }
+ }
+ return aResult;
+}
+
+bool XGUI_OperationMgr::commitAllOperations()
+{
+ bool isCompositeCommitted = false;
+ while (hasOperation()) {
+ ModuleBase_Operation* anOperation = currentOperation();
+ if (isApplyEnabled()) {
+ onCommitOperation();
+ } else {
+ abortOperation(anOperation);
+ }
+ FeaturePtr aFeature = anOperation->feature();
+ CompositeFeaturePtr aComposite =
+ std::dynamic_pointer_cast<ModelAPI_CompositeFeature>(aFeature);
+ isCompositeCommitted = aComposite.get();
+ if (isCompositeCommitted)
+ break;
+ }
+ return true;
+}
+
+void XGUI_OperationMgr::onValidateOperation()
+{
+ if (!hasOperation())
+ return;
+ ModuleBase_Operation* anOperation = currentOperation();
+ if(anOperation) {
+ bool aCanCommit = myWorkshop->module()->canCommitOperation();
+ setApplyEnabled(!myIsValidationLock && aCanCommit && anOperation->isValid());
+ }
+}
+
+void XGUI_OperationMgr::setLockValidating(bool toLock)
+{
+ myIsValidationLock = toLock;
+ onValidateOperation();
+}
+
+void XGUI_OperationMgr::setApplyEnabled(const bool theEnabled)
+{
+ myIsApplyEnabled = theEnabled;
+ emit validationStateChanged(theEnabled);
+}
+
+void XGUI_OperationMgr::updateApplyOfOperations(ModuleBase_Operation* theOperation)