X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FPartSet%2FPartSet_OperationSketchBase.cpp;h=e8f081e4d581d19beab5a3cf4f46dc48dd91e42d;hb=e30796dab1aa68c01201b2b89d4292d3fcbbc4d4;hp=d90de1d2902bfa87aa78305a1f297c36cb329ab7;hpb=8dc74f82810d5f597b78633b457efb0ef4f89f9f;p=modules%2Fshaper.git diff --git a/src/PartSet/PartSet_OperationSketchBase.cpp b/src/PartSet/PartSet_OperationSketchBase.cpp index d90de1d29..e8f081e4d 100644 --- a/src/PartSet/PartSet_OperationSketchBase.cpp +++ b/src/PartSet/PartSet_OperationSketchBase.cpp @@ -50,20 +50,16 @@ std::list PartSet_OperationSketchBase::subFeatures() const std::list PartSet_OperationSketchBase::getSelectionModes(ObjectPtr theFeature) const { + //TODO: Define position of selection modes definition std::list aModes; - //FeaturePtr aFeature = boost::dynamic_pointer_cast(theFeature); - //if (aFeature) { - // if (PartSet_Tools::isConstraintFeature(aFeature->getKind())) { - // aModes.clear(); - // aModes.push_back(AIS_DSM_Text); - // aModes.push_back(AIS_DSM_Line); - // return aModes; - // } - //} - aModes.push_back(AIS_Shape::SelectionMode((TopAbs_ShapeEnum) TopAbs_VERTEX)); - aModes.push_back(AIS_Shape::SelectionMode((TopAbs_ShapeEnum) TopAbs_EDGE)); - aModes.push_back(AIS_DSM_Text); - aModes.push_back(AIS_DSM_Line); + FeaturePtr aFeature = boost::dynamic_pointer_cast(theFeature); + if (aFeature && PartSet_Tools::isConstraintFeature(aFeature->getKind())) { + aModes.push_back(AIS_DSM_Text); + aModes.push_back(AIS_DSM_Line); + } else { + aModes.push_back(AIS_Shape::SelectionMode((TopAbs_ShapeEnum) TopAbs_VERTEX)); + aModes.push_back(AIS_Shape::SelectionMode((TopAbs_ShapeEnum) TopAbs_EDGE)); + } return aModes; } FeaturePtr PartSet_OperationSketchBase::createFeature(const bool theFlushMessage) @@ -96,33 +92,15 @@ void PartSet_OperationSketchBase::mouseDoubleClick( { } -void PartSet_OperationSketchBase::keyReleased(const int theKey) +void PartSet_OperationSketchBase::restartOperation(const std::string& theType, ObjectPtr theFeature) { - switch (theKey) { - case Qt::Key_Escape: { - bool toAbort = true; - if (isModified()) { - int anAnswer = QMessageBox::question( - qApp->activeWindow(), tr("Cancel operation"), - tr("Operation %1 will be cancelled. Continue?").arg(id()), QMessageBox::Yes, - QMessageBox::No); - toAbort = (anAnswer == QMessageBox::Yes); - } - if (toAbort) - abort(); + FeaturePtr aFeature = ModelAPI_Feature::feature(theFeature); + if (aFeature) { + QStringList aNested = this->nestedFeatures(); + if (!aNested.isEmpty()) { + if (!aNested.contains(QString(aFeature->getKind().c_str()))) + return; } - break; - default: - break; } -} - -void PartSet_OperationSketchBase::keyReleased(std::string theName, QKeyEvent* theEvent) -{ - keyReleased(theEvent->key()); -} - -void PartSet_OperationSketchBase::restartOperation(const std::string& theType, ObjectPtr theFeature) -{ - emit launchOperation(theType, theFeature); + emit restartRequired(theType, theFeature); }