Salome HOME
Avoid of Fit all for 2d mode change
[modules/hydro.git] / src / HYDROCurveCreator / CurveCreator_Widget.cxx
index 731893a52df1200f99edd5b585b0ae271f20e306..b44a2734c36bbf4fb8465a898ce55cc5eb71b10a 100644 (file)
@@ -506,6 +506,8 @@ void CurveCreator_Widget::onNewSection()
 {
   if( !myCurve )
     return;
+
+  stopModificationMode();
   myNewSectionEditor->clear();
   myNewSectionEditor->setEditMode(false);
   QString aSectName = QString( CurveCreator_UtilsICurve::getUniqSectionName( myCurve ).c_str() );
@@ -571,6 +573,8 @@ void CurveCreator_Widget::onEditSection( int theSection )
 {
   if( !myCurve )
     return;
+  
+  stopModificationMode();
   mySection = theSection;
   QString aSectName = QString::fromStdString( myCurve->getSectionName(theSection));
   bool isClosed = myCurve->isClosed(theSection);
@@ -588,7 +592,6 @@ void CurveCreator_Widget::onModifySection()
   QString aName = myNewSectionEditor->getName();
   bool isClosed = myNewSectionEditor->isClosed();
   CurveCreator::SectionType aSectType = myNewSectionEditor->getSectionType();
-//  myCurve->startOperation();
   if( myCurve->getSectionName(mySection) != aName.toStdString() )
     myCurve->setSectionName( mySection , aName.toStdString() );
 
@@ -597,7 +600,6 @@ void CurveCreator_Widget::onModifySection()
 
   if( myCurve->isClosed(mySection) != isClosed )
     myCurve->setClosed( mySection, isClosed );
-//  myCurve->finishOperation();
   mySectionView->sectionChanged(mySection);
   updateUndoRedo();
   onCancelSection();
@@ -611,15 +613,15 @@ void CurveCreator_Widget::onJoin()
   if( aSections.size() == 0 ){
     return;
   }
+  stopModificationMode();
+
   int aMainSect = aSections[0];
   int aMainSectSize = myCurve->getNbPoints(aMainSect);
-//  myCurve->startOperation();
   for( int i = 1 ; i < aSections.size() ; i++ ){
     int aSectNum = aSections[i] - (i-1);
     myCurve->join( aMainSect, aSectNum );
     mySectionView->sectionsRemoved( aSectNum );
   }
-//  myCurve->finishOperation();
   int aNewSectSize = myCurve->getNbPoints(aMainSect);
   if( aNewSectSize != aMainSectSize )
     mySectionView->pointsAdded( aMainSect, aMainSectSize, aNewSectSize-aMainSectSize );
@@ -647,6 +649,7 @@ void CurveCreator_Widget::onClearAll()
 {
   if( !myCurve )
     return;
+  stopModificationMode();
   myCurve->clear();
   mySectionView->reset();
   updateActionsStates();
@@ -657,6 +660,7 @@ void CurveCreator_Widget::onJoinAll()
 {
   if( !myCurve )
     return;
+  stopModificationMode();
   myCurve->join();
   mySectionView->reset();
   updateActionsStates();
@@ -672,13 +676,12 @@ void CurveCreator_Widget::onSetSpline()
 {
   if( !myCurve )
     return;
+  stopModificationMode();
   QList<int> aSelSections = mySectionView->getSelectedSections();
-//  myCurve->startOperation();
   for( int i = 0 ; i < aSelSections.size() ; i++ ){
     myCurve->setSectionType(aSelSections[i], CurveCreator::Spline );
     mySectionView->sectionChanged(aSelSections[i]);
   }
-//  myCurve->finishOperation();
   updateUndoRedo();
 }
 
@@ -686,13 +689,12 @@ void CurveCreator_Widget::onSetPolyline()
 {
   if( !myCurve )
     return;
-//  myCurve->startOperation();
+  stopModificationMode();
   QList<int> aSelSections = mySectionView->getSelectedSections();
   for( int i = 0 ; i < aSelSections.size() ; i++ ){
     myCurve->setSectionType( aSelSections[i], CurveCreator::Polyline );
     mySectionView->sectionChanged( aSelSections[i] );
   }
-//  myCurve->finishOperation();
   updateUndoRedo();
 }
 
@@ -700,13 +702,12 @@ void CurveCreator_Widget::onCloseSections()
 {
   if( !myCurve )
     return;
-//  myCurve->startOperation();
+  stopModificationMode();
   QList<int> aSelSections = mySectionView->getSelectedSections();
   for( int i = 0 ; i < aSelSections.size() ; i++ ){
     myCurve->setClosed(aSelSections[i], true);
     mySectionView->sectionChanged(aSelSections[i]);
   }
-//  myCurve->finishOperation();
   updateUndoRedo();
 }
 
@@ -714,13 +715,12 @@ void CurveCreator_Widget::onUncloseSections()
 {
   if( !myCurve )
     return;
-//  myCurve->startOperation();
+  stopModificationMode();
   QList<int> aSelSections = mySectionView->getSelectedSections();
   for( int i = 0 ; i < aSelSections.size() ; i++ ){
     myCurve->setClosed(aSelSections[i], false);
     mySectionView->sectionChanged(aSelSections[i]);
   }
-//  myCurve->finishOperation();
   updateUndoRedo();
 }
 
@@ -1010,10 +1010,11 @@ void CurveCreator_Widget::onCellChanged( int theRow, int theColumn )
  */
 void CurveCreator_Widget::removeSection()
 {
+  stopModificationMode();
+
   QList< QPair<int,int> > aSelPoints = mySectionView->getSelectedPoints();
   int aCurrSect=-1;
   int aRemoveCnt = 0;
-//  myCurve->startOperation();
   for( int i = 0 ; i < aSelPoints.size() ; i++ ){
     if( aCurrSect != aSelPoints[i].first ){
       aRemoveCnt = 0;
@@ -1030,7 +1031,6 @@ void CurveCreator_Widget::removeSection()
     myCurve->removeSection( aSectNum );
     mySectionView->sectionsRemoved( aSectNum );
   }
-//  myCurve->finishOperation();
   mySectionView->clearSelection();
   updateUndoRedo();
 }
@@ -1184,7 +1184,7 @@ void CurveCreator_Widget::updateLocalPointView()
   CurveCreator_Utils::getSelectedPoints( aContext, myCurve, myLocalPoints );
   int aNbPoints = myLocalPoints.size();
   bool isRowLimit = aNbPoints > myLocalPointRowLimit;
-  myLocalPointView->setVisible( !isRowLimit );
+  myLocalPointView->setVisible( getActionMode() == ModificationMode && !isRowLimit );
 
   if ( !isRowLimit ) {
     bool isBlocked = myLocalPointView->blockSignals(true);
@@ -1252,6 +1252,16 @@ void CurveCreator_Widget::setSelectedPoints( const CurveCreator_ICurve::SectionT
   updateLocalPointView();
 }
 
+void CurveCreator_Widget::stopModificationMode()
+{
+  QAction* anAction = myActionMap[MODIFICATION_MODE_ID];
+  if ( anAction ) {
+    if ( anAction->isChecked() )
+      anAction->setChecked( false );
+  }
+  onModificationMode( false );
+}
+
 /**
  * Get viewer information before perform the curve modification.
  * Take a list of selected cuve points an close local context.