Salome HOME
DCQ : Merge with Ecole Ete a6.
[modules/visu.git] / src / VISUGUI / VisuGUI_TimeAnimation.cxx
index 3d1f175d41107d14141df6b5dedadd1db7c9b9ab..5b0779f1dc50b0d9a35454232844b1dd0af32419 100644 (file)
@@ -127,12 +127,12 @@ SetupDlg::SetupDlg(QWidget* theParent, VISU_TimeAnimation* theAnimator)
   connect( myTypeCombo, SIGNAL( activated(int) ), 
           this, SLOT( onTypeChanged(int) ) );
   
-  QPushButton* aBarBtn = new QPushButton("Scalar Bar...", aPropBox);
-  connect( aBarBtn, SIGNAL( clicked() ), 
-          this, SLOT( onScalarBarDlg() ) );
+  //  QPushButton* aBarBtn = new QPushButton("Scalar Bar...", aPropBox);
+  //connect( aBarBtn, SIGNAL( clicked() ), 
+  //      this, SLOT( onScalarBarDlg() ) );
  
   myPropBtn = new QPushButton("Properties...", aPropBox);
-  myPropBtn->setEnabled(theAnimator->getFieldData(0).myPrsType != VISU::TSCALARMAP);
+  //  myPropBtn->setEnabled(theAnimator->getFieldData(0).myPrsType != VISU::TSCALARMAP);
   connect( myPropBtn, SIGNAL( clicked() ), 
           this, SLOT( onPreferencesDlg() ) );
 
@@ -143,7 +143,7 @@ SetupDlg::SetupDlg(QWidget* theParent, VISU_TimeAnimation* theAnimator)
   QHBoxLayout* aBtnLayout = new QHBoxLayout(aBtnBox->layout()); 
   aBtnLayout->addStretch();
   
-  QPushButton* aCloseBtn = new QPushButton(tr("BUT_CLOSE"), aBtnBox);
+  QPushButton* aCloseBtn = new QPushButton(tr("VISU_BUT_OK"), aBtnBox);
   connect(aCloseBtn, SIGNAL(clicked()), this, SLOT(close()));
   
   aMainLayout->addWidget(aBtnBox);
@@ -186,7 +186,7 @@ void SetupDlg::onFieldChange(int theIndex) {
     aData.myPrsType = VISU::TSTREAMLINES;
     break;
   }  
-  myPropBtn->setEnabled(aData.myPrsType != VISU::TSCALARMAP);
+  //myPropBtn->setEnabled(aData.myPrsType != VISU::TSCALARMAP);
 }
 
 //************************************************************************
@@ -213,13 +213,13 @@ void SetupDlg::onTypeChanged(int theIndex) {
     break;
   }
   myAnimator->clearData(aData);
-  myPropBtn->setEnabled(aData.myPrsType != VISU::TSCALARMAP);
+  //myPropBtn->setEnabled(aData.myPrsType != VISU::TSCALARMAP);
   //myAnimator->generatePresentations(myFieldLst->currentItem());
 }
 
 
 //************************************************************************
