Salome HOME
additional erase-all flag in CurveCreator_Curve
authorisn <isn@opencascade.com>
Wed, 8 Nov 2017 12:14:12 +0000 (15:14 +0300)
committerisn <isn@opencascade.com>
Wed, 8 Nov 2017 12:14:12 +0000 (15:14 +0300)
src/CurveCreator/CurveCreator_Curve.cxx
src/CurveCreator/CurveCreator_Curve.hxx

index a2add5ddbb423249ac56a6c1e618893d54526341..35843c83a7b8ec70dcbf16942592ba4eee3fe545 100644 (file)
@@ -59,6 +59,7 @@ CurveCreator_Curve::CurveCreator_Curve( const CurveCreator::Dimension theDimensi
   mySkipSorting(false),
   myPointAspectColor (Quantity_NOC_ROYALBLUE4), 
   myCurveColor (Quantity_NOC_RED),
+  myEraseAll(true),
   myLineWidth(1)
 {
 }
@@ -363,8 +364,12 @@ bool CurveCreator_Curve::redo()
 bool CurveCreator_Curve::clearInternal()
 {
   // erase curve from the viewer
-  if( myDisplayer ) {
-    myDisplayer->eraseAll( true );
+  if( myDisplayer )
+  {
+    if (myEraseAll)
+      myDisplayer->eraseAll( true );
+    else
+      myDisplayer->erase(myAISShape, false);
     myAISShape = NULL;
   }
   // Delete all allocated data.
@@ -400,6 +405,23 @@ bool CurveCreator_Curve::clear()
   return res;
 }
 
+//=======================================================================
+// function: clear
+// purpose:
+//=======================================================================
+void CurveCreator_Curve::SetEraseAllState(bool toEraseAll)
+{
+  myEraseAll = toEraseAll;
+}
+//=======================================================================
+// function: clear
+// purpose:
+//=======================================================================
+bool CurveCreator_Curve::GetEraseAllState() const
+{
+  return myEraseAll;
+}
+
 //! For internal use only! Undo/Redo are not used here.
 bool CurveCreator_Curve::joinInternal( const std::list<int>& theSections )
 {
index 7a4cbb9ec537e47c62e7e495ac74b63bdc3b6b51..08239f4e7564c78761dbbb9ea198526644818a46 100644 (file)
@@ -140,6 +140,14 @@ public:
   //! Clear the polyline (remove all sections)
   virtual bool clear();
 
+  //! set erase-all state
+  //! if true => erase all objects from viever, else remove only the current curve
+  void SetEraseAllState(bool toEraseAll);
+
+  //! get erase-all state
+  //! if true => erase all objects from viever, else remove only the current curve
+  bool GetEraseAllState() const;
+
   //! For internal use only! Undo/Redo are not used here.
   virtual bool joinInternal( const std::list<int>& theSections );
 
@@ -338,6 +346,7 @@ private:
   int                             myUndoDepth;
   int                             myOpLevel;
   AIS_Shape*                      myAISShape;   //!< AIS shape
+  bool                            myEraseAll;
 };
 
 #endif