Salome HOME
Join modifications from branch OCC_development_for_3_2_0a2
[modules/visu.git] / src / VISUGUI / VisuGUI_StreamLinesDlg.cxx
index 503347116b09dee25e0ecfc45fbd7d0c9021f9ed..e6fa3cc2990d31d80e38b22352cb6d40a2045515 100644 (file)
@@ -9,46 +9,66 @@
 //  Module : VISU
 
 #include "VisuGUI_StreamLinesDlg.h"
-#include "VISU_StreamLines_i.hh"
+
+#include "VisuGUI.h"
+#include "VisuGUI_Tools.h"
+
 #include "VISU_Mesh_i.hh"
 #include "VISU_Gen_i.hh"
+#include "VISU_StreamLines_i.hh"
 #include "VISU_StreamLinesPL.hxx"
 #include "VISU_Actor.h"
 
-#include "QAD_Application.h"
-#include "QAD_Desktop.h"
-#include "QAD_Config.h"
-#include "QAD_MessageBox.h"
-#include "VisuGUI.h"
-#include "SALOME_Selection.h"
-#include "VTKViewer_ViewFrame.h"
+#include "SalomeApp_Application.h"
+#include "LightApp_SelectionMgr.h"
+
+#include "SVTK_ViewWindow.h"
+
+#include "SUIT_Desktop.h"
+#include "SUIT_ResourceMgr.h"
+#include "SUIT_MessageBox.h"
+
+#include "SALOME_ListIO.hxx"
+
+#include <SALOMEDSClient_SObject.hxx>
 
 #include <limits.h>
 #include <qlayout.h>
 #include <qgroupbox.h>
 #include <qcolordialog.h>
+#include <qtabwidget.h>
 
 using namespace std;
 
