]> SALOME platform Git repositories - modules/gui.git/commitdiff
Salome HOME
Fixed bug IPAL20756 - DPE: non saved changes in notebook are lost - a warning should be
authorouv <ouv@opencascade.com>
Wed, 10 Dec 2008 10:36:22 +0000 (10:36 +0000)
committerouv <ouv@opencascade.com>
Wed, 10 Dec 2008 10:36:22 +0000 (10:36 +0000)
src/SalomeApp/SalomeApp_NoteBookDlg.cxx
src/SalomeApp/SalomeApp_NoteBookDlg.h
src/SalomeApp/resources/SalomeApp_msg_en.ts

index 62f1b57da1a3a2b5ec63b3d18804f777e3af237b..0deb518fc1207d4d6d48a11f4d80cbe458e49379 100644 (file)
@@ -268,7 +268,8 @@ bool NoteBook_TableRow::IsIntegerValue(const QString theValue, int* theResult)
 //============================================================================
 NoteBook_Table::NoteBook_Table(QWidget * parent)
   :QTableWidget(parent),
-   isProcessItemChangedSignal(false)
+   isProcessItemChangedSignal(false),
+   myIsModified(false)
 {
   setColumnCount(2);
   setSelectionMode(QAbstractItemView::SingleSelection);
@@ -473,6 +474,7 @@ bool NoteBook_Table::IsLastRow(const NoteBook_TableRow* theRow) const
 void NoteBook_Table::onItemChanged(QTableWidgetItem* theItem)
 {
   if(isProcessItemChangedSignal) {
+    bool isModified = true;
     NoteBook_TableRow* aRow = GetRowByItem(theItem);
     if(aRow) {
       int aCurrentColumn = column(theItem);
@@ -534,13 +536,22 @@ void NoteBook_Table::onItemChanged(QTableWidgetItem* theItem)
       if( myVariableMap.contains( anIndex ) )
       {
        NoteBoox_Variable& aVariable = myVariableMap[ anIndex ];
-       aVariable.Name = aRow->GetName();
-       aVariable.Value = aRow->GetValue();
+       if( aVariable.Name.compare( aRow->GetName() ) != 0 ||
+           aVariable.Value.compare( aRow->GetValue() ) != 0 )
+       {
+         aVariable.Name = aRow->GetName();
+         aVariable.Value = aRow->GetValue();
+       }
+       else
+         isModified = false;
       }
 
       if(IsCorrect && IsVariableComplited && IsLastRow(aRow))
        AddEmptyRow();
     }
+
+    if( !myIsModified )
+      myIsModified = isModified;
   }
 }
 
@@ -645,6 +656,7 @@ QList<NoteBook_TableRow*> NoteBook_Table::GetRows() const
 //============================================================================
 void NoteBook_Table::ResetMaps()
 {
+  myIsModified = false;
   myVariableMapRef = myVariableMap;
   myRemovedRows.clear();
 }
@@ -854,6 +866,18 @@ void SalomeApp_NoteBookDlg::onApply()
 //============================================================================
 void SalomeApp_NoteBookDlg::onCancel()
 {
+  if( myTable->IsModified() )
+  {
+    int answer = QMessageBox::question( this, tr( "CLOSE_CAPTION" ), tr( "CLOSE_DESCRIPTION" ),
+                                       QMessageBox::Yes, QMessageBox::No, QMessageBox::Cancel );
+    switch( answer )
+    {
+      case QMessageBox::Yes    : onOK(); return;
+      case QMessageBox::No     : break;
+      case QMessageBox::Cancel : return;
+      default :        break;
+    }
+  }
   reject();
 }
 
index 529b9245e5893edce2b8f1a8305102bd994fde39..6afd66de5e23e76d7c900d73ebc4b52d2bcad06f 100644 (file)
@@ -109,6 +109,7 @@ class SALOMEAPP_EXPORT NoteBook_Table : public QTableWidget
   bool IsUniqueName(const NoteBook_TableRow* theRow) const;
   QList<NoteBook_TableRow*> GetRows() const;
 
+  const bool         IsModified() const { return myIsModified; }
   const QList<int>&  GetRemovedRows() const { return myRemovedRows; }
   const VariableMap& GetVariableMap() const { return myVariableMap; }
   const VariableMap& GetVariableMapRef() const { return myVariableMapRef; }
@@ -125,6 +126,7 @@ class SALOMEAPP_EXPORT NoteBook_Table : public QTableWidget
   bool isProcessItemChangedSignal;
   QList<NoteBook_TableRow*>          myRows;
 
+  bool        myIsModified;
   QList<int>  myRemovedRows;
   VariableMap myVariableMapRef;
   VariableMap myVariableMap;
index 377ee1d734752db0dcc6d8b9c5ad581bd9603db7..28414a0a06a06d54a1fdc2ee4f4e6e30cf7ad7ee 100644 (file)
@@ -403,6 +403,14 @@ Do you really want to rename it?</translation>
            <source>BUT_HELP</source>
            <translation>&amp;Help</translation>
        </message>
+        <message>
+            <source>CLOSE_CAPTION</source>
+            <translation>Close NoteBook</translation>
+        </message>
+        <message>
+            <source>CLOSE_DESCRIPTION</source>
+            <translation>Do you want to save changes you made to NoteBook?</translation>
+        </message>
         <message>
            <source>INCORRECT_DATA</source>
            <translation>At least one variable has been defined incorrectly.