-void SetupDlg::onScalarBarDlg() {
+/*void SetupDlg::onScalarBarDlg() {
   QApplication::setOverrideCursor( Qt::waitCursor );
   FieldData& aData = myAnimator->getFieldData(myFieldLst->currentItem());
   if (aData.myPrs == 0) 
@@ -233,67 +233,60 @@ void SetupDlg::onScalarBarDlg() {
       aScalarBarDlg->storeToPrsObject(aData.myPrs[i]);
   }
 }
-
+*/
 //************************************************************************
 void SetupDlg::onPreferencesDlg() {
   QApplication::setOverrideCursor( Qt::waitCursor );
   FieldData& aData = myAnimator->getFieldData(myFieldLst->currentItem());
-  if (aData.myPrs == 0)
+  if (aData.myPrs.empty())
     myAnimator->generatePresentations(myFieldLst->currentItem());
   QApplication::restoreOverrideCursor();
 
+// BUG VISU5725 : Compatibility gcc 2.95
+// #define EDITPRS(TYPE, DLG) \
+//     { \
+//       DLG* aDlg = new DLG(); \
+//       aDlg->initFromPrsObject(dynamic_cast<TYPE*>(aData.myPrs.at(0))); \
+//       if (aDlg->exec()) { \
+//     for (int i = 0; i < aData.myNbFrames; i++) \
+//       aDlg->storeToPrsObject(dynamic_cast<TYPE*>(aData.myPrs.at(i))); \
+//       } \
+//       delete aDlg; \
+//     }
+
+
+#define EDITPRS(TYPE, DLG) {DLG* aDlg = new DLG(); aDlg->initFromPrsObject(dynamic_cast<TYPE*>(aData.myPrs[0])); if (aDlg->exec()) { for (int i = 0; i < aData.myNbFrames; i++) aDlg->storeToPrsObject(dynamic_cast<TYPE*>(aData.myPrs[i])); } delete aDlg;}
+
   switch (myTypeCombo->currentItem()) {
+  case 0: //Scalar Map
+    EDITPRS(VISU::ScalarMap_i, VisuGUI_ScalarBarDlg);
+    break;
   case 1: //Iso Surfaces
-    {
-      VisuGUI_IsoSurfacesDlg* aDlg = new VisuGUI_IsoSurfacesDlg();
-      aDlg->initFromPrsObject(dynamic_cast<VISU::IsoSurfaces_i*>(aData.myPrs[0]));
-      if (aDlg->exec()) {
-       for (int i = 0; i < aData.myNbFrames; i++)
-         aDlg->storeToPrsObject(dynamic_cast<VISU::IsoSurfaces_i*>(aData.myPrs[i]));
-      }
-    }
+    EDITPRS(VISU::IsoSurfaces_i, VisuGUI_IsoSurfacesDlg);
     break;
   case 2: //Cut Planes
+    //    EDITPRS(VISU::CutPlanes_i, VisuGUI_CutPlanesDlg);
     {
-      VisuGUI_CutPlanesDlg* aDlg = new VisuGUI_CutPlanesDlg();
-      aDlg->initFromPrsObject(dynamic_cast<VISU::CutPlanes_i*>(aData.myPrs[0]));
+      VisuGUI_CutPlanesDlg* aDlg = new VisuGUI_CutPlanesDlg(false, true);
+      aDlg->initFromPrsObject(dynamic_cast<VISU::CutPlanes_i*>(aData.myPrs.at(0)));
       if (aDlg->exec()) {
        for (int i = 0; i < aData.myNbFrames; i++)
-         aDlg->storeToPrsObject(dynamic_cast<VISU::CutPlanes_i*>(aData.myPrs[i]));
+         aDlg->storeToPrsObject(dynamic_cast<VISU::CutPlanes_i*>(aData.myPrs.at(i)));
       }
+      delete aDlg;
     }
     break;
   case 3: //Deformed Shape
-    {
-      VisuGUI_MagnitudeDlg* aDlg = new VisuGUI_MagnitudeDlg();
-      aDlg->initFromPrsObject(dynamic_cast<VISU::DeformedShape_i*>(aData.myPrs[0]));      
-      if (aDlg->exec()) {
-       for (int i = 0; i < aData.myNbFrames; i++)
-         aDlg->storeToPrsObject(dynamic_cast<VISU::DeformedShape_i*>(aData.myPrs[i]));
-      }
-    }
+    EDITPRS(VISU::DeformedShape_i, VisuGUI_MagnitudeDlg);
     break;
   case 4: //Vectors
-    {
-      VisuGUI_VectorsDlg* aDlg = new VisuGUI_VectorsDlg();
-      aDlg->initFromPrsObject(dynamic_cast<VISU::Vectors_i*>(aData.myPrs[0]));
-      if (aDlg->exec()) {
-       for (int i = 0; i < aData.myNbFrames; i++)
-         aDlg->storeToPrsObject(dynamic_cast<VISU::Vectors_i*>(aData.myPrs[i]));
-      }
-    }
+    EDITPRS(VISU::Vectors_i, VisuGUI_VectorsDlg);
     break;
   case 5: //Stream Lines
-    {
-      VisuGUI_StreamLinesDlg* aDlg = new VisuGUI_StreamLinesDlg();
-      aDlg->initFromPrsObject(dynamic_cast<VISU::StreamLines_i*>(aData.myPrs[0]));
-      if (aDlg->exec()) {
-       for (int i = 0; i < aData.myNbFrames; i++)
-         aDlg->storeToPrsObject(dynamic_cast<VISU::StreamLines_i*>(aData.myPrs[i]));
-      }
-    }
+    EDITPRS(VISU::StreamLines_i, VisuGUI_StreamLinesDlg);
     break;
   }
+#undef EDITPRS
 }
 
 //************************************************************************
@@ -567,6 +560,8 @@ VisuGUI_TimeAnimationDlg::VisuGUI_TimeAnimationDlg(SALOMEDS::Study_var theStudy)
 
   mySaveCheck = new QCheckBox("Save pictures to directory", aSaveBox);
   aSaveLay->addMultiCellWidget(mySaveCheck, 0, 0, 0, 2);
+  connect(mySaveCheck, SIGNAL( toggled(bool)),
+         aWheel, SLOT( setDisabled(bool) ));
 
   QLabel* aPathLbl = new QLabel("Path:", aSaveBox);
   aPathLbl->setEnabled(false);
@@ -636,13 +631,13 @@ void VisuGUI_TimeAnimationDlg::createFrames() {
   QApplication::setOverrideCursor( Qt::waitCursor );
 
   for (int i = 0; i < myAnimator->getNbFields(); i++) {
-    if (myAnimator->getFieldData(i).myPrs == 0
+    if (myAnimator->getFieldData(i).myPrs.empty()
       myAnimator->generatePresentations(i);
   }
   if (myAnimator->getNbFrames() == 0) {
     myPlayFrame->setEnabled(false);
     QApplication::restoreOverrideCursor();
-   QMessageBox::warning(QAD_Application::getDesktop(), tr("ERROR"), tr("MSG_NO_ANIMATIONDATA")); 
+    QMessageBox::warning(QAD_Application::getDesktop(), tr("ERROR"), tr("MSG_NO_ANIMATIONDATA")); 
     return;    
   }    
   mySlider->setMaxValue(myAnimator->getNbFrames()-1);
@@ -753,6 +748,7 @@ void VisuGUI_TimeAnimationDlg::onExecution(long theNewFrame, double theTime) {
 
 //************************************************************************
 void VisuGUI_TimeAnimationDlg::onSetupDlg() {
+  if (myAnimator->getNbFrames() > 0) myAnimator->firstFrame();
   SetupDlg* aDlg = new SetupDlg(this, myAnimator);
   aDlg->exec();
   myPlayFrame->setEnabled(false);
@@ -761,7 +757,9 @@ void VisuGUI_TimeAnimationDlg::onSetupDlg() {
 
 //************************************************************************
 void VisuGUI_TimeAnimationDlg::onBrowse() {
-  myPathEdit->setText(QAD_FileDlg::getExistingDirectory(this, "/","Select path"));
+  QString aPath = QAD_FileDlg::getExistingDirectory(this, "/","Select path");
+  if (!aPath.isEmpty())
+    myPathEdit->setText(aPath);
 }