X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FPartSet%2FPartSet_SketcherMgr.cpp;h=a6ae7a8a5bcb4f656210a239a4d08275dbb4878f;hb=0b503091623876eda1ae9214e32f8831ef03778b;hp=178cf792fcbcf2acd4b9805370480fafe133608e;hpb=a21c6f9d24c7f0c4bf4f52927905c880fce67e8f;p=modules%2Fshaper.git diff --git a/src/PartSet/PartSet_SketcherMgr.cpp b/src/PartSet/PartSet_SketcherMgr.cpp index 178cf792f..a6ae7a8a5 100644 --- a/src/PartSet/PartSet_SketcherMgr.cpp +++ b/src/PartSet/PartSet_SketcherMgr.cpp @@ -48,6 +48,10 @@ #include #include #include +#include +#include +#include +#include #include #include @@ -163,6 +167,10 @@ void PartSet_SketcherMgr::onLeaveViewPort() { if (!isNestedCreateOperation(getCurrentOperation())) return; + // the method should be performed if the popup menu is called, + // the reset of the current widget should not happen + if (myIsPopupMenuActive) + return; myIsMouseOverViewProcessed = false; myIsMouseOverWindow = false; @@ -574,6 +582,10 @@ QStringList PartSet_SketcherMgr::sketchOperationIdList() aIds << SketchPlugin_ConstraintRadius::ID().c_str(); aIds << SketchPlugin_ConstraintPerpendicular::ID().c_str(); aIds << SketchPlugin_ConstraintParallel::ID().c_str(); + aIds << SketchPlugin_ConstraintHorizontal::ID().c_str(); + aIds << SketchPlugin_ConstraintVertical::ID().c_str(); + aIds << SketchPlugin_ConstraintEqual::ID().c_str(); + aIds << SketchPlugin_ConstraintTangent::ID().c_str(); } return aIds; } @@ -751,7 +763,7 @@ bool PartSet_SketcherMgr::canDisplayObject() const return aCanDisplay; } -bool PartSet_SketcherMgr::canChangeConstruction(bool& isConstruction) const +bool PartSet_SketcherMgr::canSetAuxiliary(bool& theValue) const { bool anEnabled = false; ModuleBase_Operation* anOperation = getCurrentOperation(); @@ -762,43 +774,46 @@ bool PartSet_SketcherMgr::canChangeConstruction(bool& isConstruction) const return anEnabled; QObjectPtrList anObjects; - // 1. change construction type of a created feature + // 1. change auxiliary type of a created feature if (PartSet_SketcherMgr::isNestedCreateOperation(anOperation) && PartSet_SketcherMgr::isEntityOperation(anOperation) ) { anObjects.append(anOperation->feature()); } else { - if (PartSet_SketcherMgr::isNestedSketchOperation(anOperation)) - anOperation->abort(); - // 2. change construction type of selected sketch entities + /// The operation should not be aborted here, because the method does not changed + /// the auxilliary state, but checks the possibility to perform this + ///if (PartSet_SketcherMgr::isNestedSketchOperation(anOperation)) + /// anOperation->abort(); + // 2. change auxiliary type of selected sketch entities ModuleBase_ISelection* aSelection = myModule->workshop()->selection(); anObjects = aSelection->selectedPresentations(); } anEnabled = anObjects.size() > 0; - bool isNotConstructedFound = false; + bool isNotAuxiliaryFound = false; if (anObjects.size() > 0) { QObjectPtrList::const_iterator anIt = anObjects.begin(), aLast = anObjects.end(); - for (; anIt != aLast && !isNotConstructedFound; anIt++) { + for (; anIt != aLast && !isNotAuxiliaryFound; anIt++) { FeaturePtr aFeature = ModelAPI_Feature::feature(*anIt); if (aFeature.get() != NULL) { std::shared_ptr aSketchFeature = std::dynamic_pointer_cast(aFeature); if (aSketchFeature.get() != NULL) { - std::string anAttribute = SketchPlugin_SketchEntity::CONSTRUCTION_ID(); + std::string anAttribute = SketchPlugin_SketchEntity::AUXILIARY_ID(); - std::shared_ptr aConstructionAttr = + std::shared_ptr anAuxiliaryAttr = std::dynamic_pointer_cast(aSketchFeature->data()->attribute(anAttribute)); - isNotConstructedFound = !aConstructionAttr->value(); + if (anAuxiliaryAttr) + isNotAuxiliaryFound = !anAuxiliaryAttr->value(); } } } } - isConstruction = anObjects.size() && !isNotConstructedFound; + theValue = anObjects.size() && !isNotAuxiliaryFound; return anEnabled; } -void PartSet_SketcherMgr::setConstruction(const bool isChecked) +void PartSet_SketcherMgr::setAuxiliary(const bool isChecked) { ModuleBase_Operation* anOperation = getCurrentOperation(); @@ -809,19 +824,19 @@ void PartSet_SketcherMgr::setConstruction(const bool isChecked) QObjectPtrList anObjects; bool isUseTransaction = false; - // 1. change construction type of a created feature + // 1. change auxiliary type of a created feature if (PartSet_SketcherMgr::isNestedCreateOperation(anOperation) && PartSet_SketcherMgr::isEntityOperation(anOperation) ) { anObjects.append(anOperation->feature()); } else { isUseTransaction = true; - // 2. change construction type of selected sketch entities + // 2. change auxiliary type of selected sketch entities ModuleBase_ISelection* aSelection = myModule->workshop()->selection(); anObjects = aSelection->selectedPresentations(); } - QAction* anAction = myModule->action("CONSTRUCTION_CMD"); + QAction* anAction = myModule->action("AUXILIARY_CMD"); SessionPtr aMgr = ModelAPI_Session::get(); if (isUseTransaction) { if (PartSet_SketcherMgr::isNestedSketchOperation(anOperation)) @@ -838,11 +853,12 @@ void PartSet_SketcherMgr::setConstruction(const bool isChecked) std::shared_ptr aSketchFeature = std::dynamic_pointer_cast(aFeature); if (aSketchFeature.get() != NULL) { - std::string anAttribute = SketchPlugin_SketchEntity::CONSTRUCTION_ID(); + std::string anAttribute = SketchPlugin_SketchEntity::AUXILIARY_ID(); - std::shared_ptr aConstructionAttr = + std::shared_ptr anAuxiliaryAttr = std::dynamic_pointer_cast(aSketchFeature->data()->attribute(anAttribute)); - aConstructionAttr->setValue(isChecked); + if (anAuxiliaryAttr) + anAuxiliaryAttr->setValue(isChecked); } } }