Salome HOME
Merge branch 'MessagesGroups'
authormpv <mikhail.ponikarov@opencascade.com>
Thu, 22 May 2014 14:15:29 +0000 (18:15 +0400)
committermpv <mikhail.ponikarov@opencascade.com>
Thu, 22 May 2014 14:15:29 +0000 (18:15 +0400)
Conflicts:
src/SketchSolver/SketchSolver_ConstraintManager.cpp

1  2 
src/Model/Model_Document.cpp
src/SketchSolver/SketchSolver_ConstraintManager.cpp
src/XGUI/XGUI_Workshop.cpp

Simple merge
index a2db1ce05c03adc6130145ae1d4ff06a09491f14,d8ae5bcd2e21ae7a91f7f60d63ae9208ed7e7fe7..7caf4342ca625a72908582d28b85248bada6a7bb
@@@ -72,32 -75,44 +75,45 @@@ SketchSolver_ConstraintManager::~Sketch
  void SketchSolver_ConstraintManager::processEvent(const Events_Message* theMessage)
  {
    if (theMessage->eventID() == Events_Loop::loop()->eventByName(EVENT_FEATURE_CREATED) ||
-       theMessage->eventID() == Events_Loop::loop()->eventByName(EVENT_FEATURE_UPDATED))
+       theMessage->eventID() == Events_Loop::loop()->eventByName(EVENT_FEATURE_UPDATED) || 
+       theMessage->eventID() == Events_Loop::loop()->eventByName(EVENT_FEATURE_MOVED))
    {
-     const Model_FeatureUpdatedMessage* aUpdateMsg = dynamic_cast<const Model_FeatureUpdatedMessage*>(theMessage);
+     const Model_FeatureUpdatedMessage* anUpdateMsg = dynamic_cast<const Model_FeatureUpdatedMessage*>(theMessage);
+     std::set< boost::shared_ptr<ModelAPI_Feature> > aFeatures = anUpdateMsg->features();
  
-     // Only sketches and constraints can be added by Create event
-     const std::string& aFeatureKind = aUpdateMsg->feature()->getKind();
-     if (aFeatureKind.compare("Sketch") == 0)
-     {
-       boost::shared_ptr<SketchPlugin_Feature> aSketch =
-         boost::dynamic_pointer_cast<SketchPlugin_Feature>(aUpdateMsg->feature());
-       if (aSketch)
-         changeWorkplane(aSketch);
-       return ;
-     }
-     boost::shared_ptr<SketchPlugin_Constraint> aConstraint =
-       boost::dynamic_pointer_cast<SketchPlugin_Constraint>(aUpdateMsg->feature());
-     if (aConstraint)
-       changeConstraint(aConstraint);
-     else
+     bool isModifiedEvt = theMessage->eventID() == Events_Loop::loop()->eventByName(EVENT_FEATURE_MOVED);
+     if (!isModifiedEvt)
      {
-       // Sketch plugin features can be only updated
-       boost::shared_ptr<SketchPlugin_Feature> aFeature =
-         boost::dynamic_pointer_cast<SketchPlugin_Feature>(aUpdateMsg->feature());
-       if (aFeature)
-         updateEntity(aFeature);
+       std::set< boost::shared_ptr<ModelAPI_Feature> >::iterator aFeatIter;
+       for (aFeatIter = aFeatures.begin(); aFeatIter != aFeatures.end(); aFeatIter++)
+       {
+         // Only sketches and constraints can be added by Create event
+         const std::string& aFeatureKind = (*aFeatIter)->getKind();
+         if (aFeatureKind.compare("Sketch") == 0)
+         {
+           boost::shared_ptr<SketchPlugin_Feature> aSketch =
+             boost::dynamic_pointer_cast<SketchPlugin_Feature>(*aFeatIter);
 -          changeWorkplane(aSketch);
++          if (aSketch)
++            changeWorkplane(aSketch);
+           return ;
+         }
+         boost::shared_ptr<SketchPlugin_Constraint> aConstraint =
+           boost::dynamic_pointer_cast<SketchPlugin_Constraint>(*aFeatIter);
+         if (aConstraint)
+           changeConstraint(aConstraint);
+         else
+         {
+           // Sketch plugin features can be only updated
+           boost::shared_ptr<SketchPlugin_Feature> aFeature =
+             boost::dynamic_pointer_cast<SketchPlugin_Feature>(*aFeatIter);
+           if (aFeature)
+             updateEntity(aFeature);
+         }
+       }
      }
+     // Solve the set of constraints
+     resolveConstraints();
    }
    else if (theMessage->eventID() == Events_Loop::loop()->eventByName(EVENT_FEATURE_DELETED))
    {
Simple merge