]> SALOME platform Git repositories - modules/shaper.git/commitdiff
Salome HOME
refs #30 - Sketch base GUI: create, draw lines
authornds <natalia.donis@opencascade.com>
Tue, 20 May 2014 04:46:29 +0000 (08:46 +0400)
committernds <natalia.donis@opencascade.com>
Tue, 20 May 2014 04:46:29 +0000 (08:46 +0400)
Do not perform the selection clear/set if only one feature is modified.

src/PartSet/PartSet_Module.cpp
src/PartSet/PartSet_Module.h
src/PartSet/PartSet_OperationEditLine.cpp
src/PartSet/PartSet_OperationSketchBase.h

index 5214dd6e1d10dbaeecb3c991a5a4342ccd6fd109..0074285dd53dace26418855a315ae13020ebae25 100644 (file)
@@ -195,11 +195,9 @@ void PartSet_Module::onMultiSelectionEnabled(bool theEnabled)
   aViewer->enableMultiselection(theEnabled);
 }
 
-void PartSet_Module::onStopSelection(const std::list<XGUI_ViewerPrs>& theFeatures, const bool isStop,
-                                     const bool isToSelect)
+void PartSet_Module::onStopSelection(const std::list<XGUI_ViewerPrs>& theFeatures, const bool isStop)
 {
   XGUI_Displayer* aDisplayer = myWorkshop->displayer();
-  aDisplayer->StopSelection(theFeatures, isStop, false);
   if (!isStop) {
     std::list<XGUI_ViewerPrs>::const_iterator anIt = theFeatures.begin(), aLast = theFeatures.end();
     boost::shared_ptr<ModelAPI_Feature> aFeature;
@@ -207,8 +205,14 @@ void PartSet_Module::onStopSelection(const std::list<XGUI_ViewerPrs>& theFeature
       activateFeature((*anIt).feature(), false);
     }
   }
-  if (isToSelect)
-    aDisplayer->SetSelected(theFeatures, false);
+  aDisplayer->StopSelection(theFeatures, isStop, false);
+  aDisplayer->UpdateViewer();
+}
+
+void PartSet_Module::onSetSelection(const std::list<XGUI_ViewerPrs>& theFeatures)
+{
+  XGUI_Displayer* aDisplayer = myWorkshop->displayer();
+  aDisplayer->SetSelected(theFeatures, false);
   aDisplayer->UpdateViewer();
 }
 
@@ -269,8 +273,10 @@ ModuleBase_Operation* PartSet_Module::createOperation(const std::string& theCmdI
 
     connect(aPreviewOp, SIGNAL(multiSelectionEnabled(bool)),
             this, SLOT(onMultiSelectionEnabled(bool)));
-    connect(aPreviewOp, SIGNAL(stopSelection(const std::list<XGUI_ViewerPrs>&, const bool, const bool)),
-            this, SLOT(onStopSelection(const std::list<XGUI_ViewerPrs>&, const bool, const bool)));
+    connect(aPreviewOp, SIGNAL(stopSelection(const std::list<XGUI_ViewerPrs>&, const bool)),
+            this, SLOT(onStopSelection(const std::list<XGUI_ViewerPrs>&, const bool)));
+    connect(aPreviewOp, SIGNAL(setSelection(const std::list<XGUI_ViewerPrs>&)),
+            this, SLOT(onSetSelection(const std::list<XGUI_ViewerPrs>&)));
 
     PartSet_OperationSketch* aSketchOp = dynamic_cast<PartSet_OperationSketch*>(aPreviewOp);
     if (aSketchOp) {
index bfb57de78e397849fa8accfe82d35f20236a01a6..7078a1253f9e5d7693fcddb494985a17ceaab336 100644 (file)
@@ -95,9 +95,11 @@ public slots:
   /// SLOT, to stop or start selection mode for the features
   /// \param theFeatures a list of features to be disabled
   /// \param theToStop the boolean state whether it it stopped or non stopped
-  /// \param isToSelect the boolean state whether the features should be selected
-  void onStopSelection(const std::list<XGUI_ViewerPrs>& theFeatures, const bool isStop,
-                       const bool isToSelect);
+  void onStopSelection(const std::list<XGUI_ViewerPrs>& theFeatures, const bool isStop);
+
+  /// SLOT, to set selection
+  /// \param theFeatures a list of features to be selected
+  void onSetSelection(const std::list<XGUI_ViewerPrs>& theFeatures);
 
   /// SLOT, to visualize the feature in another local context mode
   /// \param theFeature the feature to be put in another local context mode
index 941195a5692caac9ba45b09f13babcf73c752576..f482cabefb0a75d11cdcb684bcedcfe3d4ac41c7 100644 (file)
@@ -119,7 +119,8 @@ void PartSet_OperationEditLine::startOperation()
 {
   // do nothing in order to do not create a new feature
   emit multiSelectionEnabled(false);
-  emit stopSelection(myFeatures, true, false);
+  emit setSelection(std::list<XGUI_ViewerPrs>());
+  emit stopSelection(myFeatures, true);
   myCurPoint.clear();
 }
 
@@ -127,7 +128,10 @@ void PartSet_OperationEditLine::stopOperation()
 {
   emit multiSelectionEnabled(true);
   bool isSelectFeatures = myFeatures.size() > 1;
-  emit stopSelection(myFeatures, false, isSelectFeatures);
+  emit stopSelection(myFeatures, false);
+  if (isSelectFeatures)
+    emit setSelection(myFeatures);
+
   myFeatures.clear();
 }
 
index d8154f86c247344ad21065c450540dcf7b005780..4fd20d5152a02ef583741d47382f5b06a121888e 100644 (file)
@@ -103,9 +103,10 @@ signals:
   /// signal to enable/disable selection in the viewer
   /// \param theFeatures a list of features to be disabled
   /// \param theToStop the boolean state whether it it stopped or non stopped
-  /// \param isToSelect the boolean state whether the features should be selected
-  void stopSelection(const std::list<XGUI_ViewerPrs>& theFeatures, const bool theToStop,
-                     const bool isToSelect);
+  void stopSelection(const std::list<XGUI_ViewerPrs>& theFeatures, const bool theToStop);
+  /// signal to set selection in the viewer
+  /// \param theFeatures a list of features to be disabled
+  void setSelection(const std::list<XGUI_ViewerPrs>& theFeatures);
 
   /// signal to enable/disable usual selection in the viewer
   /// \param theEnabled the boolean state