From 412e3db8f2d6967b5cb1d1c4d5ef1c3dc18a3353 Mon Sep 17 00:00:00 2001 From: isn Date: Wed, 8 Nov 2017 15:14:12 +0300 Subject: [PATCH] additional erase-all flag in CurveCreator_Curve --- src/CurveCreator/CurveCreator_Curve.cxx | 26 +++++++++++++++++++++++-- src/CurveCreator/CurveCreator_Curve.hxx | 9 +++++++++ 2 files changed, 33 insertions(+), 2 deletions(-) diff --git a/src/CurveCreator/CurveCreator_Curve.cxx b/src/CurveCreator/CurveCreator_Curve.cxx index a2add5ddb..35843c83a 100644 --- a/src/CurveCreator/CurveCreator_Curve.cxx +++ b/src/CurveCreator/CurveCreator_Curve.cxx @@ -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& theSections ) { diff --git a/src/CurveCreator/CurveCreator_Curve.hxx b/src/CurveCreator/CurveCreator_Curve.hxx index 7a4cbb9ec..08239f4e7 100644 --- a/src/CurveCreator/CurveCreator_Curve.hxx +++ b/src/CurveCreator/CurveCreator_Curve.hxx @@ -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& theSections ); @@ -338,6 +346,7 @@ private: int myUndoDepth; int myOpLevel; AIS_Shape* myAISShape; //!< AIS shape + bool myEraseAll; }; #endif