Salome HOME
Merge branch 'BR_H2018_3' into BR_2018_V8_5
[modules/hydro.git] / src / HYDROGUI / HYDROGUI_PriorityWidget.cxx
index 7175941cca187d7ede319a448db90aa92afa00e5..2f84a8229570b92dfa9bd6f83734042a80a5db6f 100644 (file)
@@ -154,12 +154,12 @@ HYDROGUI_PriorityWidget::HYDROGUI_PriorityWidget( QWidget* theParent )
 
   // Set resize mode
   myTable->horizontalHeader()->setStretchLastSection( false);
-  myTable->horizontalHeader()->setResizeMode( 0, QHeaderView::Stretch );
-  myTable->horizontalHeader()->setResizeMode( 1, QHeaderView::ResizeToContents );
-  myTable->horizontalHeader()->setResizeMode( 2, QHeaderView::Stretch );
-  myTable->horizontalHeader()->setResizeMode( 3, QHeaderView::ResizeToContents );
+  myTable->horizontalHeader()->setSectionResizeMode( 0, QHeaderView::Stretch );
+  myTable->horizontalHeader()->setSectionResizeMode( 1, QHeaderView::ResizeToContents );
+  myTable->horizontalHeader()->setSectionResizeMode( 2, QHeaderView::Stretch );
+  myTable->horizontalHeader()->setSectionResizeMode( 3, QHeaderView::ResizeToContents );
 
-  myTable->verticalHeader()->setResizeMode( QHeaderView::ResizeToContents );
+  myTable->verticalHeader()->setSectionResizeMode( QHeaderView::ResizeToContents );
  
   // Layout
   // buttons
@@ -185,6 +185,7 @@ HYDROGUI_PriorityWidget::HYDROGUI_PriorityWidget( QWidget* theParent )
             this, SLOT( onSelectionChanged() ) );
 
   connect( aModel, SIGNAL( showError( const QString& ) ), this, SLOT( onShowError( const QString& ) ) );
+  connect( aModel, SIGNAL( ruleChanged() ), this, SIGNAL( ruleChanged() ) );
 }
 
 /**
@@ -204,6 +205,7 @@ void HYDROGUI_PriorityWidget::onAddRule()
   if ( aModel ) {
     if (aModel->createNewRule()) {
       updateControls();
+      emit ruleChanged();
     }
   }
 }
@@ -219,13 +221,16 @@ void HYDROGUI_PriorityWidget::onRemoveRule()
   if (aModel) {
     QList<int> aRows;
 
-    QModelIndexList aSelectedIndexes = myTable->selectionModel()->selectedRows();
+    QModelIndexList aSelectedIndexes = myTable->selectionModel()->selectedIndexes();
     foreach ( const QModelIndex& anIndex, aSelectedIndexes ) {
-      aRows << anIndex.row();
+      int aRowIndex = anIndex.row();
+      if ( !aRows.contains( aRowIndex ) )
+        aRows << aRowIndex;
     }
     
     if ( aModel->removeRows( aRows ) ) {
       updateControls();
+      emit ruleChanged();
     }
   }
 }
@@ -239,6 +244,7 @@ void HYDROGUI_PriorityWidget::onClearRules()
     dynamic_cast<HYDROGUI_PriorityTableModel*>( myTable->model() );
   if ( aModel && aModel->removeAll() ) {
     updateControls();
+    emit ruleChanged();
   }
 }
 
@@ -301,7 +307,7 @@ QTableView* HYDROGUI_PriorityWidget::getTable() const
 */
 void HYDROGUI_PriorityWidget::onSelectionChanged()
 {
-  QModelIndexList aSelectedIndexes = myTable->selectionModel()->selectedRows();
+  QModelIndexList aSelectedIndexes = myTable->selectionModel()->selectedIndexes();
   myRemove->setEnabled( aSelectedIndexes.count() > 0 );
 }
 
@@ -325,4 +331,15 @@ void HYDROGUI_PriorityWidget::updateControls()
  */
 void HYDROGUI_PriorityWidget::onShowError( const QString& theMsg ) {
   SUIT_MessageBox::warning( this, tr( "INCORRECT_INPUT" ), theMsg );
-}
\ No newline at end of file
+}
+
+/**
+ Undo last change in priority rules table.
+ */
+void HYDROGUI_PriorityWidget::undoLastChange()
+{
+  HYDROGUI_PriorityTableModel* aModel = 
+    dynamic_cast<HYDROGUI_PriorityTableModel*>( myTable->model() );
+  if ( aModel )
+    aModel->undoLastChange();
+}