]> SALOME platform Git repositories - modules/hydro.git/commitdiff
Salome HOME
Bug #196 - Regression: modification mode is canceled after call ny context menu command
authornds <nds@opencascade.com>
Fri, 6 Dec 2013 07:03:11 +0000 (07:03 +0000)
committernds <nds@opencascade.com>
Fri, 6 Dec 2013 07:03:11 +0000 (07:03 +0000)
src/HYDROCurveCreator/CurveCreator_Widget.cxx
src/HYDROCurveCreator/CurveCreator_Widget.h

index b44a2734c36bbf4fb8465a898ce55cc5eb71b10a..581ce1491ac4d3d3fa7480689b854584f88cc151 100644 (file)
@@ -507,7 +507,7 @@ void CurveCreator_Widget::onNewSection()
   if( !myCurve )
     return;
 
-  stopModificationMode();
+  stopActionMode();
   myNewSectionEditor->clear();
   myNewSectionEditor->setEditMode(false);
   QString aSectName = QString( CurveCreator_UtilsICurve::getUniqSectionName( myCurve ).c_str() );
@@ -548,13 +548,65 @@ QAction* CurveCreator_Widget::createAction( ActionId theId, const QString& theNa
   return anAct;
 }
 
-QAction* CurveCreator_Widget::getAction(ActionId theId)
+QAction* CurveCreator_Widget::getAction( ActionId theId )
 {
   if( myActionMap.contains(theId) )
     return myActionMap[theId];
   return NULL;
 }
 