-extern VisuGUI *visuGUI;
-
-VisuGUI_StreamLinesDlg::VisuGUI_StreamLinesDlg()
-    : QDialog( QAD_Application::getDesktop(), "VisuGUI_StreamLinesDlg", false, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu )
+VisuGUI_StreamLinesDlg::VisuGUI_StreamLinesDlg (SalomeApp_Module* theModule)
+     : QDialog(VISU::GetDesktop(theModule), "VisuGUI_StreamLinesDlg", false,
+               WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu),
+       myVisuGUI(theModule)
 {
-  setCaption("Stream lines Preferences");
-  setSizeGripEnabled( TRUE );
+  myPrs = NULL;
+  setCaption(tr("DLG_TITLE"));
+  setSizeGripEnabled(TRUE);
+
+  QVBoxLayout* aBoxLayout = new QVBoxLayout(this);
+  aBoxLayout->setSpacing( 6 );
+  aBoxLayout->setMargin( 11 );
 
-  QGridLayout* TopLayout = new QGridLayout( this ); 
-  TopLayout->setSpacing( 6 );
+  QTabWidget* aTabBox = new QTabWidget(this);
+
+  QFrame* aTopBox = new QFrame(this);
+  aTopBox->setMargin( 11 );
+  QGridLayout* TopLayout = new QGridLayout( aTopBox );
+  TopLayout->setAlignment( Qt::AlignTop );
+  TopLayout->setSpacing( 8 );
   TopLayout->setMargin( 11 );
 
   // Source box
-  QGroupBox* aSourceBox = new QGroupBox(tr("Source"), this);
+  QGroupBox* aSourceBox = new QGroupBox (tr("SOURCE_GRP"), aTopBox);
   aSourceBox->setColumnLayout(0, Qt::Vertical);
-  QGridLayout* aSrcLayout = new QGridLayout( aSourceBox->layout() ); 
+  QGridLayout* aSrcLayout = new QGridLayout( aSourceBox->layout() );
   aSrcLayout->setSpacing( 6 );
   aSrcLayout->setMargin( 0 );
-  
+
   QLabel* aTypeLbl = new QLabel( tr( "LBL_SOURCE_TYPE" ), aSourceBox);
   aSrcLayout->addWidget(aTypeLbl, 0, 0);
 
@@ -59,138 +79,190 @@ VisuGUI_StreamLinesDlg::VisuGUI_StreamLinesDlg()
 
   mySrcCombo = new QComboBox(aSourceBox);
   mySrcCombo->setEnabled((myUseSrcCombo->currentItem() == 0));
-  
+
   connect(myUseSrcCombo, SIGNAL(activated(int)), this, SLOT(onSourceTypeChange(int)));
 
-  // Find All prs obj
-  QAD_Study* aActiveStudy =  VisuGUI::GetActiveStudy();
-  SALOME_Selection* aSel = SALOME_Selection::Selection( aActiveStudy->getSelection() );
-  if( aSel->IObjectCount() > 0 ) {
-    Handle(SALOME_InteractiveObject) aIO = aSel->firstIObject();
-    if (aIO->hasEntry()){
-      SALOMEDS::SObject_var aSObject = VisuGUI::GetStudyDocument()->FindObjectID(aIO->getEntry());
-      aSObject = aSObject->GetFather();
-      aSObject = aSObject->GetFather();
+  // Find all fields and time stamps on it
+  _PTR(Study) aActiveStudy = VISU::GetCStudy(VISU::GetAppStudy(myVisuGUI));
+  LightApp_SelectionMgr* aSel = VISU::GetSelectionMgr(myVisuGUI);
+  SALOME_ListIO selected;
+  aSel->selectedObjects(selected);
+  if (selected.Extent() > 0) {
+    Handle(SALOME_InteractiveObject) aIO = selected.First();
+    if (aIO->hasEntry()) {
+      _PTR(SObject) aSObject = aActiveStudy->FindObjectID(aIO->getEntry());
+
+      _PTR(GenericAttribute) anTmpAttr;
+      if (aSObject->FindAttribute(anTmpAttr, "AttributeComment")) {
+        _PTR(AttributeComment) aTmpComment (anTmpAttr);
+        string aTmpComm = aTmpComment->Value();
+        QString aTmpstrIn (aTmpComm.c_str());
+        VISU::Storable::TRestoringMap aTmpaMap;
+        VISU::Storable::StrToMap(aTmpstrIn,aTmpaMap);
+        bool aTmpisExist;
+        VISU::VISUType aTmpType =
+          (VISU::VISUType)VISU::Storable::FindValue(aTmpaMap,"myType",&aTmpisExist).toInt();
+        switch (aTmpType) {
+        case VISU::TTIMESTAMP:
+          {
+            aSObject = aSObject->GetFather();
+            aSObject = aSObject->GetFather();
+            break;
+          }
+        case VISU::TFIELD:
+          {
+            _PTR(SObject) newSObject;
+            if(aSObject->ReferencedObject(newSObject)) aSObject = newSObject;
+            aSObject = aSObject->GetFather();
+            break;
+          }
+        case VISU::TANIMATION:
+          {
+            _PTR(ChildIterator) aTmpIter = aActiveStudy->NewChildIterator(aSObject);
+            for (aTmpIter->InitEx(true); aTmpIter->More(); aTmpIter->Next()) {
+              _PTR(SObject) aTmpChildSObj = aTmpIter->Value();
+              _PTR(SObject) newSObject;
+              if(aTmpChildSObj->ReferencedObject(newSObject)){
+                aSObject = newSObject;
+                aSObject->GetFather();
+                break;
+              }
+            }
+            break;
+          }
+        }
+      }
+
       aSObject = aSObject->GetFather();
       aSObject = aSObject->GetFather();
+
       mySelectionObj = aSObject;
-      CORBA::Object_var anObject = VISU::SObjectToObject(mySelectionObj);
-      VISU::Result_var aResult;
+      CORBA::Object_var anObject = VISU::ClientSObjectToObject(mySelectionObj);
       if (CORBA::is_nil(anObject)) {
        mySelectionObj = mySelectionObj->GetFather();
       }
-      SALOMEDS::ChildIterator_var aIter = VisuGUI::GetStudyDocument()->NewChildIterator( mySelectionObj );
-
-      for (aIter->InitEx(true); aIter->More(); aIter->Next() ) {
-       SALOMEDS::SObject_var aChildSObj = aIter->Value();
-       CORBA::Object_var aChildObject = VISU::SObjectToObject( aChildSObj );
-
-       if(!CORBA::is_nil( aChildObject ) ) {
-         VISU::Prs3d_var aPrsObj = VISU::Prs3d::_narrow( aChildObject );
-         if( !CORBA::is_nil( aPrsObj ) ) { // if this is a Prs object
-           if ((aPrsObj->GetType() != VISU::TSTREAMLINES) && 
-               (aPrsObj->GetType() != VISU::TMESH)) {
-             SALOMEDS::GenericAttribute_var anAttr;
-             if ( aChildSObj->FindAttribute(anAttr, "AttributeName") ) {           
-               SALOMEDS::AttributeName_var aName = SALOMEDS::AttributeName::_narrow(anAttr);
-               myPrsLst += QString(aName->Value());
-               myPrsList.append(aPrsObj);
-               continue;
-             }
-           }
-         }
-       }
-       // else { // This is not a Prs object
-       SALOMEDS::GenericAttribute_var anAttr;
-       if (aChildSObj->FindAttribute(anAttr, "AttributeComment")) {
-         SALOMEDS::AttributeComment_var aComment = SALOMEDS::AttributeComment::_narrow(anAttr);
-         string aComm = aComment->Value();
-         QString strIn(aComm.c_str());
-         VISU::Storable::TRestoringMap aMap;
-         VISU::Storable::StrToMap(strIn,aMap);
-         bool isExist;
-         VISU::VISUType aType = (VISU::VISUType)VISU::Storable::FindValue(aMap,"myType",&isExist).toInt();
-         if (isExist) {
-           if ((aType == VISU::TFAMILY) || (aType == VISU::TGROUP) || (aType == VISU::TENTITY)) { 
-             SALOMEDS::GenericAttribute_var aNameAttr;
-             if ( aChildSObj->FindAttribute(aNameAttr, "AttributeName") ) {        
-               SALOMEDS::AttributeName_var aName = SALOMEDS::AttributeName::_narrow(aNameAttr);
-               VISU::Prs3d_var aPrsObj = VISU::Prs3d::_narrow( aChildObject );
-               switch(aType) {
-               case VISU::TFAMILY:
-                 myFamilisLst += QString(aName->Value());
-                 myFamilyList.append(aPrsObj);
-                 break;
-               case VISU::TGROUP:
-                 myGroupsLst += QString(aName->Value());
-                 myGroupList.append(aPrsObj);
-                 break;
-               case VISU::TENTITY:
-                 myEntitiesLst += QString(aName->Value());
-                 myEntityList.append(aPrsObj);
-                 break;
-               }
-             }
-           }
-         }
-       }
+    }
+  }
+
+  if (mySelectionObj) {
+    _PTR(ChildIterator) aIter = aActiveStudy->NewChildIterator(mySelectionObj);
+
+    for (aIter->InitEx(true); aIter->More(); aIter->Next()) {
+      _PTR(SObject) aChildSObj = aIter->Value();
+      CORBA::Object_var aChildObject = VISU::ClientSObjectToObject(aChildSObj);
+
+      if (!CORBA::is_nil(aChildObject)) {
+        VISU::Prs3d_var aPrsObj = VISU::Prs3d::_narrow(aChildObject);
+        if (!CORBA::is_nil(aPrsObj)) { // if this is a Prs object
+          if ((aPrsObj->GetType() != VISU::TSTREAMLINES) &&
+              (aPrsObj->GetType() != VISU::TMESH)) {
+            _PTR(GenericAttribute) anAttr;
+            if (aChildSObj->FindAttribute(anAttr, "AttributeName")) {
+              _PTR(AttributeName) aName (anAttr);
+              myPrsLst += QString(aName->Value().c_str());
+              myPrsList.append(aPrsObj);
+              continue;
+            }
+          }
+        }
+      }
+
+      _PTR(GenericAttribute) anAttr;
+      if (aChildSObj->FindAttribute(anAttr, "AttributeComment")) {
+        _PTR(AttributeComment) aComment (anAttr);
+        string aComm = aComment->Value();
+        QString strIn (aComm.c_str());
+        VISU::Storable::TRestoringMap aMap;
+        VISU::Storable::StrToMap(strIn,aMap);
+        bool isExist;
+        VISU::VISUType aType = (VISU::VISUType)VISU::Storable::FindValue(aMap,"myType",&isExist).toInt();
+        if (isExist) {
+          if ((aType == VISU::TFAMILY) || (aType == VISU::TGROUP) || (aType == VISU::TENTITY)) {
+            _PTR(GenericAttribute) aNameAttr;
+            if (aChildSObj->FindAttribute(aNameAttr, "AttributeName")) {
+              _PTR(AttributeName) aName (aNameAttr);
+              VISU::Prs3d_var aPrsObj = VISU::Prs3d::_narrow(aChildObject);
+              switch (aType) {
+              case VISU::TFAMILY:
+                myFamilisLst += QString(aName->Value().c_str());
+                myFamilyList.append(aPrsObj);
+                break;
+              case VISU::TGROUP:
+                myGroupsLst += QString(aName->Value().c_str());
+                myGroupList.append(aPrsObj);
+                break;
+              case VISU::TENTITY:
+                myEntitiesLst += QString(aName->Value().c_str());
+                myEntityList.append(aPrsObj);
+                break;
+              }
+            }
+          }
+        }
       }
     }
-  }  
+  }
+
   //  connect(myUseSrcChk, SIGNAL(toggled(bool)), mySrcCombo, SLOT(setEnabled(bool)));
   aSrcLayout->addMultiCellWidget(mySrcCombo, 1, 1, 0, 1);
 
-  QLabel* aPercentLbl = new QLabel( tr( "Used points (0..1)" ), aSourceBox);
+  QLabel* aPercentLbl = new QLabel (tr("LBL_USED_POINTS"), aSourceBox);
   aSrcLayout->addWidget(aPercentLbl, 2, 0);
 
-  myPntPercent = new QAD_SpinBoxDbl( aSourceBox, 0, 1, 0.1);
+  myPntPercent = new QtxDblSpinBox( 0, 1, 0.1, aSourceBox );
   aSrcLayout->addWidget(myPntPercent, 2, 1);
 
   TopLayout->addMultiCellWidget(aSourceBox, 0, 0, 0, 1);
 
-
-  QLabel* aStepLenLbl = new QLabel( tr( "Step Length" ), this);
+  QLabel* aStepLenLbl = new QLabel (tr("LBL_STEP_LENGTH"), aTopBox);
   TopLayout->addWidget(aStepLenLbl, 1, 0);
-  myStepLen = new QAD_SpinBoxDbl( this, DBL_MIN, DBL_MAX, 0.1);
+  myStepLen = new QtxDblSpinBox( DBL_MIN, DBL_MAX, 0.1, aTopBox );
   myStepLen->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
   TopLayout->addWidget(myStepLen, 1, 1);
   connect(myStepLen, SIGNAL(valueChanged(double)), this, SLOT(StepLengthChanged(double)));
 
-  QLabel* aIntegStepLenLbl = new QLabel( tr( "Integration Step" ), this);
+  QLabel* aIntegStepLenLbl = new QLabel (tr("LBL_INTEGRATION_STEP"), aTopBox);
   TopLayout->addWidget(aIntegStepLenLbl, 2, 0);
-  myIntegStepLen = new QAD_SpinBoxDbl( this, DBL_MIN, DBL_MAX, 0.1);
+  myIntegStepLen = new QtxDblSpinBox( DBL_MIN, DBL_MAX, 0.1, aTopBox );
   myIntegStepLen->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
   TopLayout->addWidget(myIntegStepLen, 2, 1);
   connect(myIntegStepLen, SIGNAL(valueChanged(double)), this, SLOT(IntegrationStepChanged(double)));
-  
-  QLabel* aPropagationLbl = new QLabel( tr( "Propagation Time" ), this);
+
+  QLabel* aPropagationLbl = new QLabel (tr("LBL_PROPAGATION_TIME"), aTopBox);
   TopLayout->addWidget(aPropagationLbl, 3, 0);
-  myPropTime = new QAD_SpinBoxDbl( this, DBL_MIN, DBL_MAX, 1);
+  myPropTime = new QtxDblSpinBox( DBL_MIN, DBL_MAX, 1, aTopBox );
   myPropTime->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
   TopLayout->addWidget(myPropTime, 3, 1);
   connect(myPropTime, SIGNAL(valueChanged(double)), this, SLOT(PropagationTimeChanged(double)));
-  
-  QLabel* aDirLbl = new QLabel( tr( "Direction" ), this);
+
+  QLabel* aDirLbl = new QLabel (tr("LBL_DIRECTION"),aTopBox);
   TopLayout->addWidget(aDirLbl, 4, 0);
-  myDirCombo = new QComboBox(this);
+  myDirCombo = new QComboBox(aTopBox);
   myDirCombo->insertItem("Forward");
   myDirCombo->insertItem("Backward");
   myDirCombo->insertItem("Both");
   TopLayout->addWidget(myDirCombo, 4, 1);
 
-  myUseScalar = new QCheckBox( tr( "Magnitude coloring" ), this, "UseMagn" );
+  myUseScalar = new QCheckBox (tr("MAGNITUDE_COLORING_CHK"), aTopBox, "UseMagn");
   connect( myUseScalar, SIGNAL( clicked() ), this, SLOT( enableSetColor() ) );
   TopLayout->addWidget(myUseScalar, 5, 0);
 
-  SelColor = new QPushButton( tr( "Use Color" ), this, "SelColor" );
+  SelColor = new QPushButton (tr("USE_COLOR_BTN"), aTopBox, "SelColor");
   connect( SelColor,     SIGNAL( clicked() ), this, SLOT( setVColor() ) );
   TopLayout->addWidget( SelColor, 5, 1);
+
+  aTabBox->addTab(aTopBox, "Stream Lines");
+  myScalarPane = new VisuGUI_ScalarBarPane(this, false);
+  myScalarPane->setMargin( 5 );
+  aTabBox->addTab(myScalarPane, "Scalar Bar");
+
+  aBoxLayout->addWidget(aTabBox);
+
   QGroupBox* aGroupButtons = new QGroupBox( this, "GroupButtons" );
   aGroupButtons->setColumnLayout(0, Qt::Vertical );
   aGroupButtons->layout()->setSpacing( 0 );
   aGroupButtons->layout()->setMargin( 0 );
-  
+
   QGridLayout* aGroupButtonsLayout = new QGridLayout( aGroupButtons->layout() );
   aGroupButtonsLayout->setAlignment( Qt::AlignTop );
   aGroupButtonsLayout->setSpacing( 6 );
@@ -207,22 +279,39 @@ VisuGUI_StreamLinesDlg::VisuGUI_StreamLinesDlg()
   aGroupButtonsLayout->addWidget( aCancelBtn, 0, 2 );
   connect( aOkBtn,     SIGNAL( clicked() ), this, SLOT( accept() ) );
   connect( aCancelBtn, SIGNAL( clicked() ), this, SLOT( reject() ) );
-  TopLayout->addMultiCellWidget( aGroupButtons, 6, 6, 0, 1 );
+
+  aBoxLayout->addWidget(aGroupButtons);
+
   enableSetColor();
 }
 
 
+void VisuGUI_StreamLinesDlg::initFromPrsObject (VISU::StreamLines_i* thePrs)
+{
+  myScalarPane->initFromPrsObject(thePrs);
+
+  myPrs = thePrs;
+  static int aNbOfSteps = 30;
+  VISU_StreamLinesPL* aStreamLinesPL = thePrs->GetStreamLinesPL();
+  float aMin, aMax;
+  aMin = aStreamLinesPL->GetMinPropagationTime();
+  aMax = aStreamLinesPL->GetMaxPropagationTime();
+  myPropTime->setRange(aMin,aMax);
+  myPropTime->setValue(aStreamLinesPL->GetPropagationTime());
+  myPropTime->setLineStep((aMax-aMin)/aNbOfSteps);
+
+  aMin = aStreamLinesPL->GetMinStepLength();
+  aMax = aStreamLinesPL->GetMaxStepLength();
+  myStepLen->setRange(aMin,aMax);
+  myStepLen->setValue(aStreamLinesPL->GetStepLength());
+  myStepLen->setLineStep((aMax-aMin)/aNbOfSteps);
+
+  aMin = aStreamLinesPL->GetMinIntegrationStep();
+  aMax = aStreamLinesPL->GetMaxIntegrationStep();
+  myIntegStepLen->setRange(aMin,aMax);
+  myIntegStepLen->setValue(aStreamLinesPL->GetIntegrationStep());
+  myIntegStepLen->setLineStep((aMax-aMin)/aNbOfSteps);
 
-void VisuGUI_StreamLinesDlg::initFromPrsObject(VISU::StreamLines_i* thePrs) {
-  myPropTime->setValue(thePrs->GetPropagationTime());
-
-  myStepLen->setRange(VISU_StreamLinesPL::GetMinStepLength(thePrs->GetIntegrationStep()),
-                     VISU_StreamLinesPL::GetMaxStepLength(thePrs->GetPropagationTime()));
-  myStepLen->setValue(thePrs->GetStepLength());
-  
-  myIntegStepLen->setRange(thePrs->GetMinIntegrationStep(),thePrs->GetMaxIntegrationStep());
-  myIntegStepLen->setValue(thePrs->GetIntegrationStep());
-  
   switch (thePrs->GetDirection()) {
   case VISU::StreamLines::FORWARD:
     myDirCombo->setCurrentItem(0);
@@ -235,18 +324,18 @@ void VisuGUI_StreamLinesDlg::initFromPrsObject(VISU::StreamLines_i* thePrs) {
   }
   myUseScalar->setChecked(thePrs->IsColored());
   myPntPercent->setValue(thePrs->GetUsedPoints());
-  
+
   mySrcCombo->setEnabled(false);
   QString aSrcEntry = thePrs->GetSourceEntry();
-  
+
   SALOMEDS::Color anOldColor = thePrs->GetColor();
   QColor aColor = QColor(int(255*anOldColor.R),int(255*anOldColor.G),int(255*anOldColor.B));
   setColor(aColor);
   enableSetColor();
-  
+
 #define INITPRS(PRSLIST, PRSNUM) \
     for (int i = 0; i < PRSLIST.count(); i++) { \
-      VISU::Prs3d_i* aPrs = dynamic_cast<VISU::Prs3d_i*>(VISU::GetServant(PRSLIST[i])); \
+      VISU::Prs3d_i* aPrs = dynamic_cast<VISU::Prs3d_i*>(VISU::GetServant(PRSLIST[i]).in()); \
       if (aPrs == NULL) continue; \
       if (aSrcEntry == aPrs->GetEntry()) { \
         onSourceTypeChange(PRSNUM); \
@@ -256,80 +345,83 @@ void VisuGUI_StreamLinesDlg::initFromPrsObject(VISU::StreamLines_i* thePrs) {
        return; \
       } \
     }
-  
+
   if (!aSrcEntry.isEmpty()) {
     INITPRS(myEntityList, 1);
     INITPRS(myFamilyList, 2);
-    INITPRS(myGroupList, 3);    
+    INITPRS(myGroupList, 3);
     INITPRS(myPrsList, 4);
   }
-  
 #undef INITPRS
-
 }
 
+int VisuGUI_StreamLinesDlg::storeToPrsObject (VISU::StreamLines_i* thePrs)
+{
+  bool isAccepted = myScalarPane->storeToPrsObject(thePrs);
+  if (isAccepted) {
+    thePrs->ShowColored(myUseScalar->isChecked());
+    if (!thePrs->IsColored()) {
+      SALOMEDS::Color aColor;
+      aColor.R = myColor.red()/255.;
+      aColor.G = myColor.green()/255.;
+      aColor.B = myColor.blue()/255.;
+      thePrs->SetColor(aColor);
+    }
 
-
-void VisuGUI_StreamLinesDlg::storeToPrsObject(VISU::StreamLines_i* thePrs) {
-  //Order of setting of the values are important 
-  thePrs->SetIntegrationStep(myIntegStepLen->value());
-  thePrs->SetPropagationTime(myPropTime->value());
-  thePrs->SetStepLength(myStepLen->value());
-  switch (myDirCombo->currentItem()) {
-  case 0:
-    thePrs->SetDirection(VISU::StreamLines::FORWARD);
-    break;
-  case 1:
-    thePrs->SetDirection(VISU::StreamLines::BACKWARD);
-    break;
-  case 2:
-    thePrs->SetDirection(VISU::StreamLines::BOTH);
-  }
-  thePrs->ShowColored(myUseScalar->isChecked());
-  if(!thePrs->IsColored()){
-    SALOMEDS::Color aColor;
-    aColor.R = myColor.red()/255.;
-    aColor.G = myColor.green()/255.;
-    aColor.B = myColor.blue()/255.;
-    thePrs->SetColor(aColor);
-  }
-  thePrs->SetUsedPoints(myPntPercent->value());
-
-  int aSrcSelection = myUseSrcCombo->currentItem();
-  int aSrcItem = (mySrcCombo->count() > 0)? mySrcCombo->currentItem() : -1;
-  if ((aSrcSelection > 0) && (aSrcItem > -1)) {
-    VISU::Prs3d_var aPrs;
-    VISU::VISUType aType;
-    QString aName;
-    switch (aSrcSelection){
-    case 1: // Entity
-      aPrs = myEntityList[aSrcItem];
-      aType = VISU::TENTITY;
-      aName = myEntitiesLst[aSrcItem];
+    VISU::StreamLines::Direction aDirection = VISU::StreamLines::BOTH;
+    switch (myDirCombo->currentItem()) {
+    case 0:
+      aDirection = VISU::StreamLines::FORWARD;
       break;
-    case 2: // Family
-      aPrs = myFamilyList[aSrcItem];
-      aType = VISU::TFAMILY;
-      aName = myFamilisLst[aSrcItem];
-      break;
-    case 3: // Group
-      aPrs = myGroupList[aSrcItem];
-      aType = VISU::TGROUP;
-      aName = myGroupsLst[aSrcItem];
-      break;
-    case 4: // Presentation
-      aPrs = myPrsList[aSrcItem];
+    case 1:
+      aDirection = VISU::StreamLines::BACKWARD;
       break;
+    case 2:
+      aDirection = VISU::StreamLines::BOTH;
     }
-    if (!CORBA::is_nil( aPrs )) {
-      thePrs->SetSource(aPrs);
-    } else if (aSrcSelection == 4) {
-      thePrs->SetSource(VISU::Prs3d::_nil());
-    } else { // Create Mesh presentation
-      thePrs->SetSource(createMesh(aType, aName));
+
+    VISU::Prs3d_var aPrs;
+    int aSrcSelection = myUseSrcCombo->currentItem();
+    int aSrcItem = (mySrcCombo->count() > 0)? mySrcCombo->currentItem() : -1;
+    if ((aSrcSelection > 0) && (aSrcItem > -1)) {
+      VISU::VISUType aType;
+      QString aName;
+      switch (aSrcSelection) {
+      case 1: // Entity
+       aPrs = myEntityList[aSrcItem];
+       aType = VISU::TENTITY;
+       aName = myEntitiesLst[aSrcItem];
+       break;
+      case 2: // Family
+       aPrs = myFamilyList[aSrcItem];
+       aType = VISU::TFAMILY;
+       aName = myFamilisLst[aSrcItem];
+       break;
+      case 3: // Group
+       aPrs = myGroupList[aSrcItem];
+       aType = VISU::TGROUP;
+       aName = myGroupsLst[aSrcItem];
+       break;
+      case 4: // Presentation
+       aPrs = myPrsList[aSrcItem];
+       break;
+      }
+      if (CORBA::is_nil(aPrs) && aSrcSelection != 4) {
+       aPrs = createMesh(aType, aName);
+      }
     }
-  } else 
-    thePrs->SetSource(VISU::Prs3d::_nil());  
+    isAccepted = thePrs->SetParams(myIntegStepLen->value(),
+                                  myPropTime->value(),
+                                  myStepLen->value(),
+                                  aPrs,
+                                  myPntPercent->value(),
+                                  aDirection);
+  }
+  //if (!isAccepted)
+  //  SUIT_MessageBox::warn1(VisuGUI::application()->desktop(), tr("WRN_VISU"),
+  //                         tr("ERR_CANT_BUILD_PRESENTATION"),
+  //                         tr("BUT_OK"));
+  return isAccepted;
 }
 
 /*!
@@ -374,12 +466,10 @@ void VisuGUI_StreamLinesDlg::StepLengthChanged(double theValue){
 }
 
 void VisuGUI_StreamLinesDlg::IntegrationStepChanged(double theValue) {
-  PropagationTimeChanged(myPropTime->value());
 }
 
 void VisuGUI_StreamLinesDlg::PropagationTimeChanged(double theValue) {
-  myStepLen->setMinValue(VISU_StreamLinesPL::GetMinStepLength(myIntegStepLen->value()));
-  myStepLen->setMaxValue(VISU_StreamLinesPL::GetMaxStepLength(myPropTime->value()));
+  myStepLen->setMaxValue(theValue);
 }
 
 void VisuGUI_StreamLinesDlg::onSourceTypeChange(int theIndex) {
@@ -407,27 +497,30 @@ void VisuGUI_StreamLinesDlg::onSourceTypeChange(int theIndex) {
 }
 
 
-VISU::Mesh_var VisuGUI_StreamLinesDlg::createMesh(VISU::VISUType theType, QString theName) {
-  CORBA::Object_var anObject = VISU::SObjectToObject(mySelectionObj);
+VISU::Mesh_ptr VisuGUI_StreamLinesDlg::createMesh (VISU::VISUType theType, QString theName)
+{
+  return VISU::Mesh::_nil();
+/*
+  CORBA::Object_var anObject = VISU::ClientSObjectToObject(mySelectionObj);
   VISU::Result_var aResult;
   if (!CORBA::is_nil(anObject)) {
     aResult = VISU::Result::_narrow(anObject);
   }
-  if(CORBA::is_nil(aResult)) {
-    QAD_MessageBox::warn1(QAD_Application::getDesktop(), tr ("VISU_WARNING"),
-                         tr ("WRN_NO_AVAILABLE_DATA"),
-                         tr ("VISU_BUT_OK"));
+  if (CORBA::is_nil(aResult)) {
+    SUIT_MessageBox::warn1(VisuGUI::application()->desktop(), tr("VISU_WARNING"),
+                           tr("WRN_NO_AVAILABLE_DATA"),
+                           tr("BUT_OK"));
     return VISU::Mesh::_nil();
   }
-  SALOMEDS::ChildIterator_var aIter = VisuGUI::GetStudyDocument()->NewChildIterator( mySelectionObj );
+  SALOMEDSClient_ChildIterator* aIter = VisuGUI::GetStudyDocument()->NewChildIterator( mySelectionObj );
   VISU::Storable::TRestoringMap aMap;
 
   for (aIter->InitEx(true); aIter->More(); aIter->Next() ) {
-    SALOMEDS::SObject_var aChildSObj = aIter->Value();
-    SALOMEDS::GenericAttribute_var anAttr;
+    SALOMEDSClient_SObject* aChildSObj = aIter->Value();
+    SALOMEDSClient_GenericAttribute* anAttr;
     if (aChildSObj->FindAttribute(anAttr, "AttributeComment")) {
-      SALOMEDS::AttributeComment_var aComment = SALOMEDS::AttributeComment::_narrow(anAttr);
-      CORBA::String_var aComm = aComment->Value();
+      SALOMEDSClient_AttributeComment* aComment = dynamic_cast<SALOMEDSClient_AttributeComment*>( anAttr );
+      CORBA::String_var aComm = aComment->Value().c_str();
       QString strIn(aComm.in());
       aMap.clear();
       VISU::Storable::StrToMap(strIn,aMap);
@@ -436,18 +529,18 @@ VISU::Mesh_var VisuGUI_StreamLinesDlg::createMesh(VISU::VISUType theType, QStrin
       if (isExist) {
        if (aType != theType) continue;
 
-       SALOMEDS::GenericAttribute_var aNameAttr;
-       if ( aChildSObj->FindAttribute(aNameAttr, "AttributeName") ) {      
-         SALOMEDS::AttributeName_var aName = SALOMEDS::AttributeName::_narrow(aNameAttr);
+       SALOMEDSClient_GenericAttribute* aNameAttr;
+       if ( aChildSObj->FindAttribute(aNameAttr, "AttributeName") ) {
+         SALOMEDSClient_AttributeName* aName = dynamic_cast<SALOMEDSClient_AttributeName*>(aNameAttr);
          if (QString(aName->Value()) == theName) break; //use current map
        }
       }
     }
   }
-  CORBA::Object_var aMesh;
+  VISU::Mesh_var aMesh;
   QString aMeshName = VISU::Storable::FindValue(aMap,"myMeshName");
   switch (theType) {
-  case VISU::TFAMILY: 
+  case VISU::TFAMILY:
     {
       VISU::Entity anEntity = (VISU::Entity)VISU::Storable::FindValue(aMap,"myEntityId").toInt();
       aMesh = VisuGUI::GetVisuGen()->FamilyMeshOnEntity(aResult,aMeshName.latin1(),anEntity,theName.latin1());
@@ -465,26 +558,38 @@ VISU::Mesh_var VisuGUI_StreamLinesDlg::createMesh(VISU::VISUType theType, QStrin
     }
     break;
   }
-  VISU::Mesh_i* pPresent = NULL;
-  if(!CORBA::is_nil(aMesh)) 
-    pPresent = dynamic_cast<VISU::Mesh_i*>(VISU::GetServant(aMesh));
-  if (pPresent == NULL) {
-    QAD_MessageBox::warn1 ( QAD_Application::getDesktop(), tr ("VISU_WARNING"), 
-                           tr ("ERR_CANT_BUILD_PRESENTATION"), 
-                           tr ("VISU_BUT_OK") ); 
-    return VISU::Mesh::_nil();
+  if(!CORBA::is_nil(aMesh)){ // Create Actor
+    VISU::Mesh_i* pPresent = dynamic_cast<VISU::Mesh_i*>(VISU::GetServant(aMesh).in());
+    if(SVTK_ViewWindow* vf = VISU::GetViewWindow()){
+      try{
+       pPresent->SetPresentationType(VISU::POINT);
+       VISU_Actor *anActor = pPresent->CreateActor();
+       vf->AddActor(anActor);
+      }catch(...){
+       SUIT_MessageBox::warn1 ( VisuGUI::application()->desktop(), tr("VISU_WARNING"),
+                               tr("ERR_CANT_CREATE_ACTOR"),
+                               tr("BUT_OK") );
+      }
+    }
+  } else {
+    SUIT_MessageBox::warn1(VisuGUI::application()->desktop(), tr("VISU_WARNING"),
+                           tr("ERR_CANT_BUILD_PRESENTATION"),
+                           tr("BUT_OK"));
   }
-  // Create Actor
-  if(VTKViewer_ViewFrame* vf = visuGUI->GetVtkViewFrame()){
-    try{
-      pPresent->SetPresentationType(VISU::POINT);
-      VISU_Actor *anActor = pPresent->CreateActor();
-      vf->AddActor(anActor);
-    }catch(std::runtime_error& exc){
-      QAD_MessageBox::warn1 ( QAD_Application::getDesktop(), tr ("VISU_WARNING"), 
-                             tr ("ERR_CANT_CREATE_ACTOR"), 
-                             tr ("VISU_BUT_OK") ); 
+  return aMesh._retn();
+*/
+}
+
+void VisuGUI_StreamLinesDlg::accept() {
+  if (myScalarPane->check())
+    {
+      myScalarPane->deletePreview();
+      QDialog::accept();
     }
-  } 
-  return pPresent->_this();
+}
+
+void VisuGUI_StreamLinesDlg::reject()
+{
+  myScalarPane->deletePreview();
+  QDialog::reject();
 }