+QAction* CurveCreator_Widget::getAction( ActionMode theMode )
+{
+  ActionId anActionId = NONE_ID;
+  switch ( theMode ) {
+    case AdditionMode:
+      anActionId = ADDITION_MODE_ID;
+      break;
+    case ModificationMode:
+      anActionId = MODIFICATION_MODE_ID;
+      break;
+    case DetectionMode:
+      anActionId = DETECTION_MODE_ID;
+      break;
+    default:
+      break;
+  }
+  QAction* anAction = 0;
+  if ( anActionId != NONE_ID && myActionMap.contains( anActionId ) )
+    anAction = myActionMap[anActionId];
+  return anAction;
+}
+
+void CurveCreator_Widget::setActionMode( const ActionMode& theMode )
+{
+  ActionMode aPrevMode = getActionMode();
+  QAction* aPrevAction = getAction( aPrevMode );
+  switch ( theMode ) {
+    case NoneMode: {
+      if ( aPrevAction ) {
+        if ( aPrevAction->isChecked() )
+          aPrevAction->setChecked( false );
+      }
+      if ( aPrevMode == ModificationMode )
+        onModificationMode( false );
+      if ( aPrevMode == AdditionMode )
+        onAdditionMode( false );
+    }
+    break;
+    case AdditionMode: {
+      // TODO
+    }
+    break;
+    case ModificationMode:
+    {
+      //TODO
+    }
+    break;
+    case DetectionMode:
+      break;
+  }
+}
+
 CurveCreator_Widget::ActionMode CurveCreator_Widget::getActionMode() const
 {
   ActionMode aMode = NoneMode;
@@ -574,7 +626,7 @@ void CurveCreator_Widget::onEditSection( int theSection )
   if( !myCurve )
     return;
   
-  stopModificationMode();
+  stopActionMode();
   mySection = theSection;
   QString aSectName = QString::fromStdString( myCurve->getSectionName(theSection));
   bool isClosed = myCurve->isClosed(theSection);
@@ -613,7 +665,7 @@ void CurveCreator_Widget::onJoin()
   if( aSections.size() == 0 ){
     return;
   }
-  stopModificationMode();
+  stopActionMode();
 
   int aMainSect = aSections[0];
   int aMainSectSize = myCurve->getNbPoints(aMainSect);
@@ -649,7 +701,7 @@ void CurveCreator_Widget::onClearAll()
 {
   if( !myCurve )
     return;
-  stopModificationMode();
+  stopActionMode();
   myCurve->clear();
   mySectionView->reset();
   updateActionsStates();
@@ -660,7 +712,7 @@ void CurveCreator_Widget::onJoinAll()
 {
   if( !myCurve )
     return;
-  stopModificationMode();
+  stopActionMode();
   myCurve->join();
   mySectionView->reset();
   updateActionsStates();
@@ -676,7 +728,7 @@ void CurveCreator_Widget::onSetSpline()
 {
   if( !myCurve )
     return;
-  stopModificationMode();
+  stopActionMode();
   QList<int> aSelSections = mySectionView->getSelectedSections();
   for( int i = 0 ; i < aSelSections.size() ; i++ ){
     myCurve->setSectionType(aSelSections[i], CurveCreator::Spline );
@@ -689,7 +741,7 @@ void CurveCreator_Widget::onSetPolyline()
 {
   if( !myCurve )
     return;
-  stopModificationMode();
+  stopActionMode();
   QList<int> aSelSections = mySectionView->getSelectedSections();
   for( int i = 0 ; i < aSelSections.size() ; i++ ){
     myCurve->setSectionType( aSelSections[i], CurveCreator::Polyline );
@@ -702,7 +754,7 @@ void CurveCreator_Widget::onCloseSections()
 {
   if( !myCurve )
     return;
-  stopModificationMode();
+  stopActionMode();
   QList<int> aSelSections = mySectionView->getSelectedSections();
   for( int i = 0 ; i < aSelSections.size() ; i++ ){
     myCurve->setClosed(aSelSections[i], true);
@@ -715,7 +767,7 @@ void CurveCreator_Widget::onUncloseSections()
 {
   if( !myCurve )
     return;
-  stopModificationMode();
+  stopActionMode();
   QList<int> aSelSections = mySectionView->getSelectedSections();
   for( int i = 0 ; i < aSelSections.size() ; i++ ){
     myCurve->setClosed(aSelSections[i], false);
@@ -1010,7 +1062,7 @@ void CurveCreator_Widget::onCellChanged( int theRow, int theColumn )
  */
 void CurveCreator_Widget::removeSection()
 {
-  stopModificationMode();
+  stopActionMode();
 
   QList< QPair<int,int> > aSelPoints = mySectionView->getSelectedPoints();
   int aCurrSect=-1;
@@ -1252,14 +1304,9 @@ void CurveCreator_Widget::setSelectedPoints( const CurveCreator_ICurve::SectionT
   updateLocalPointView();
 }
 
-void CurveCreator_Widget::stopModificationMode()
+void CurveCreator_Widget::stopActionMode()
 {
-  QAction* anAction = myActionMap[MODIFICATION_MODE_ID];
-  if ( anAction ) {
-    if ( anAction->isChecked() )
-      anAction->setChecked( false );
-  }
-  onModificationMode( false );
+  setActionMode( NoneMode );
 }
 
 /**
index 7da055ae967a3229301a7ac6fdd0a3425afa9289..9243452dbac2606c9df53fea95263ec7070525ef 100644 (file)
@@ -128,7 +128,8 @@ protected:
   void     addCoordsByClick( QMouseEvent* );
 
 protected:
-  enum ActionId{ UNDO_ID, 
+  enum ActionId{ NONE_ID,
+                 UNDO_ID, 
                  REDO_ID, 
                  NEW_SECTION_ID, 
                  ADDITION_MODE_ID, 
@@ -159,6 +160,9 @@ private:
   QAction* createAction( ActionId theId, const QString& theName, const QPixmap& theImage,
                          const QString& theToolTip, const QKeySequence& theShortcut );
   QAction* getAction(ActionId theId);
+  QAction* getAction(ActionMode theMode);
+
+  void setActionMode( const ActionMode& theMode );
   ActionMode getActionMode() const;
 
   void updateActionsStates();
@@ -179,7 +183,7 @@ private:
   void setSelectedPoints( const CurveCreator_ICurve::SectionToPointList& =
                                CurveCreator_ICurve::SectionToPointList() );
 
-  void stopModificationMode();
+  void stopActionMode();
 
   void startCurveModification( CurveCreator_ICurve::SectionToPointList& thePoints,
                                const bool theFillPoints = true );