]> SALOME platform Git repositories - modules/smesh.git/commitdiff
Salome HOME
#24009 EDF 22760 - integration of dev in SMESH: minor problems
authoreap <eap@opencascade.com>
Mon, 22 Mar 2021 14:12:09 +0000 (17:12 +0300)
committereap <eap@opencascade.com>
Mon, 22 Mar 2021 14:12:09 +0000 (17:12 +0300)
   Homogenize file name

src/SMESHGUI/CMakeLists.txt
src/SMESHGUI/MG_ADAPTGUI.cxx [deleted file]
src/SMESHGUI/SMESHGUI_MG_ADAPTDRIVER.h
src/SMESHGUI/SMESHGUI_MgAdaptDlg.cxx [new file with mode: 0644]
src/SMESHGUI/SMESHGUI_MgAdaptDlg.h [new file with mode: 0644]

index f7746071bb5f90df07cb9033e3f8157c2b06039f..3030b9c8603c82919b81aeed4944923b45b07570 100644 (file)
@@ -148,7 +148,7 @@ SET(_moc_HEADERS
   SMESHGUI_IdPreview.h
   SMESHGUI_PreVisualObj.h
   SMESHGUI_MG_ADAPTDRIVER.h
-  MG_ADAPTGUI.h
+  SMESHGUI_MgAdaptDlg.h
 )
 
 # header files / no moc processing
@@ -265,7 +265,7 @@ SET(_other_SOURCES
   SMESHGUI_PreVisualObj.cxx
   SMESHGUI_IdPreview.cxx
   SMESHGUI_MG_ADAPTDRIVER.cxx
-  MG_ADAPTGUI.cxx
+  SMESHGUI_MgAdaptDlg.cxx
 )
 
 # sources / to compile
diff --git a/src/SMESHGUI/MG_ADAPTGUI.cxx b/src/SMESHGUI/MG_ADAPTGUI.cxx
deleted file mode 100644 (file)
index 599639b..0000000
+++ /dev/null
@@ -1,1344 +0,0 @@
-// Copyright (C) 2007-2020  CEA/DEN, EDF R&D, OPEN CASCADE
-//
-// Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License, or (at your option) any later version.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
-//
-// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
-//  file : MG_ADAPTGUI.cxx
-
-#include "MG_ADAPTGUI.h"
-
-#include "MED_Factory.hxx"
-
-#include <SalomeApp_Tools.h>
-#include <SalomeApp_Module.h>
-#include <SUIT_MessageBox.h>
-#include <SUIT_OverrideCursor.h>
-#include <SUIT_FileDlg.h>
-
-#include <QApplication>
-#include <QButtonGroup>
-#include <QCheckBox>
-#include <QComboBox>
-#include <QDoubleSpinBox>
-#include <QFileDialog>
-#include <QGridLayout>
-#include <QGroupBox>
-#include <QHBoxLayout>
-#include <QHeaderView>
-#include <QItemDelegate>
-#include <QKeyEvent>
-#include <QLabel>
-#include <QLineEdit>
-#include <QMessageBox>
-#include <QPushButton>
-#include <QRadioButton>
-#include <QSpacerItem>
-#include <QSpinBox>
-#include <QString>
-#include <QTabWidget>
-#include <QTreeWidget>
-#include <QTreeWidgetItem>
-#include <QVBoxLayout>
-
-//#include <SALOMEDS_wrap.hxx>
-
-const int SPACING = 6;            // layout spacing
-const int MARGIN  = 9;            // layout margin
-
-namespace
-{
-
-  // ======================================================
-  QString lireNomDimMaillage(QString aFile, int& meshdim)
-  // ========================================================
-  {
-    QString nomMaillage = QString::null ;
-
-    try {
-      while ( true )
-      {
-
-        MED::PWrapper aMed = MED::CrWrapperR( aFile.toUtf8().data() );
-        MED::TInt numberOfMeshes = aMed->GetNbMeshes();
-
-        if (numberOfMeshes == 0 )
-        {
-          QMessageBox::critical( 0, QObject::tr("MG_ADAPT_ERROR"),
-                                 QObject::tr("MG_ADAPT_MED_FILE_2") );
-          break ;
-        }
-        if (numberOfMeshes > 1 )
-        {
-          QMessageBox::critical( 0, QObject::tr("MG_ADAPT_ERROR"),
-                                 QObject::tr("MG_ADAPT_MED_FILE_3") );
-          break ;
-        }
-
-        MED::PMeshInfo aMeshInfo = aMed->GetPMeshInfo( 1 );
-        nomMaillage = aMeshInfo->GetName().c_str();
-        meshdim = (int) aMeshInfo->GetDim();
-
-        break ;
-      }
-    }
-    catch ( const SALOME::SALOME_Exception & S_ex )
-    {
-      SalomeApp_Tools::QtCatchCorbaException(S_ex);
-    }
-
-    return nomMaillage;
-  }
-
-  // =======================================================================
-  std::map<QString, int> GetListeChamps(QString aFile, bool errorMessage=true)
-  // =======================================================================
-  {
-    // Il faut voir si plusieurs maillages
-
-    std::map<QString, int> ListeChamp ;
-
-    try
-    {
-      while ( true )
-      {
-        MED::PWrapper aMed = MED::CrWrapperR( aFile.toUtf8().data() );
-        MED::TInt jaux = aMed->GetNbFields();
-        if (jaux < 1 )
-        {
-          if(errorMessage)
-          {
-            QMessageBox::critical( 0, QObject::tr("_ERROR"),
-                                   QObject::tr("HOM_MED_FILE_5") );
-          }
-          break ;
-        }
-        // nbofcstp inutile pour le moment
-        MED::PMeshInfo aMeshInfo = aMed->GetPMeshInfo( 1 );
-        int nbofcstp = 1;
-        for( MED::TInt j=0;j<jaux;j++)
-        {
-          MED::PFieldInfo aFiledInfo = aMed->GetPFieldInfo( aMeshInfo, j + 1 );
-          ListeChamp.insert({ QString( aFiledInfo->GetName().c_str()), nbofcstp });
-        }
-        break ;
-      }
-    }
-    catch ( const SALOME::SALOME_Exception & S_ex )
-    {
-      SalomeApp_Tools::QtCatchCorbaException(S_ex);
-    }
-
-    return ListeChamp;
-  }
-
-  // =======================================================================
-  std::string remove_extension(const std::string& filename)
-  // =======================================================================
-  {
-    size_t lastdot = filename.find_last_of(".");
-    if (lastdot == std::string::npos) return filename;
-    return filename.substr(0, lastdot);
-  }
-}
-
-//=================================================================================
-// function : SMESHGUI_MgAdaptDlg()
-// purpose  :
-//=================================================================================
-SMESHGUI_MgAdaptDlg::SMESHGUI_MgAdaptDlg( SalomeApp_Module* theModule, SMESH::MG_ADAPT_ptr myModel, QWidget* parent, bool isCreation )
-  : QDialog(parent), mySMESHGUI( theModule )
-{
-  //~model = new MgAdapt(*myModel);
-  model = SMESH::MG_ADAPT::_duplicate(myModel);
-  model->Register();
-  myData = model->getData();
-  buildDlg();
-  if (!isCreation) readParamsFromHypo();
-}
-
-void SMESHGUI_MgAdaptDlg::buildDlg()
-{
-  setModal( false );
-  setAttribute( Qt::WA_DeleteOnClose, true );
-  setWindowTitle( tr( "ADAPT_PREF_MG_ADAPT" ) );
-  setSizeGripEnabled( true );
-
-  myTabWidget = new QTabWidget( this );
-
-  // Arguments
-
-  myArgs = new SMESHGUI_MgAdaptArguments( myTabWidget );
-  SMESH::string_array_var str = model->getOptionValuesStrVec();
-  SMESH::string_array_var str2 = model->getCustomOptionValuesStrVec();
-  std::vector<std::string> s;
-  for (CORBA::ULong i = 0; i< str->length(); i++) s.push_back( str[i].in());
-  for (CORBA::ULong j = str->length(); j< str2->length(); j++) s.push_back(str[ j - str->length() ].in() );
-  //~str.insert( str.end(), str2.begin(), str2.end() );
-
-  myAdvOpt = new MgAdaptAdvWidget(myTabWidget, &s);
-
-  /*int argsTab =*/ myTabWidget->addTab( myArgs, tr( "Args" ) );
-  /*int advTab  =*/ myTabWidget->addTab( myAdvOpt, tr( "ADVOP" ) );
-
-  myAdvOpt->workingDirectoryLabel         ->setText (tr( "WORKING_DIR" ));
-  myAdvOpt->workingDirectoryPushButton    ->setText (tr( "SELECT_DIR" ));
-  myAdvOpt->keepWorkingFilesCheck         ->setText (tr( "KEEP_WORKING_FILES" ));
-  myAdvOpt->verboseLevelLabel             ->setText (tr( "VERBOSE_LEVEL" ));
-  myAdvOpt->removeLogOnSuccessCheck       ->setText (tr( "REMOVE_LOG_ON_SUCCESS" ));
-  myAdvOpt->logInFileCheck                ->setText (tr( "LOG_IN_FILE" ));
-  myAdvOpt->logGroupBox                   ->setTitle(tr( "LOG_GROUP_TITLE" ));
-
-  // buttons
-  QPushButton* buttonOk = new QPushButton(tr("SMESH_BUT_APPLY_AND_CLOSE"), this);
-  buttonOk->setAutoDefault(false);
-  QPushButton* buttonApply = new QPushButton(tr("SMESH_BUT_APPLY"), this);
-  buttonApply->setAutoDefault(false);
-  QPushButton* buttonCancel = new QPushButton( tr( "SMESH_BUT_CANCEL" ), this );
-  buttonCancel->setAutoDefault( false );
-  QPushButton* buttonHelp = new QPushButton( tr( "SMESH_BUT_HELP" ), this );
-  buttonHelp->setAutoDefault( false );
-
-  QHBoxLayout* btnLayout = new QHBoxLayout;
-  btnLayout->setSpacing( SPACING );
-  btnLayout->setMargin( 0 );
-  btnLayout->addWidget( buttonOk );
-  btnLayout->addStretch( 10 );
-  btnLayout->addWidget( buttonApply );
-  btnLayout->addStretch( 10 );
-  btnLayout->addWidget( buttonCancel );
-  btnLayout->addStretch( 10 );
-  btnLayout->addWidget( buttonHelp );
-
-  QVBoxLayout* l = new QVBoxLayout ( this );
-  l->setMargin( MARGIN );
-  l->setSpacing( SPACING );
-  l->addWidget( myTabWidget );
-  l->addStretch();
-  l->addLayout( btnLayout );
-
-  connect( buttonOk,       SIGNAL(pressed()), this, SLOT(PushOnOK()));
-  connect( buttonApply,    SIGNAL(pressed()), this, SLOT(PushOnApply()));
-  connect( buttonCancel,   SIGNAL(pressed()), this, SLOT(close()));
-  connect( buttonHelp,     SIGNAL(pressed()), this, SLOT(PushOnHelp()));
-
-  connect( myArgs, SIGNAL(meshDimSignal(ADAPTATION_MODE)), myAdvOpt, SLOT( onMeshDimChanged(ADAPTATION_MODE))  );
-}
-
-
-//=================================================================================
-// function : ~SMESHGUI_MgAdaptDlg()
-// purpose  : Destroys the object and frees any allocated resources
-//=================================================================================
-SMESHGUI_MgAdaptDlg::~SMESHGUI_MgAdaptDlg()
-{
-    //~delete model;
-}
-
-//~void SMESHGUI_MgAdaptDlg::setModel(MgAdapt* mg)
-//~{
-    //~model = mg;
-//~}
-SMESH::MG_ADAPT_ptr SMESHGUI_MgAdaptDlg::getModel() const
-{
-  return model;
-}
-/*!
-\brief Perform clean-up actions on the dialog box closing.
-*/
-bool SMESHGUI_MgAdaptDlg::PushOnApply()
-{
-  bool ret = readParamsFromWidgets();
-  return ret;
-}
-void SMESHGUI_MgAdaptDlg::PushOnOK()
-{
-  bool ret = PushOnApply();
-  if ( ret ) reject();
-}
-void SMESHGUI_MgAdaptDlg::reject()
-{
-  QDialog::reject();
-}
-bool SMESHGUI_MgAdaptDlg::readParamsFromHypo( ) const
-{
-  bool ret = true;
-  myArgs->aMedfile->setChecked(myData->fromMedFile) ;
-  if (myData->fromMedFile)
-  {
-
-    myArgs->myFileInDir = myData->myFileInDir;
-    myArgs->selectMedFileLineEdit->setText(QString(myData->myMeshFileIn)) ;
-    // myData->myInMeshName = // TODO
-
-  }
-  else
-  {
-    myArgs->aBrowserObject->setText(QString(myData->myInMeshName));
-    //~ myArgs->myFileInDir =""; // TODO
-    //~ myArgs->selectMedFileLineEdit->setText(); // TODO
-  }
-  myArgs->meshNameLineEdit->setText(QString(myData->myOutMeshName));
-  myArgs->medFileCheckBox->setChecked(myData->myMeshOutMed);
-
-  if(myData->myMeshOutMed)
-  {
-    myArgs->myFileOutDir = QString(myData->myFileOutDir);
-    myArgs->selectOutMedFileLineEdit->setText(myData->myMeshFileOut.in());
-  }
-  else
-  {
-    myArgs->myFileOutDir = ""; //TODO
-  }
-
-  myArgs->publishOut->setChecked(myData->myPublish);
-
-  myArgs->localButton->setChecked(myData->myUseLocalMap);
-  myArgs->backgroundButton->setChecked(myData->myUseBackgroundMap);
-  myArgs->constantButton->setChecked(myData->myUseConstantValue);
-
-  if (myData->myUseConstantValue)
-  {
-    myArgs->dvalue->setValue(myData->myConstantValue);
-  }
-  else
-  {
-    myArgs->dvalue->setValue(0.0);
-  }
-
-  if (myData->myUseBackgroundMap)
-  {
-
-    myArgs->myFileSizeMapDir = QString(myData->myFileSizeMapDir) ;
-    myArgs->selectMedFileBackgroundLineEdit->setText(QString(myData->myMeshFileBackground));
-  }
-  else
-  {
-    myArgs->myFileSizeMapDir = "";  //TODO
-    myArgs->selectMedFileBackgroundLineEdit->setText(""); //TODO
-  }
-
-  myArgs->fieldNameCmb->setCurrentText(QString(myData->myFieldName));
-  myArgs->noTimeStep->setChecked(myData->myUseNoTimeStep);
-  myArgs->lastTimeStep->setChecked( myData->myUseLastTimeStep);
-  myArgs->chosenTimeStep->setChecked(myData->myUseChosenTimeStep);
-  if (myData->myUseChosenTimeStep)
-  {
-    myArgs->rankSpinBox->setValue(myData->myRank);
-    myArgs->timeStep->setValue(myData->myTimeStep);
-  }
-
-  myAdvOpt->workingDirectoryLineEdit->setText(QString(myData->myWorkingDir));
-  myAdvOpt->logInFileCheck->setChecked(myData->myPrintLogInFile);
-
-  myAdvOpt->verboseLevelSpin->setValue(myData->myVerboseLevel);
-  myAdvOpt->removeLogOnSuccessCheck->setChecked(myData->myRemoveLogOnSuccess);
-  myAdvOpt->keepWorkingFilesCheck->setChecked(myData->myKeepFiles);
-
-  return ret;
-
-}
-
-bool SMESHGUI_MgAdaptDlg::readParamsFromWidgets()
-{
-  bool ret = true ;
-  SMESH::MgAdaptHypothesisData data, *aData = &data;
-  while ( ret )
-  {
-    // 1. Fichier du maillage de départ
-    aData->fromMedFile = myArgs->aMedfile->isChecked();
-    if (aData->fromMedFile)
-    {
-      aData->myFileInDir = CORBA::string_dup(myArgs->myFileInDir.toUtf8().data());
-      aData->myMeshFileIn = CORBA::string_dup(myArgs->selectMedFileLineEdit->text().toUtf8().data());
-        // aData->myInMeshName = // TODO
-    }
-    else // TODO browser
-    {
-      QMessageBox::critical( 0, QObject::tr("MG_ADAPT_ERROR"),
-                                QObject::tr("MG_ADAPT_MED_FILE_4") );
-      ret = false ;
-      break ;
-  //     aData->myInMeshName = CORBA::string_dup(myArgs->aBrowserObject->text().toStdString().c_str());
-  //     aData->myFileInDir = CORBA::string_dup(myAdvOpt->workingDirectoryLineEdit->text().toStdString().c_str());
-  //
-  //     TCollection_AsciiString aGenericName = (char*)aData->myFileInDir;
-  //     TCollection_AsciiString aGenericName2 = "MgAdapt_";
-  //     aGenericName2 += getpid();
-  //     aGenericName2 += "_";
-  //     aGenericName2 += Abs((Standard_Integer)(long) aGenericName.ToCString());
-  //     aGenericName2 += ".med";
-  //     aGenericName+=aGenericName2;
-  //     emit myArgs->toExportMED(aGenericName.ToCString());
-  //     aData->myMeshFileIn = aGenericName2.ToCString();
-    }
-    // 2. Fichier du maillage de sortie
-    aData->myOutMeshName = CORBA::string_dup(myArgs->meshNameLineEdit->text().toStdString().c_str());
-    aData->myMeshOutMed = myArgs->medFileCheckBox->isChecked();
-    if(aData->myMeshOutMed)
-    {
-      aData->myFileOutDir = CORBA::string_dup(myArgs->myFileOutDir.toUtf8().data());
-      aData->myMeshFileOut = CORBA::string_dup(myArgs->selectOutMedFileLineEdit->text().toUtf8().data());
-    }
-    else
-    {
-      aData->myMeshFileOut = "";
-    }
-    aData->myPublish = myArgs->publishOut->isChecked();
-
-    // 3. Type de carte de tailles
-    aData->myUseLocalMap = myArgs->localButton->isChecked();
-    aData->myUseBackgroundMap = myArgs->backgroundButton->isChecked();
-    aData->myUseConstantValue = myArgs->constantButton->isChecked();
-    // 3.1. Constante
-    if (aData->myUseConstantValue)
-    {
-      aData->myConstantValue = myArgs->dvalue->value();
-    }
-    else
-    {
-      aData->myConstantValue = 0.0;
-    }
-    // 3.2. Arrière-plan
-    if (aData->myUseBackgroundMap)
-    {
-      aData->myFileSizeMapDir = CORBA::string_dup(myArgs->myFileSizeMapDir.toUtf8().data());
-      aData->myMeshFileBackground = CORBA::string_dup(myArgs->selectMedFileBackgroundLineEdit->text().toUtf8().data());
-    }
-    else
-    {
-      aData->myMeshFileBackground = "";
-    }
-
-  // 4. Le champ
-    if ( ! aData->myUseConstantValue )
-    {
-      if ( strlen(myArgs->fieldNameCmb->currentText().toStdString().c_str()) == 0 )
-      {
-        QMessageBox::critical( 0, QObject::tr("MG_ADAPT_ERROR"),
-                                  QObject::tr("MG_ADAPT_MED_FILE_5") );
-        ret = false ;
-        break ;
-      }
-      {
-        aData->myFieldName = CORBA::string_dup(myArgs->fieldNameCmb->currentText().toStdString().c_str());
-        aData->myUseNoTimeStep = myArgs->noTimeStep->isChecked();
-        aData->myUseLastTimeStep = myArgs->lastTimeStep->isChecked();
-        aData->myUseChosenTimeStep = myArgs->chosenTimeStep->isChecked();
-        if (aData->myUseChosenTimeStep)
-        {
-          aData->myRank = myArgs->rankSpinBox->value();
-          aData->myTimeStep = myArgs->timeStep->value();
-        }
-      }
-    }
-
-    // 5. Options avancées
-    aData->myWorkingDir = CORBA::string_dup(myAdvOpt->workingDirectoryLineEdit->text().toStdString().c_str());
-    aData->myPrintLogInFile = myAdvOpt->logInFileCheck->isChecked();
-    aData->myVerboseLevel = myAdvOpt->verboseLevelSpin->value();
-    aData->myRemoveLogOnSuccess = myAdvOpt->removeLogOnSuccessCheck->isChecked();
-    aData->myKeepFiles = myAdvOpt->keepWorkingFilesCheck->isChecked();
-    model->setData(*aData);
-
-    QString msg;
-    checkParams(msg);
-    break ;
-  }
-
-  return ret;
-}
-bool SMESHGUI_MgAdaptDlg::storeParamsToHypo( const SMESH::MgAdaptHypothesisData& ) const
-{
-  return true;
-}
-/*!
-  \brief Show help page
-*/
-void SMESHGUI_MgAdaptDlg::PushOnHelp()
-{
-//   QString aHelpFile;
-  // if ( myTabWidget->currentIndex() == MinDistance ) {
-  //   aHelpFile = "measurements.html#min-distance-anchor";
-  // } else if ( myTabWidget->currentIndex() == BoundingBox ) {
-  //   aHelpFile = "measurements.html#bounding-box-anchor";
-  // } else if ( myTabWidget->currentWidget() == myAngle ) {
-  //   aHelpFile = "measurements.html#angle-anchor";
-  // } else {
-  //   aHelpFile = "measurements.html#basic-properties-anchor";
-  // }
-
-//   SMESH::ShowHelpFile( aHelpFile );
-}
-bool SMESHGUI_MgAdaptDlg::checkParams(QString& msg)
-{
-  if ( !QFileInfo( myAdvOpt->workingDirectoryLineEdit->text().trimmed() ).isWritable() )
-  {
-    SUIT_MessageBox::warning( this,
-                              tr( "SMESH_WRN_WARNING" ),
-                              tr( "NO_PERMISSION" ) );
-    return false;
-  }
-
-
-  myAdvOpt->myOptionTable->setFocus();
-  QApplication::instance()->processEvents();
-
-  QString name, value;
-  bool isDefault, ok = true;
-  int iRow = 0, nbRows = myAdvOpt->myOptionTable->topLevelItemCount();
-  for ( ; iRow < nbRows; ++iRow )
-  {
-    QTreeWidgetItem* row = myAdvOpt->myOptionTable->topLevelItem( iRow );
-    myAdvOpt->GetOptionAndValue( row, name, value, isDefault );
-
-    if ( name.simplified().isEmpty() )
-        continue; // invalid custom option
-
-    if ( isDefault ) // not selected option
-        value.clear();
-
-    try
-    {
-      model->setOptionValue( name.toLatin1().constData(), value.toLatin1().constData() );
-    }
-    catch ( const SALOME::SALOME_Exception& ex )
-    {
-      msg = ex.details.text.in();
-      ok = false;
-      break;
-    }
-  }
-
-  return ok;
-}
-
-//=================================================================================
-// function : SMESHGUI_MgAdaptArguments()
-// purpose  :
-//=================================================================================
-SMESHGUI_MgAdaptArguments::SMESHGUI_MgAdaptArguments( QWidget* parent )
-  :QWidget(parent)
-{
-
-  if ( SUIT_FileDlg::getLastVisitedPath().isEmpty() )
-  {
-    myFileInDir = QDir::currentPath();
-    myFileOutDir = QDir::currentPath();
-    myFileSizeMapDir = QDir::currentPath();
-  }
-  else
-  {
-    myFileInDir = SUIT_FileDlg::getLastVisitedPath();
-    myFileOutDir = SUIT_FileDlg::getLastVisitedPath();
-    myFileSizeMapDir = SUIT_FileDlg::getLastVisitedPath();
-  }
-
-  meshDim = 0;
-  meshDimBG = 0;
-  // Mesh in
-  aMeshIn = new QGroupBox( tr( "MeshIn" ), this );
-  aMedfile       = new QRadioButton( tr( "MEDFile" ),    aMeshIn );
-  aBrowser       = new QRadioButton( tr( "Browser" ), aMeshIn );
-  aBrowserObject = new QLineEdit(  aMeshIn );
-  selectMedFilebutton = new QPushButton("...", aMeshIn);
-  selectMedFileLineEdit = new QLineEdit(  aMeshIn );
-
-  meshIn = new QGridLayout( aMeshIn );
-
-  meshIn->setMargin( MARGIN );
-  meshIn->setSpacing( SPACING );
-  meshIn->addWidget( aMedfile,     0, 0, 1,1 );
-  meshIn->addWidget( aBrowser,     0, 1,1,1);
-  meshIn->addWidget( aBrowserObject,     0, 2, 1, 1 );
-  meshIn->addWidget( selectMedFilebutton,  1, 0,1, 1);
-  meshIn->addWidget( selectMedFileLineEdit,  1, 1, 1, 1 );
-  hspacer = new QSpacerItem(188, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
-
-  meshInGroup = new QButtonGroup( this );
-  meshInGroup->addButton( aMedfile,   0 );
-  meshInGroup->addButton( aBrowser,   1 );
-
-  //Mesh out
-
-  aMeshOut = new QGroupBox( tr( "MeshOut" ), this );
-  meshName = new QLabel(tr("MeshName"), aMeshOut);
-  secondHspacer = new QSpacerItem(100, 30);
-  meshNameLineEdit = new QLineEdit(aMeshOut) ;
-  medFileCheckBox = new QCheckBox(tr("MEDFile"), aMeshOut);
-  selectOutMedFilebutton = new QPushButton("...", aMeshOut);
-  thirdHspacer = new QSpacerItem(188, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
-  selectOutMedFileLineEdit = new QLineEdit(aMeshOut) ;
-  publishOut = new  QCheckBox(tr("Publish_MG_ADAPT"), aMeshOut);
-
-  meshOut = new QGridLayout( aMeshOut );
-
-  meshOut->setMargin( MARGIN );
-  meshOut->setSpacing( SPACING );
-  meshOut->addWidget( meshName,  0, 0, 1,1 );
-  meshOut->addItem( secondHspacer,  0, 1, 1, 1 );
-  meshOut->addWidget( meshNameLineEdit, 0, 2,1,1);
-  meshOut->addWidget( medFileCheckBox,  1, 0,1,1 );
-  meshOut->addWidget( selectOutMedFilebutton,  1, 1,1,1 );
-  meshOut->addWidget( selectOutMedFileLineEdit,  1, 2,1,1);
-  meshOut->addWidget( publishOut,  2, 0,1,1 );
-
-  //size map definition
-
-  sizeMapDefinition  = new QGroupBox(tr("SIZE_MAP_DEF"), this);
-  localButton = new QRadioButton(tr("LOCAL_MG_ADAPT"), sizeMapDefinition);
-  backgroundButton = new QRadioButton(tr("BACKGRND_MG_ADAPT"), sizeMapDefinition);
-  constantButton = new QRadioButton(tr("CNST_MG_ADAPT"), sizeMapDefinition);
-  medFileBackground = new QLabel(tr("MED_FILE_BCKG"), sizeMapDefinition);
-  selectMedFileBackgroundbutton = new QPushButton("...", sizeMapDefinition);
-  selectMedFileBackgroundLineEdit = new QLineEdit(sizeMapDefinition);
-  valueLabel = new QLabel(tr("VALUE_MG_ADAPT"), sizeMapDefinition);
-  dvalue = new QDoubleSpinBox(sizeMapDefinition);
-  sizeMapDefGroup = new QButtonGroup( this );
-  sizeMapDefGroup->addButton( localButton,   0 );
-  sizeMapDefGroup->addButton( backgroundButton,   1 );
-  sizeMapDefGroup->addButton( constantButton,   2 );
-
-  sizeMapDefGroupLayout = new QGridLayout(sizeMapDefinition);
-  sizeMapDefGroupLayout->addWidget(localButton, 0,0);
-  sizeMapDefGroupLayout->addWidget(backgroundButton, 0,1);
-  sizeMapDefGroupLayout->addWidget(constantButton, 0,2);
-  sizeMapDefGroupLayout->addWidget(medFileBackground, 1,0);
-  sizeMapDefGroupLayout->addWidget(selectMedFileBackgroundbutton, 1,1);
-  sizeMapDefGroupLayout->addWidget(selectMedFileBackgroundLineEdit, 1,2);
-  sizeMapDefGroupLayout->addWidget(valueLabel, 2,0);
-  sizeMapDefGroupLayout->addWidget(dvalue, 2,1);
-
-  // size Map field
-  sizeMapField = new QGroupBox(tr("SIZE_MAP_FIELD"), this);
-  fieldName = new QLabel(tr("MG_ADAPT_FIELD_NAME"), sizeMapField);
-  fieldNameCmb = new QComboBox(sizeMapField);
-  noTimeStep = new QRadioButton(tr("MG_ADAPT_NO_T_ST"), sizeMapField);
-  lastTimeStep = new QRadioButton(tr("MG_ADAPT_L_ST"), sizeMapField);
-  chosenTimeStep = new QRadioButton(tr("MG_ADAPT_CH_ST"), sizeMapField);
-  timeStepLabel = new QLabel(tr("MG_ADAPT_TSTP"), sizeMapField);
-  timeStep = new QSpinBox(sizeMapField);
-  timeStep->setMinimum(-1);
-  rankLabel = new QLabel(tr("MG_ADAPT_RANK"), sizeMapField);
-  rankSpinBox = new QSpinBox(sizeMapField);
-  rankSpinBox->setMinimum(-1);
-
-  timeStepGroup = new QButtonGroup(this);
-  timeStepGroup->addButton(noTimeStep, 0);
-  timeStepGroup->addButton(lastTimeStep, 1);
-  timeStepGroup->addButton(chosenTimeStep, 2);
-
-  sizeMapFieldGroupLayout = new QGridLayout(sizeMapField);
-
-  sizeMapFieldGroupLayout->addWidget(fieldName, 0,0);
-  sizeMapFieldGroupLayout->addWidget(fieldNameCmb, 0,1);
-  sizeMapFieldGroupLayout->addWidget(noTimeStep, 1,0);
-  sizeMapFieldGroupLayout->addWidget(lastTimeStep, 1,1);
-  sizeMapFieldGroupLayout->addWidget(chosenTimeStep, 1,2);
-  sizeMapFieldGroupLayout->addWidget(timeStepLabel, 2,0);
-  sizeMapFieldGroupLayout->addWidget(timeStep, 2,1);
-  sizeMapFieldGroupLayout->addWidget(rankLabel, 2,2);
-  sizeMapFieldGroupLayout->addWidget(rankSpinBox, 2,3);
-
-  QGridLayout* argumentsLayout = new QGridLayout( this );
-  argumentsLayout->setMargin( MARGIN );
-  argumentsLayout->setSpacing( SPACING );
-
-  argumentsLayout->addWidget( aMeshIn,  0, 0, 1, 3 );
-  argumentsLayout->addWidget( aMeshOut, 1, 0, 1, 3 );
-  argumentsLayout->addWidget( sizeMapDefinition, 2, 0, 1, 3 );
-  argumentsLayout->addWidget( sizeMapField, 3, 0, 1, 3 );
-  argumentsLayout->setColumnStretch( 1, 5 );
-  argumentsLayout->setRowStretch( 4, 5 );
-
-  // Initial state
-  setMode( Mesh, Local);
-  medFileCheckBox->setChecked(true);
-  visibleTimeStepRankLabel (false);
-
-  // Connections
-  connect( meshInGroup,            SIGNAL( buttonClicked( int ) ),  this, SLOT( modeChanged( int ) ) );
-  connect( sizeMapDefGroup,        SIGNAL( buttonClicked( int ) ),  this, SLOT( sizeMapDefChanged( int ) ) );
-  connect( selectMedFilebutton,    SIGNAL( pressed(  ) ),           this, SLOT( onSelectMedFilebuttonClicked(  ) ) );
-  connect( medFileCheckBox,        SIGNAL (stateChanged(int)),      this, SLOT(onMedFileCheckBox(int) ) );
-  connect( publishOut,             SIGNAL (stateChanged(int)),      this, SLOT(onPublishOut(int) ) );
-  connect( selectOutMedFilebutton, SIGNAL( pressed()),              this, SLOT(onSelectOutMedFilebutton()));
-  connect( selectMedFileBackgroundbutton, SIGNAL(pressed()),        this, SLOT(onSelectMedFileBackgroundbutton()) );
-  connect( timeStepGroup,          SIGNAL( buttonClicked( int ) ),  this, SLOT( timeStepGroupChanged( int ) ) );
-  emit updateSelection();
-}
-
-//=================================================================================
-// function : ~SMESHGUI_MgAdaptArguments()
-// purpose  : Destroys the object and frees any allocated resources
-//=================================================================================
-SMESHGUI_MgAdaptArguments::~SMESHGUI_MgAdaptArguments()
-{
-}
-
-void SMESHGUI_MgAdaptArguments::onNoTimeStep(bool disableOther)
-{
-  noTimeStep->setChecked(true);
-
-  visibleTimeStepRankLabel (false);
-  rankSpinBox->setValue(-2);
-  timeStep->setValue(-2);
-
-  lastTimeStep->setDisabled(disableOther);
-  chosenTimeStep->setDisabled(disableOther);
-}
-void SMESHGUI_MgAdaptArguments::onLastTimeStep(bool disableOther)
-{
-  lastTimeStep->setChecked(true);
-
-  visibleTimeStepRankLabel (false);
-  rankSpinBox->setValue(-1);
-  timeStep->setValue(-1);
-  noTimeStep->setDisabled(disableOther);
-}
-void SMESHGUI_MgAdaptArguments::onChosenTimeStep(bool /*disableOther*/, int vmax)
-{
-  chosenTimeStep->setChecked(true);
-
-  visibleTimeStepRankLabel (true);
-  rankSpinBox->setValue(-1);
-  timeStep->setValue(-1);
-  if (vmax) timeStep->setMaximum(vmax);
-}
-
-void SMESHGUI_MgAdaptArguments::visibleTimeStepRankLabel(bool visible)
-{
-  rankLabel->setVisible(visible);
-  rankSpinBox->setVisible(visible);
-
-  timeStepLabel->setVisible(visible);
-  timeStep->setVisible(visible);
-}
-
-void SMESHGUI_MgAdaptArguments::onSelectOutMedFilebutton()
-{
-
-  QString filtre = QString("Med") ;
-  filtre += QString(" files (*.") + QString("med") + QString(");;");
-  QString fileName = QFileDialog::getSaveFileName(this, tr("SAVE_MED"), QString(""), filtre);
-  QFileInfo myFileInfo(fileName);
-  selectOutMedFileLineEdit->setText(myFileInfo.fileName());
-  myFileOutDir = myFileInfo.path();
-
-}
-void SMESHGUI_MgAdaptArguments::onSelectMedFileBackgroundbutton()
-{
-  QString fileName0 = selectMedFileBackgroundbutton->text().trimmed();
-
-  QString fileName = getMedFileName(false);
-  if (fileName != QString::null)
-  {
-    myFieldList = GetListeChamps(fileName);
-    if (myFieldList.empty())
-    {
-      fileName = fileName0;
-      fieldNameCmb->clear();
-    }
-    else
-    {
-      // fill field name Combobox
-      fieldNameCmb->clear();
-      std::map<QString, int>::const_iterator it;
-      for ( it=myFieldList.begin() ; it != myFieldList.end(); it++)
-      {
-        fieldNameCmb->insertItem(0,QString(it->first));
-        int typeStepInField = it->second > 2 ?  2 : it->second ;
-        timeStepGroupChanged(typeStepInField, false);
-      }
-      // Dimension du maillage de fonds
-      lireNomDimMaillage( fileName, meshDimBG );
-      valueAdaptation ();
-    }
-  }
-  else
-  {
-    fileName = fileName0;
-    fieldNameCmb->clear();
-  }
-
-  QFileInfo myFileInfo(fileName);
-  myFileSizeMapDir = myFileInfo.path();
-  selectMedFileBackgroundLineEdit->setText(myFileInfo.fileName());
-
-}
-void SMESHGUI_MgAdaptArguments::onMedFileCheckBox(int state)
-{
-  if (state == Qt::Checked)
-  {
-    selectOutMedFilebutton->show();
-    selectOutMedFileLineEdit->show();
-    selectOutMedFilebutton->setEnabled(true);
-    selectOutMedFileLineEdit->setEnabled(true);
-  }
-  else
-  {
-    selectOutMedFilebutton->setEnabled(false);
-    selectOutMedFileLineEdit->setEnabled(false);
-    publishOut->setChecked(true);
-  }
-}
-void SMESHGUI_MgAdaptArguments::onPublishOut(int state)
-{
-  if (state == Qt::Unchecked)
-  {
-    medFileCheckBox->setChecked(true);
-  }
-}
-
-void SMESHGUI_MgAdaptArguments::onSelectMedFilebuttonClicked()
-{
-  // bool keep = false;
-  QString fileName0 = selectMedFileLineEdit->text().trimmed();
-
-  QString fileName = getMedFileName(false);
-  if(fileName != QString::null)
-  {
-    QString aMeshName = lireNomDimMaillage(fileName.trimmed(), meshDim);
-    if (aMeshName.isEmpty() )
-    {
-      QMessageBox::critical( 0, QObject::tr("MG_ADAPT_ERROR"),
-                                QObject::tr("MG_ADAPT_MED_FILE_2") );
-      fileName = fileName0;
-    }
-    else
-    {
-      meshNameLineEdit->setText(aMeshName);
-      valueAdaptation ();
-//       ADAPTATION_MODE aMode = meshDim == 3 ? ADAPTATION_MODE::BOTH : ADAPTATION_MODE::SURFACE; // and when dimesh 3 without 2D mesh?
-//       emit meshDimSignal(aMode);
-    }
-  }
-  else
-  {
-      return;
-  }
-
-  QFileInfo myFileInfo(fileName);
-  myFileInDir = myFileInfo.path();
-  myFileOutDir = myFileInfo.path();
-  selectMedFileLineEdit->setText(myFileInfo.fileName());
-  QString outF = fileName == QString::null ? myFileInfo.fileName() :
-  QString( remove_extension(myFileInfo.fileName().toStdString() ).c_str() )+ QString(".adapt.med");
-  selectOutMedFileLineEdit->setText(outF);
-  onLocalSelected(myFileInfo.filePath());
-
-}
-
-void SMESHGUI_MgAdaptArguments::valueAdaptation()
-{
-  ADAPTATION_MODE aMode ;
-  if ( meshDimBG < 3 )
-  {
-    aMode = meshDim == 3 ? ADAPTATION_MODE::BOTH : ADAPTATION_MODE::SURFACE;
-  }
-  else
-  {
-    aMode = ADAPTATION_MODE::BOTH;
-  }
-  emit meshDimSignal(aMode);
-}
-
-void SMESHGUI_MgAdaptArguments::onLocalSelected(QString filePath)
-{
-  myFieldList = GetListeChamps(filePath, false);
-  if (myFieldList.empty())
-  {
-    if (localButton->isChecked())
-    {
-      fieldNameCmb->clear();
-    }
-  }
-  else
-  {
-    // fill field name Combobox
-    fieldNameCmb->clear();
-    std::map<QString, int>::const_iterator it;
-    for ( it = myFieldList.begin() ; it != myFieldList.end(); it++)
-    {
-      fieldNameCmb->insertItem(0,QString(it->first));
-      // Je ne comprends pas le rapport entre pas de temps et apparition d'un nouveau champ... GN
-      int typeStepInField = it->second > 2 ?  2 : it->second ;
-//             std::cout << "SMESHGUI_MgAdaptArguments::onLocalSelected typeStepInField : " << typeStepInField << std::endl;
-      timeStepGroupChanged(typeStepInField, false);
-    }
-  }
-}
-// =======================================================================
-// Gestion les boutons qui permettent  de
-// 1) retourne le nom d'un fichier par une fenetre de dialogue si aucun
-//    objet est selectionne dans l arbre d etude
-// 2) retourne le nom du fichier asocie a l objet
-//    selectionne dans l arbre d etude
-// =======================================================================
-QString SMESHGUI_MgAdaptArguments::getMedFileName(bool /*avertir*/)
-{
-
-  QString aFile = QString::null;
-  QString filtre = QString("Med") ;
-  filtre += QString(" files (*.") + QString("med") + QString(");;");
-  aFile = SUIT_FileDlg::getOpenFileName(0, QObject::tr("MG_ADAPT_SELECT_FILE_0"), QString(""), filtre );
-
-  return aFile;
-
-}
-void SMESHGUI_MgAdaptArguments::setMode(const Mode theMode, const SIZEMAP theSizeMap )
-{
-  QRadioButton* aButton = qobject_cast<QRadioButton*>( meshInGroup->button( theMode ) );
-  QRadioButton* bButton = qobject_cast<QRadioButton*>( sizeMapDefGroup->button( theSizeMap ) );
-  if ( aButton )
-  {
-    aButton->setChecked( true );
-    modeChanged( theMode );
-  }
-  if ( bButton )
-  {
-    bButton->setChecked( true );
-    sizeMapDefChanged( theSizeMap );
-  }
-}
-
-void SMESHGUI_MgAdaptArguments::modeChanged( int theMode )
-{
-  clear();
-  if(theMode == Mesh)
-  {
-    aBrowserObject->hide();
-    selectMedFileLineEdit->show();
-    selectMedFilebutton->show();
-    localButton->setEnabled(true);
-  }
-  else
-  {
-    selectMedFileLineEdit->hide();
-    selectMedFilebutton->hide();
-    localButton->setEnabled(false);
-    aBrowserObject->show();
-    sizeMapDefChanged(Background);
-    emit updateSelection();
-  }
-}
-
-void SMESHGUI_MgAdaptArguments::sizeMapDefChanged( int  theSizeMap )
-{
-  fieldNameCmb->clear();
-  if(theSizeMap == Local)
-  {
-    localButton->setEnabled(true);
-    localButton->setChecked(true);
-    medFileBackground->hide();
-    selectMedFileBackgroundbutton->hide();
-    selectMedFileBackgroundLineEdit->hide();
-    selectMedFileBackgroundLineEdit->clear();
-    valueLabel->hide();
-    dvalue->hide();
-
-    sizeMapField->setEnabled(true);
-    if (!selectMedFileLineEdit->text().isEmpty())
-    {
-      QFileInfo myFileInfo(QDir(myFileInDir), selectMedFileLineEdit->text());
-      onLocalSelected(myFileInfo.filePath());
-    }
-  }
-  else if (theSizeMap == Background)
-  {
-    medFileBackground->show();
-    backgroundButton->setChecked(true);
-    selectMedFileBackgroundbutton->show();
-    selectMedFileBackgroundLineEdit->show();
-    valueLabel->hide();
-    dvalue->hide();
-    sizeMapField->setEnabled(true);
-  }
-  else
-  {
-    medFileBackground->hide();
-    constantButton->setChecked(true);
-    selectMedFileBackgroundbutton->hide();
-    selectMedFileBackgroundLineEdit->clear();
-    selectMedFileBackgroundLineEdit->hide();
-    valueLabel->show();
-    dvalue->show();
-    sizeMapField->setEnabled(false);
-  }
-  meshDimBG = 0;
-  valueAdaptation();
-}
-void SMESHGUI_MgAdaptArguments::timeStepGroupChanged(int timeStepType, bool disableOther, int vmax)
-{
-  switch (timeStepType)
-  {
-  case 0 :
-    onNoTimeStep(disableOther);
-    break;
-  case 1 :
-    onLastTimeStep(disableOther);
-    break;
-  case 2 :
-    onChosenTimeStep(disableOther, vmax);
-  default:
-    break;
-  }
-}
-
-void SMESHGUI_MgAdaptArguments::clear()
-{
-  selectMedFileLineEdit->clear();
-  aBrowserObject->clear();
-
-  meshNameLineEdit->clear();
-  selectOutMedFileLineEdit->clear();
-}
-// med_int SMESHGUI_MgAdaptArguments::getMeshDim() const
-// {
-//   return meshDim;
-// }
-QWidget* ItemDelegate::createEditor(QWidget *parent, const QStyleOptionViewItem &o, const QModelIndex &index) const
-{
-  bool editable = index.data( EDITABLE_ROLE ).toInt();
-  return editable ? QItemDelegate::createEditor( parent, o, index ) : 0;
-}
-
-//////////////////////////////////////////
-// MgAdaptAdvWidget
-//////////////////////////////////////////
-
-MgAdaptAdvWidget::MgAdaptAdvWidget( QWidget* parent, std::vector <std::string>* options, Qt::WindowFlags f )
-  : QWidget( parent, f ), myOptions(options)
-{
-  setupWidget();
-  myOptionTable->header()->setSectionResizeMode( QHeaderView::ResizeToContents );
-  myOptionTable->setItemDelegate( new ItemDelegate( myOptionTable ) );
-
-  for ( size_t i = 0, nb = myOptions->size(); i < nb; ++i )
-  {
-    AddOption( (*myOptions)[i].c_str() );
-  }
-
-  connect( myOptionTable, SIGNAL( itemChanged(QTreeWidgetItem *, int)), SLOT( itemChanged(QTreeWidgetItem *, int )));
-  connect( addBtn,        SIGNAL(clicked()),       this, SLOT( onAddOption() ) );
-  connect(workingDirectoryPushButton, SIGNAL(pressed()),  this, SLOT(_onWorkingDirectoryPushButton()));
-}
-
-MgAdaptAdvWidget::~MgAdaptAdvWidget()
-{
-}
-
-void MgAdaptAdvWidget::AddOption( const char* option, bool isCustom )
-{
-  QString name, value;
-  bool isDefault = false;
-  if ( option )
-  {
-    QStringList name_value_type = QString(option).split( ":", QString::KeepEmptyParts );
-    if ( name_value_type.size() > 0 )
-        name = name_value_type[0];
-    if ( name_value_type.size() > 1 )
-        value = name_value_type[1];
-    if ( name_value_type.size() > 2 )
-        isDefault = !name_value_type[2].toInt();
-  }
-  QTreeWidget* table = myOptionTable;
-  //table->setExpanded( true );
-
-  QTreeWidgetItem* row;
-  if (optionTreeWidgetItem.size())
-  {
-    std::map<QString, QTreeWidgetItem *>::iterator it = optionTreeWidgetItem.find(name);
-    if(it != optionTreeWidgetItem.end()) return; // option exist
-    else
-    {
-      row = getNewQTreeWidgetItem(table, option, name, isCustom);
-    }
-  }
-  else
-  {
-    row = getNewQTreeWidgetItem(table, option, name, isCustom);
-  }
-  row->setText( 0, tr( name.toLatin1().constData() ));
-  row->setText( 1, tr( value.toLatin1().constData() ));
-  row->setCheckState( 0, isDefault ? Qt::Unchecked : Qt::Checked);
-  row->setData( NAME_COL, PARAM_NAME, name );
-
-  if ( isCustom )
-  {
-    myOptionTable->scrollToItem( row );
-    myOptionTable->setCurrentItem( row );
-    myOptionTable->editItem( row, NAME_COL );
-  }
-}
-
-QTreeWidgetItem* MgAdaptAdvWidget::getNewQTreeWidgetItem(QTreeWidget* table, const char* option, QString& name, bool isCustom)
-{
-  QTreeWidgetItem* row = new QTreeWidgetItem( table );
-  row->setData( NAME_COL, EDITABLE_ROLE, int( isCustom && !option ));
-  row->setFlags( row->flags() | Qt::ItemIsEditable );
-  optionTreeWidgetItem.insert(std::pair <QString, QTreeWidgetItem*> (name, row));
-
-  return row;
-}
-
-void MgAdaptAdvWidget::onAddOption()
-{
-  AddOption( NULL, true );
-}
-void MgAdaptAdvWidget::GetOptionAndValue( QTreeWidgetItem * tblRow,
-        QString&          option,
-        QString&          value,
-        bool&             isDefault)
-{
-  option    = tblRow->data( NAME_COL, PARAM_NAME ).toString();
-  value     = tblRow->text( VALUE_COL );
-  isDefault = ! tblRow->checkState( NAME_COL );
-
-}
-
-void MgAdaptAdvWidget::itemChanged(QTreeWidgetItem* tblRow, int column)
-{
-  if ( tblRow )
-  {
-    myOptionTable->blockSignals( true );
-
-    tblRow->setData( VALUE_COL, EDITABLE_ROLE, int( tblRow->checkState( NAME_COL )));
-
-    int c = tblRow->checkState( NAME_COL ) ? 0 : 150;
-    tblRow->setForeground( VALUE_COL, QBrush( QColor( c, c, c )));
-
-    if ( column == NAME_COL && tblRow->data( NAME_COL, EDITABLE_ROLE ).toInt() ) // custom table
-    {
-      tblRow->setData( NAME_COL, PARAM_NAME, tblRow->text( NAME_COL ));
-    }
-
-    myOptionTable->blockSignals( false );
-  }
-}
-void MgAdaptAdvWidget::setupWidget()
-{
-  if (this->objectName().isEmpty())
-      this->setObjectName(QString(tr("MG-ADAPT-ADV")));
-  this->resize(337, 369);
-  gridLayout_4 = new QGridLayout(this);
-  gridLayout_4->setObjectName(QString("gridLayout_4"));
-  myOptionTable = new MgAdaptAdvWidgetTreeWidget(this);
-  QFont font;
-  font.setBold(false);
-  font.setWeight(50);
-  QTreeWidgetItem *__qtreewidgetitem = new QTreeWidgetItem();
-  __qtreewidgetitem->setFont(1, font);
-  __qtreewidgetitem->setFont(0, font);
-  __qtreewidgetitem->setText(1, tr("OPTION_VALUE_COLUMN"));
-  __qtreewidgetitem->setText(0, tr("OPTION_NAME_COLUMN"));
-  myOptionTable->setHeaderItem(__qtreewidgetitem);
-  myOptionTable->setObjectName(QString("myOptionTable"));
-  myOptionTable->setEditTriggers(QAbstractItemView::DoubleClicked|QAbstractItemView::EditKeyPressed);
-  myOptionTable->setTabKeyNavigation(true);
-
-  gridLayout_4->addWidget(myOptionTable, 0, 0, 1, 2);
-
-  addBtn = new QPushButton(this);
-  addBtn->setText(QApplication::translate("SMESH_AdvOptionsWdg", "ADD_OPTION_BTN", Q_NULLPTR));
-  addBtn->setObjectName(QString("addBtn"));
-
-  gridLayout_4->addWidget(addBtn, 1, 0, 1, 1);
-
-  horizontalSpacer = new QSpacerItem(188, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
-
-  gridLayout_4->addItem(horizontalSpacer, 1, 1, 1, 1);
-
-  logGroupBox = new QGroupBox(this);
-  logGroupBox->setObjectName(QString("logGroupBox"));
-  gridLayout_2 = new QGridLayout(logGroupBox);
-  gridLayout_2->setObjectName(QString("gridLayout_2"));
-  gridLayout = new QGridLayout();
-  gridLayout->setObjectName(QString("gridLayout"));
-  workingDirectoryLabel = new QLabel(logGroupBox);
-  workingDirectoryLabel->setObjectName(QString("workingDirectoryLabel"));
-
-  gridLayout->addWidget(workingDirectoryLabel, 0, 0, 1, 1);
-
-  workingDirectoryLineEdit = new QLineEdit(logGroupBox);
-  workingDirectoryLineEdit->setObjectName(QString("workingDirectoryLineEdit"));
-
-  gridLayout->addWidget(workingDirectoryLineEdit, 0, 1, 1, 1);
-
-  workingDirectoryPushButton = new QPushButton(logGroupBox);
-  workingDirectoryPushButton->setObjectName(QString("workingDirectoryPushButton"));
-
-  gridLayout->addWidget(workingDirectoryPushButton, 0, 2, 1, 1);
-
-  verboseLevelLabel = new QLabel(logGroupBox);
-  verboseLevelLabel->setObjectName(QString("verboseLevelLabel"));
-
-  gridLayout->addWidget(verboseLevelLabel, 1, 0, 1, 1);
-
-  verboseLevelSpin = new QSpinBox(logGroupBox);
-  verboseLevelSpin->setObjectName(QString("verboseLevelSpin"));
-
-  gridLayout->addWidget(verboseLevelSpin, 1, 1, 1, 1);
-
-
-  gridLayout_2->addLayout(gridLayout, 0, 0, 1, 1);
-
-  horizontalLayout = new QHBoxLayout();
-  horizontalLayout->setObjectName(QString("horizontalLayout"));
-  logInFileCheck = new QCheckBox(logGroupBox);
-  logInFileCheck->setObjectName(QString("logInFileCheck"));
-  logInFileCheck->setChecked(true);
-
-  horizontalLayout->addWidget(logInFileCheck);
-
-  removeLogOnSuccessCheck = new QCheckBox(logGroupBox);
-  removeLogOnSuccessCheck->setObjectName(QString("removeLogOnSuccessCheck"));
-  removeLogOnSuccessCheck->setChecked(true);
-
-  horizontalLayout->addWidget(removeLogOnSuccessCheck);
-
-
-  gridLayout_2->addLayout(horizontalLayout, 1, 0, 1, 1);
-
-  keepWorkingFilesCheck = new QCheckBox(logGroupBox);
-  keepWorkingFilesCheck->setObjectName(QString("keepWorkingFilesCheck"));
-  keepWorkingFilesCheck->setAutoExclusive(false);
-
-  gridLayout_2->addWidget(keepWorkingFilesCheck, 2, 0, 1, 1);
-
-
-  gridLayout_4->addWidget(logGroupBox, 3, 0, 1, 2);
-
-}
-void MgAdaptAdvWidget::_onWorkingDirectoryPushButton()
-{
-  QString aDirName=QFileDialog::getExistingDirectory ();
-  if (!(aDirName.isEmpty()))workingDirectoryLineEdit->setText(aDirName);
-}
-void MgAdaptAdvWidget::onMeshDimChanged(ADAPTATION_MODE aMode)
-{
-/* default adaptation mode
-  * assume that if meshDim == 2 and no 3D backgrounmesh-->adaptation surface
-  * if meshDim == 3 and  if there is not 2D mesh -->VOLUME
-  * else BOTH
-  */
-
-  QString adaptation("adaptation"), value;
-  switch(aMode)
-  {
-    case ADAPTATION_MODE::SURFACE:
-    {
-      value ="surface";
-      setOptionValue(adaptation, value);
-      break;
-    }
-    case ADAPTATION_MODE::BOTH :
-    {
-      value = "both";
-      setOptionValue(adaptation, value);
-      break;
-    }
-    case ADAPTATION_MODE::VOLUME :
-    {
-      value = "volume";
-      setOptionValue(adaptation, value);
-      break;
-    }
-  }
-}
-void MgAdaptAdvWidget::setOptionValue(QString& option, QString& value)
-{
-  std::map<QString, QTreeWidgetItem *>::iterator it = optionTreeWidgetItem.find(option);
-  if (it != optionTreeWidgetItem.end())
-  {
-    it->second->setText( 0, tr( option.toLatin1().constData() ));
-    it->second->setText( 1, tr( value.toLatin1().constData() ));
-    it->second->setCheckState( 0,  Qt::Checked );
-    it->second->setData( NAME_COL, PARAM_NAME, option );
-    myOptionTable->editItem( it->second, NAME_COL );
-  }
-}
-namespace
-{
-bool isEditable( const QModelIndex& index )
-{
-  return index.isValid() &&
-          index.flags() & Qt::ItemIsEditable &&
-          index.flags() & Qt::ItemIsEnabled &&
-          ( !index.data( Qt::UserRole + 1 ).isValid() || index.data( Qt::UserRole + 1 ).toInt() != 0 );
-}
-}
-
-MgAdaptAdvWidgetTreeWidget::MgAdaptAdvWidgetTreeWidget( QWidget* parent )
-    : QTreeWidget( parent )
-{
-}
-
-QModelIndex MgAdaptAdvWidgetTreeWidget::moveCursor( CursorAction action, Qt::KeyboardModifiers modifiers )
-{
-  QModelIndex current = currentIndex();
-  int column = current.column();
-  if ( action == MoveNext )
-  {
-    if ( column < columnCount()-1 )
-    {
-      QModelIndex next = current.sibling( current.row(), column+1 );
-      if ( isEditable( next ) ) return next;
-    }
-    else
-    {
-      QModelIndex next = current.sibling( current.row()+1, 0 );
-      if ( isEditable( next ) ) return next;
-    }
-  }
-  else if ( action == MovePrevious )
-  {
-    if ( column == 0 ) {
-      QModelIndex next = current.sibling( current.row()-1, columnCount()-1 );
-      if ( isEditable( next ) ) return next;
-    }
-    else {
-      QModelIndex next = current.sibling( current.row(), column-1 );
-       if ( isEditable( next ) ) return next;
-    }
-  }
-  return QTreeWidget::moveCursor( action, modifiers );
-}
-
-void MgAdaptAdvWidgetTreeWidget::keyPressEvent( QKeyEvent* e )
-{
-  switch ( e->key() )
-  {
-    case Qt::Key_F2:
-    {
-      QModelIndex index = currentIndex();
-      if ( !isEditable( index ) ) {
-        for ( int i = 0; i < columnCount(); i++ ) {
-          QModelIndex sibling = index.sibling( index.row(), i );
-          if ( isEditable( sibling ) ) {
-            if ( !edit( sibling, EditKeyPressed, e ) ) e->ignore();
-          }
-        }
-      }
-    }
-    break;
-    default:
-      break;
-  }
-  QTreeWidget::keyPressEvent( e );
-}
index eb653df015cde4abafe732061c1873efd1b883f8..582865cc91e0fc5faaf1c582af5db3f65cca263b 100644 (file)
@@ -26,7 +26,7 @@
 #include "SMESH_SMESHGUI.hxx"
 
 // model
-#include "MG_ADAPTGUI.h"
+#include "SMESHGUI_MgAdaptDlg.h"
 
 // IDL includes
 #include <SALOMEconfig.h>
diff --git a/src/SMESHGUI/SMESHGUI_MgAdaptDlg.cxx b/src/SMESHGUI/SMESHGUI_MgAdaptDlg.cxx
new file mode 100644 (file)
index 0000000..7a76ea8
--- /dev/null
@@ -0,0 +1,1342 @@
+// Copyright (C) 2007-2020  CEA/DEN, EDF R&D, OPEN CASCADE
+//
+// Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+//  file : MG_ADAPTGUI.cxx
+
+#include "SMESHGUI_MgAdaptDlg.h"
+
+#include "MED_Factory.hxx"
+
+#include <SalomeApp_Tools.h>
+#include <SalomeApp_Module.h>
+#include <SUIT_MessageBox.h>
+#include <SUIT_OverrideCursor.h>
+#include <SUIT_FileDlg.h>
+
+#include <QApplication>
+#include <QButtonGroup>
+#include <QCheckBox>
+#include <QComboBox>
+#include <QDoubleSpinBox>
+#include <QFileDialog>
+#include <QGridLayout>
+#include <QGroupBox>
+#include <QHBoxLayout>
+#include <QHeaderView>
+#include <QItemDelegate>
+#include <QKeyEvent>
+#include <QLabel>
+#include <QLineEdit>
+#include <QMessageBox>
+#include <QPushButton>
+#include <QRadioButton>
+#include <QSpacerItem>
+#include <QSpinBox>
+#include <QString>
+#include <QTabWidget>
+#include <QTreeWidget>
+#include <QTreeWidgetItem>
+#include <QVBoxLayout>
+
+const int SPACING = 6;            // layout spacing
+const int MARGIN  = 9;            // layout margin
+
+namespace
+{
+
+  // ======================================================
+  QString lireNomDimMaillage(QString aFile, int& meshdim)
+  // ========================================================
+  {
+    QString nomMaillage = QString::null ;
+
+    try {
+      while ( true )
+      {
+
+        MED::PWrapper aMed = MED::CrWrapperR( aFile.toUtf8().data() );
+        MED::TInt numberOfMeshes = aMed->GetNbMeshes();
+
+        if (numberOfMeshes == 0 )
+        {
+          QMessageBox::critical( 0, QObject::tr("MG_ADAPT_ERROR"),
+                                 QObject::tr("MG_ADAPT_MED_FILE_2") );
+          break ;
+        }
+        if (numberOfMeshes > 1 )
+        {
+          QMessageBox::critical( 0, QObject::tr("MG_ADAPT_ERROR"),
+                                 QObject::tr("MG_ADAPT_MED_FILE_3") );
+          break ;
+        }
+
+        MED::PMeshInfo aMeshInfo = aMed->GetPMeshInfo( 1 );
+        nomMaillage = aMeshInfo->GetName().c_str();
+        meshdim = (int) aMeshInfo->GetDim();
+
+        break ;
+      }
+    }
+    catch ( const SALOME::SALOME_Exception & S_ex )
+    {
+      SalomeApp_Tools::QtCatchCorbaException(S_ex);
+    }
+
+    return nomMaillage;
+  }
+
+  // =======================================================================
+  std::map<QString, int> GetListeChamps(QString aFile, bool errorMessage=true)
+  // =======================================================================
+  {
+    // Il faut voir si plusieurs maillages
+
+    std::map<QString, int> ListeChamp ;
+
+    try
+    {
+      while ( true )
+      {
+        MED::PWrapper aMed = MED::CrWrapperR( aFile.toUtf8().data() );
+        MED::TInt jaux = aMed->GetNbFields();
+        if (jaux < 1 )
+        {
+          if(errorMessage)
+          {
+            QMessageBox::critical( 0, QObject::tr("_ERROR"),
+                                   QObject::tr("HOM_MED_FILE_5") );
+          }
+          break ;
+        }
+        // nbofcstp inutile pour le moment
+        MED::PMeshInfo aMeshInfo = aMed->GetPMeshInfo( 1 );
+        int nbofcstp = 1;
+        for( MED::TInt j=0;j<jaux;j++)
+        {
+          MED::PFieldInfo aFiledInfo = aMed->GetPFieldInfo( aMeshInfo, j + 1 );
+          ListeChamp.insert({ QString( aFiledInfo->GetName().c_str()), nbofcstp });
+        }
+        break ;
+      }
+    }
+    catch ( const SALOME::SALOME_Exception & S_ex )
+    {
+      SalomeApp_Tools::QtCatchCorbaException(S_ex);
+    }
+
+    return ListeChamp;
+  }
+
+  // =======================================================================
+  std::string remove_extension(const std::string& filename)
+  // =======================================================================
+  {
+    size_t lastdot = filename.find_last_of(".");
+    if (lastdot == std::string::npos) return filename;
+    return filename.substr(0, lastdot);
+  }
+}
+
+//=================================================================================
+// function : SMESHGUI_MgAdaptDlg()
+// purpose  :
+//=================================================================================
+SMESHGUI_MgAdaptDlg::SMESHGUI_MgAdaptDlg( SalomeApp_Module* theModule, SMESH::MG_ADAPT_ptr myModel, QWidget* parent, bool isCreation )
+  : QDialog(parent), mySMESHGUI( theModule )
+{
+  //~model = new MgAdapt(*myModel);
+  model = SMESH::MG_ADAPT::_duplicate(myModel);
+  model->Register();
+  myData = model->getData();
+  buildDlg();
+  if (!isCreation) readParamsFromHypo();
+}
+
+void SMESHGUI_MgAdaptDlg::buildDlg()
+{
+  setModal( false );
+  setAttribute( Qt::WA_DeleteOnClose, true );
+  setWindowTitle( tr( "ADAPT_PREF_MG_ADAPT" ) );
+  setSizeGripEnabled( true );
+
+  myTabWidget = new QTabWidget( this );
+
+  // Arguments
+
+  myArgs = new SMESHGUI_MgAdaptArguments( myTabWidget );
+  SMESH::string_array_var str = model->getOptionValuesStrVec();
+  SMESH::string_array_var str2 = model->getCustomOptionValuesStrVec();
+  std::vector<std::string> s;
+  for (CORBA::ULong i = 0; i< str->length(); i++) s.push_back( str[i].in());
+  for (CORBA::ULong j = str->length(); j< str2->length(); j++) s.push_back(str[ j - str->length() ].in() );
+  //~str.insert( str.end(), str2.begin(), str2.end() );
+
+  myAdvOpt = new MgAdaptAdvWidget(myTabWidget, &s);
+
+  /*int argsTab =*/ myTabWidget->addTab( myArgs, tr( "Args" ) );
+  /*int advTab  =*/ myTabWidget->addTab( myAdvOpt, tr( "ADVOP" ) );
+
+  myAdvOpt->workingDirectoryLabel         ->setText (tr( "WORKING_DIR" ));
+  myAdvOpt->workingDirectoryPushButton    ->setText (tr( "SELECT_DIR" ));
+  myAdvOpt->keepWorkingFilesCheck         ->setText (tr( "KEEP_WORKING_FILES" ));
+  myAdvOpt->verboseLevelLabel             ->setText (tr( "VERBOSE_LEVEL" ));
+  myAdvOpt->removeLogOnSuccessCheck       ->setText (tr( "REMOVE_LOG_ON_SUCCESS" ));
+  myAdvOpt->logInFileCheck                ->setText (tr( "LOG_IN_FILE" ));
+  myAdvOpt->logGroupBox                   ->setTitle(tr( "LOG_GROUP_TITLE" ));
+
+  // buttons
+  QPushButton* buttonOk = new QPushButton(tr("SMESH_BUT_APPLY_AND_CLOSE"), this);
+  buttonOk->setAutoDefault(false);
+  QPushButton* buttonApply = new QPushButton(tr("SMESH_BUT_APPLY"), this);
+  buttonApply->setAutoDefault(false);
+  QPushButton* buttonCancel = new QPushButton( tr( "SMESH_BUT_CANCEL" ), this );
+  buttonCancel->setAutoDefault( false );
+  QPushButton* buttonHelp = new QPushButton( tr( "SMESH_BUT_HELP" ), this );
+  buttonHelp->setAutoDefault( false );
+
+  QHBoxLayout* btnLayout = new QHBoxLayout;
+  btnLayout->setSpacing( SPACING );
+  btnLayout->setMargin( 0 );
+  btnLayout->addWidget( buttonOk );
+  btnLayout->addStretch( 10 );
+  btnLayout->addWidget( buttonApply );
+  btnLayout->addStretch( 10 );
+  btnLayout->addWidget( buttonCancel );
+  btnLayout->addStretch( 10 );
+  btnLayout->addWidget( buttonHelp );
+
+  QVBoxLayout* l = new QVBoxLayout ( this );
+  l->setMargin( MARGIN );
+  l->setSpacing( SPACING );
+  l->addWidget( myTabWidget );
+  l->addStretch();
+  l->addLayout( btnLayout );
+
+  connect( buttonOk,       SIGNAL(pressed()), this, SLOT(PushOnOK()));
+  connect( buttonApply,    SIGNAL(pressed()), this, SLOT(PushOnApply()));
+  connect( buttonCancel,   SIGNAL(pressed()), this, SLOT(close()));
+  connect( buttonHelp,     SIGNAL(pressed()), this, SLOT(PushOnHelp()));
+
+  connect( myArgs, SIGNAL(meshDimSignal(ADAPTATION_MODE)), myAdvOpt, SLOT( onMeshDimChanged(ADAPTATION_MODE))  );
+}
+
+
+//=================================================================================
+// function : ~SMESHGUI_MgAdaptDlg()
+// purpose  : Destroys the object and frees any allocated resources
+//=================================================================================
+SMESHGUI_MgAdaptDlg::~SMESHGUI_MgAdaptDlg()
+{
+    //~delete model;
+}
+
+//~void SMESHGUI_MgAdaptDlg::setModel(MgAdapt* mg)
+//~{
+    //~model = mg;
+//~}
+SMESH::MG_ADAPT_ptr SMESHGUI_MgAdaptDlg::getModel() const
+{
+  return model;
+}
+/*!
+\brief Perform clean-up actions on the dialog box closing.
+*/
+bool SMESHGUI_MgAdaptDlg::PushOnApply()
+{
+  bool ret = readParamsFromWidgets();
+  return ret;
+}
+void SMESHGUI_MgAdaptDlg::PushOnOK()
+{
+  bool ret = PushOnApply();
+  if ( ret ) reject();
+}
+void SMESHGUI_MgAdaptDlg::reject()
+{
+  QDialog::reject();
+}
+bool SMESHGUI_MgAdaptDlg::readParamsFromHypo( ) const
+{
+  bool ret = true;
+  myArgs->aMedfile->setChecked(myData->fromMedFile) ;
+  if (myData->fromMedFile)
+  {
+
+    myArgs->myFileInDir = myData->myFileInDir;
+    myArgs->selectMedFileLineEdit->setText(QString(myData->myMeshFileIn)) ;
+    // myData->myInMeshName = // TODO
+
+  }
+  else
+  {
+    myArgs->aBrowserObject->setText(QString(myData->myInMeshName));
+    //~ myArgs->myFileInDir =""; // TODO
+    //~ myArgs->selectMedFileLineEdit->setText(); // TODO
+  }
+  myArgs->meshNameLineEdit->setText(QString(myData->myOutMeshName));
+  myArgs->medFileCheckBox->setChecked(myData->myMeshOutMed);
+
+  if(myData->myMeshOutMed)
+  {
+    myArgs->myFileOutDir = QString(myData->myFileOutDir);
+    myArgs->selectOutMedFileLineEdit->setText(myData->myMeshFileOut.in());
+  }
+  else
+  {
+    myArgs->myFileOutDir = ""; //TODO
+  }
+
+  myArgs->publishOut->setChecked(myData->myPublish);
+
+  myArgs->localButton->setChecked(myData->myUseLocalMap);
+  myArgs->backgroundButton->setChecked(myData->myUseBackgroundMap);
+  myArgs->constantButton->setChecked(myData->myUseConstantValue);
+
+  if (myData->myUseConstantValue)
+  {
+    myArgs->dvalue->setValue(myData->myConstantValue);
+  }
+  else
+  {
+    myArgs->dvalue->setValue(0.0);
+  }
+
+  if (myData->myUseBackgroundMap)
+  {
+
+    myArgs->myFileSizeMapDir = QString(myData->myFileSizeMapDir) ;
+    myArgs->selectMedFileBackgroundLineEdit->setText(QString(myData->myMeshFileBackground));
+  }
+  else
+  {
+    myArgs->myFileSizeMapDir = "";  //TODO
+    myArgs->selectMedFileBackgroundLineEdit->setText(""); //TODO
+  }
+
+  myArgs->fieldNameCmb->setCurrentText(QString(myData->myFieldName));
+  myArgs->noTimeStep->setChecked(myData->myUseNoTimeStep);
+  myArgs->lastTimeStep->setChecked( myData->myUseLastTimeStep);
+  myArgs->chosenTimeStep->setChecked(myData->myUseChosenTimeStep);
+  if (myData->myUseChosenTimeStep)
+  {
+    myArgs->rankSpinBox->setValue(myData->myRank);
+    myArgs->timeStep->setValue(myData->myTimeStep);
+  }
+
+  myAdvOpt->workingDirectoryLineEdit->setText(QString(myData->myWorkingDir));
+  myAdvOpt->logInFileCheck->setChecked(myData->myPrintLogInFile);
+
+  myAdvOpt->verboseLevelSpin->setValue(myData->myVerboseLevel);
+  myAdvOpt->removeLogOnSuccessCheck->setChecked(myData->myRemoveLogOnSuccess);
+  myAdvOpt->keepWorkingFilesCheck->setChecked(myData->myKeepFiles);
+
+  return ret;
+
+}
+
+bool SMESHGUI_MgAdaptDlg::readParamsFromWidgets()
+{
+  bool ret = true ;
+  SMESH::MgAdaptHypothesisData data, *aData = &data;
+  while ( ret )
+  {
+    // 1. Fichier du maillage de départ
+    aData->fromMedFile = myArgs->aMedfile->isChecked();
+    if (aData->fromMedFile)
+    {
+      aData->myFileInDir = CORBA::string_dup(myArgs->myFileInDir.toUtf8().data());
+      aData->myMeshFileIn = CORBA::string_dup(myArgs->selectMedFileLineEdit->text().toUtf8().data());
+        // aData->myInMeshName = // TODO
+    }
+    else // TODO browser
+    {
+      QMessageBox::critical( 0, QObject::tr("MG_ADAPT_ERROR"),
+                                QObject::tr("MG_ADAPT_MED_FILE_4") );
+      ret = false ;
+      break ;
+  //     aData->myInMeshName = CORBA::string_dup(myArgs->aBrowserObject->text().toStdString().c_str());
+  //     aData->myFileInDir = CORBA::string_dup(myAdvOpt->workingDirectoryLineEdit->text().toStdString().c_str());
+  //
+  //     TCollection_AsciiString aGenericName = (char*)aData->myFileInDir;
+  //     TCollection_AsciiString aGenericName2 = "MgAdapt_";
+  //     aGenericName2 += getpid();
+  //     aGenericName2 += "_";
+  //     aGenericName2 += Abs((Standard_Integer)(long) aGenericName.ToCString());
+  //     aGenericName2 += ".med";
+  //     aGenericName+=aGenericName2;
+  //     emit myArgs->toExportMED(aGenericName.ToCString());
+  //     aData->myMeshFileIn = aGenericName2.ToCString();
+    }
+    // 2. Fichier du maillage de sortie
+    aData->myOutMeshName = CORBA::string_dup(myArgs->meshNameLineEdit->text().toStdString().c_str());
+    aData->myMeshOutMed = myArgs->medFileCheckBox->isChecked();
+    if(aData->myMeshOutMed)
+    {
+      aData->myFileOutDir = CORBA::string_dup(myArgs->myFileOutDir.toUtf8().data());
+      aData->myMeshFileOut = CORBA::string_dup(myArgs->selectOutMedFileLineEdit->text().toUtf8().data());
+    }
+    else
+    {
+      aData->myMeshFileOut = "";
+    }
+    aData->myPublish = myArgs->publishOut->isChecked();
+
+    // 3. Type de carte de tailles
+    aData->myUseLocalMap = myArgs->localButton->isChecked();
+    aData->myUseBackgroundMap = myArgs->backgroundButton->isChecked();
+    aData->myUseConstantValue = myArgs->constantButton->isChecked();
+    // 3.1. Constante
+    if (aData->myUseConstantValue)
+    {
+      aData->myConstantValue = myArgs->dvalue->value();
+    }
+    else
+    {
+      aData->myConstantValue = 0.0;
+    }
+    // 3.2. Arrière-plan
+    if (aData->myUseBackgroundMap)
+    {
+      aData->myFileSizeMapDir = CORBA::string_dup(myArgs->myFileSizeMapDir.toUtf8().data());
+      aData->myMeshFileBackground = CORBA::string_dup(myArgs->selectMedFileBackgroundLineEdit->text().toUtf8().data());
+    }
+    else
+    {
+      aData->myMeshFileBackground = "";
+    }
+
+  // 4. Le champ
+    if ( ! aData->myUseConstantValue )
+    {
+      if ( strlen(myArgs->fieldNameCmb->currentText().toStdString().c_str()) == 0 )
+      {
+        QMessageBox::critical( 0, QObject::tr("MG_ADAPT_ERROR"),
+                                  QObject::tr("MG_ADAPT_MED_FILE_5") );
+        ret = false ;
+        break ;
+      }
+      {
+        aData->myFieldName = CORBA::string_dup(myArgs->fieldNameCmb->currentText().toStdString().c_str());
+        aData->myUseNoTimeStep = myArgs->noTimeStep->isChecked();
+        aData->myUseLastTimeStep = myArgs->lastTimeStep->isChecked();
+        aData->myUseChosenTimeStep = myArgs->chosenTimeStep->isChecked();
+        if (aData->myUseChosenTimeStep)
+        {
+          aData->myRank = myArgs->rankSpinBox->value();
+          aData->myTimeStep = myArgs->timeStep->value();
+        }
+      }
+    }
+
+    // 5. Options avancées
+    aData->myWorkingDir = CORBA::string_dup(myAdvOpt->workingDirectoryLineEdit->text().toStdString().c_str());
+    aData->myPrintLogInFile = myAdvOpt->logInFileCheck->isChecked();
+    aData->myVerboseLevel = myAdvOpt->verboseLevelSpin->value();
+    aData->myRemoveLogOnSuccess = myAdvOpt->removeLogOnSuccessCheck->isChecked();
+    aData->myKeepFiles = myAdvOpt->keepWorkingFilesCheck->isChecked();
+    model->setData(*aData);
+
+    QString msg;
+    checkParams(msg);
+    break ;
+  }
+
+  return ret;
+}
+bool SMESHGUI_MgAdaptDlg::storeParamsToHypo( const SMESH::MgAdaptHypothesisData& ) const
+{
+  return true;
+}
+/*!
+  \brief Show help page
+*/
+void SMESHGUI_MgAdaptDlg::PushOnHelp()
+{
+//   QString aHelpFile;
+  // if ( myTabWidget->currentIndex() == MinDistance ) {
+  //   aHelpFile = "measurements.html#min-distance-anchor";
+  // } else if ( myTabWidget->currentIndex() == BoundingBox ) {
+  //   aHelpFile = "measurements.html#bounding-box-anchor";
+  // } else if ( myTabWidget->currentWidget() == myAngle ) {
+  //   aHelpFile = "measurements.html#angle-anchor";
+  // } else {
+  //   aHelpFile = "measurements.html#basic-properties-anchor";
+  // }
+
+//   SMESH::ShowHelpFile( aHelpFile );
+}
+bool SMESHGUI_MgAdaptDlg::checkParams(QString& msg)
+{
+  if ( !QFileInfo( myAdvOpt->workingDirectoryLineEdit->text().trimmed() ).isWritable() )
+  {
+    SUIT_MessageBox::warning( this,
+                              tr( "SMESH_WRN_WARNING" ),
+                              tr( "NO_PERMISSION" ) );
+    return false;
+  }
+
+
+  myAdvOpt->myOptionTable->setFocus();
+  QApplication::instance()->processEvents();
+
+  QString name, value;
+  bool isDefault, ok = true;
+  int iRow = 0, nbRows = myAdvOpt->myOptionTable->topLevelItemCount();
+  for ( ; iRow < nbRows; ++iRow )
+  {
+    QTreeWidgetItem* row = myAdvOpt->myOptionTable->topLevelItem( iRow );
+    myAdvOpt->GetOptionAndValue( row, name, value, isDefault );
+
+    if ( name.simplified().isEmpty() )
+        continue; // invalid custom option
+
+    if ( isDefault ) // not selected option
+        value.clear();
+
+    try
+    {
+      model->setOptionValue( name.toLatin1().constData(), value.toLatin1().constData() );
+    }
+    catch ( const SALOME::SALOME_Exception& ex )
+    {
+      msg = ex.details.text.in();
+      ok = false;
+      break;
+    }
+  }
+
+  return ok;
+}
+
+//=================================================================================
+// function : SMESHGUI_MgAdaptArguments()
+// purpose  :
+//=================================================================================
+SMESHGUI_MgAdaptArguments::SMESHGUI_MgAdaptArguments( QWidget* parent )
+  :QWidget(parent)
+{
+
+  if ( SUIT_FileDlg::getLastVisitedPath().isEmpty() )
+  {
+    myFileInDir = QDir::currentPath();
+    myFileOutDir = QDir::currentPath();
+    myFileSizeMapDir = QDir::currentPath();
+  }
+  else
+  {
+    myFileInDir = SUIT_FileDlg::getLastVisitedPath();
+    myFileOutDir = SUIT_FileDlg::getLastVisitedPath();
+    myFileSizeMapDir = SUIT_FileDlg::getLastVisitedPath();
+  }
+
+  meshDim = 0;
+  meshDimBG = 0;
+  // Mesh in
+  aMeshIn = new QGroupBox( tr( "MeshIn" ), this );
+  aMedfile       = new QRadioButton( tr( "MEDFile" ),    aMeshIn );
+  aBrowser       = new QRadioButton( tr( "Browser" ), aMeshIn );
+  aBrowserObject = new QLineEdit(  aMeshIn );
+  selectMedFilebutton = new QPushButton("...", aMeshIn);
+  selectMedFileLineEdit = new QLineEdit(  aMeshIn );
+
+  meshIn = new QGridLayout( aMeshIn );
+
+  meshIn->setMargin( MARGIN );
+  meshIn->setSpacing( SPACING );
+  meshIn->addWidget( aMedfile,     0, 0, 1,1 );
+  meshIn->addWidget( aBrowser,     0, 1,1,1);
+  meshIn->addWidget( aBrowserObject,     0, 2, 1, 1 );
+  meshIn->addWidget( selectMedFilebutton,  1, 0,1, 1);
+  meshIn->addWidget( selectMedFileLineEdit,  1, 1, 1, 1 );
+  hspacer = new QSpacerItem(188, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
+
+  meshInGroup = new QButtonGroup( this );
+  meshInGroup->addButton( aMedfile,   0 );
+  meshInGroup->addButton( aBrowser,   1 );
+
+  //Mesh out
+
+  aMeshOut = new QGroupBox( tr( "MeshOut" ), this );
+  meshName = new QLabel(tr("MeshName"), aMeshOut);
+  secondHspacer = new QSpacerItem(100, 30);
+  meshNameLineEdit = new QLineEdit(aMeshOut) ;
+  medFileCheckBox = new QCheckBox(tr("MEDFile"), aMeshOut);
+  selectOutMedFilebutton = new QPushButton("...", aMeshOut);
+  thirdHspacer = new QSpacerItem(188, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
+  selectOutMedFileLineEdit = new QLineEdit(aMeshOut) ;
+  publishOut = new  QCheckBox(tr("Publish_MG_ADAPT"), aMeshOut);
+
+  meshOut = new QGridLayout( aMeshOut );
+
+  meshOut->setMargin( MARGIN );
+  meshOut->setSpacing( SPACING );
+  meshOut->addWidget( meshName,  0, 0, 1,1 );
+  meshOut->addItem( secondHspacer,  0, 1, 1, 1 );
+  meshOut->addWidget( meshNameLineEdit, 0, 2,1,1);
+  meshOut->addWidget( medFileCheckBox,  1, 0,1,1 );
+  meshOut->addWidget( selectOutMedFilebutton,  1, 1,1,1 );
+  meshOut->addWidget( selectOutMedFileLineEdit,  1, 2,1,1);
+  meshOut->addWidget( publishOut,  2, 0,1,1 );
+
+  //size map definition
+
+  sizeMapDefinition  = new QGroupBox(tr("SIZE_MAP_DEF"), this);
+  localButton = new QRadioButton(tr("LOCAL_MG_ADAPT"), sizeMapDefinition);
+  backgroundButton = new QRadioButton(tr("BACKGRND_MG_ADAPT"), sizeMapDefinition);
+  constantButton = new QRadioButton(tr("CNST_MG_ADAPT"), sizeMapDefinition);
+  medFileBackground = new QLabel(tr("MED_FILE_BCKG"), sizeMapDefinition);
+  selectMedFileBackgroundbutton = new QPushButton("...", sizeMapDefinition);
+  selectMedFileBackgroundLineEdit = new QLineEdit(sizeMapDefinition);
+  valueLabel = new QLabel(tr("VALUE_MG_ADAPT"), sizeMapDefinition);
+  dvalue = new QDoubleSpinBox(sizeMapDefinition);
+  sizeMapDefGroup = new QButtonGroup( this );
+  sizeMapDefGroup->addButton( localButton,   0 );
+  sizeMapDefGroup->addButton( backgroundButton,   1 );
+  sizeMapDefGroup->addButton( constantButton,   2 );
+
+  sizeMapDefGroupLayout = new QGridLayout(sizeMapDefinition);
+  sizeMapDefGroupLayout->addWidget(localButton, 0,0);
+  sizeMapDefGroupLayout->addWidget(backgroundButton, 0,1);
+  sizeMapDefGroupLayout->addWidget(constantButton, 0,2);
+  sizeMapDefGroupLayout->addWidget(medFileBackground, 1,0);
+  sizeMapDefGroupLayout->addWidget(selectMedFileBackgroundbutton, 1,1);
+  sizeMapDefGroupLayout->addWidget(selectMedFileBackgroundLineEdit, 1,2);
+  sizeMapDefGroupLayout->addWidget(valueLabel, 2,0);
+  sizeMapDefGroupLayout->addWidget(dvalue, 2,1);
+
+  // size Map field
+  sizeMapField = new QGroupBox(tr("SIZE_MAP_FIELD"), this);
+  fieldName = new QLabel(tr("MG_ADAPT_FIELD_NAME"), sizeMapField);
+  fieldNameCmb = new QComboBox(sizeMapField);
+  noTimeStep = new QRadioButton(tr("MG_ADAPT_NO_T_ST"), sizeMapField);
+  lastTimeStep = new QRadioButton(tr("MG_ADAPT_L_ST"), sizeMapField);
+  chosenTimeStep = new QRadioButton(tr("MG_ADAPT_CH_ST"), sizeMapField);
+  timeStepLabel = new QLabel(tr("MG_ADAPT_TSTP"), sizeMapField);
+  timeStep = new QSpinBox(sizeMapField);
+  timeStep->setMinimum(-1);
+  rankLabel = new QLabel(tr("MG_ADAPT_RANK"), sizeMapField);
+  rankSpinBox = new QSpinBox(sizeMapField);
+  rankSpinBox->setMinimum(-1);
+
+  timeStepGroup = new QButtonGroup(this);
+  timeStepGroup->addButton(noTimeStep, 0);
+  timeStepGroup->addButton(lastTimeStep, 1);
+  timeStepGroup->addButton(chosenTimeStep, 2);
+
+  sizeMapFieldGroupLayout = new QGridLayout(sizeMapField);
+
+  sizeMapFieldGroupLayout->addWidget(fieldName, 0,0);
+  sizeMapFieldGroupLayout->addWidget(fieldNameCmb, 0,1);
+  sizeMapFieldGroupLayout->addWidget(noTimeStep, 1,0);
+  sizeMapFieldGroupLayout->addWidget(lastTimeStep, 1,1);
+  sizeMapFieldGroupLayout->addWidget(chosenTimeStep, 1,2);
+  sizeMapFieldGroupLayout->addWidget(timeStepLabel, 2,0);
+  sizeMapFieldGroupLayout->addWidget(timeStep, 2,1);
+  sizeMapFieldGroupLayout->addWidget(rankLabel, 2,2);
+  sizeMapFieldGroupLayout->addWidget(rankSpinBox, 2,3);
+
+  QGridLayout* argumentsLayout = new QGridLayout( this );
+  argumentsLayout->setMargin( MARGIN );
+  argumentsLayout->setSpacing( SPACING );
+
+  argumentsLayout->addWidget( aMeshIn,  0, 0, 1, 3 );
+  argumentsLayout->addWidget( aMeshOut, 1, 0, 1, 3 );
+  argumentsLayout->addWidget( sizeMapDefinition, 2, 0, 1, 3 );
+  argumentsLayout->addWidget( sizeMapField, 3, 0, 1, 3 );
+  argumentsLayout->setColumnStretch( 1, 5 );
+  argumentsLayout->setRowStretch( 4, 5 );
+
+  // Initial state
+  setMode( Mesh, Local);
+  medFileCheckBox->setChecked(true);
+  visibleTimeStepRankLabel (false);
+
+  // Connections
+  connect( meshInGroup,            SIGNAL( buttonClicked( int ) ),  this, SLOT( modeChanged( int ) ) );
+  connect( sizeMapDefGroup,        SIGNAL( buttonClicked( int ) ),  this, SLOT( sizeMapDefChanged( int ) ) );
+  connect( selectMedFilebutton,    SIGNAL( pressed(  ) ),           this, SLOT( onSelectMedFilebuttonClicked(  ) ) );
+  connect( medFileCheckBox,        SIGNAL (stateChanged(int)),      this, SLOT(onMedFileCheckBox(int) ) );
+  connect( publishOut,             SIGNAL (stateChanged(int)),      this, SLOT(onPublishOut(int) ) );
+  connect( selectOutMedFilebutton, SIGNAL( pressed()),              this, SLOT(onSelectOutMedFilebutton()));
+  connect( selectMedFileBackgroundbutton, SIGNAL(pressed()),        this, SLOT(onSelectMedFileBackgroundbutton()) );
+  connect( timeStepGroup,          SIGNAL( buttonClicked( int ) ),  this, SLOT( timeStepGroupChanged( int ) ) );
+  emit updateSelection();
+}
+
+//=================================================================================
+// function : ~SMESHGUI_MgAdaptArguments()
+// purpose  : Destroys the object and frees any allocated resources
+//=================================================================================
+SMESHGUI_MgAdaptArguments::~SMESHGUI_MgAdaptArguments()
+{
+}
+
+void SMESHGUI_MgAdaptArguments::onNoTimeStep(bool disableOther)
+{
+  noTimeStep->setChecked(true);
+
+  visibleTimeStepRankLabel (false);
+  rankSpinBox->setValue(-2);
+  timeStep->setValue(-2);
+
+  lastTimeStep->setDisabled(disableOther);
+  chosenTimeStep->setDisabled(disableOther);
+}
+void SMESHGUI_MgAdaptArguments::onLastTimeStep(bool disableOther)
+{
+  lastTimeStep->setChecked(true);
+
+  visibleTimeStepRankLabel (false);
+  rankSpinBox->setValue(-1);
+  timeStep->setValue(-1);
+  noTimeStep->setDisabled(disableOther);
+}
+void SMESHGUI_MgAdaptArguments::onChosenTimeStep(bool /*disableOther*/, int vmax)
+{
+  chosenTimeStep->setChecked(true);
+
+  visibleTimeStepRankLabel (true);
+  rankSpinBox->setValue(-1);
+  timeStep->setValue(-1);
+  if (vmax) timeStep->setMaximum(vmax);
+}
+
+void SMESHGUI_MgAdaptArguments::visibleTimeStepRankLabel(bool visible)
+{
+  rankLabel->setVisible(visible);
+  rankSpinBox->setVisible(visible);
+
+  timeStepLabel->setVisible(visible);
+  timeStep->setVisible(visible);
+}
+
+void SMESHGUI_MgAdaptArguments::onSelectOutMedFilebutton()
+{
+
+  QString filtre = QString("Med") ;
+  filtre += QString(" files (*.") + QString("med") + QString(");;");
+  QString fileName = QFileDialog::getSaveFileName(this, tr("SAVE_MED"), QString(""), filtre);
+  QFileInfo myFileInfo(fileName);
+  selectOutMedFileLineEdit->setText(myFileInfo.fileName());
+  myFileOutDir = myFileInfo.path();
+
+}
+void SMESHGUI_MgAdaptArguments::onSelectMedFileBackgroundbutton()
+{
+  QString fileName0 = selectMedFileBackgroundbutton->text().trimmed();
+
+  QString fileName = getMedFileName(false);
+  if (fileName != QString::null)
+  {
+    myFieldList = GetListeChamps(fileName);
+    if (myFieldList.empty())
+    {
+      fileName = fileName0;
+      fieldNameCmb->clear();
+    }
+    else
+    {
+      // fill field name Combobox
+      fieldNameCmb->clear();
+      std::map<QString, int>::const_iterator it;
+      for ( it=myFieldList.begin() ; it != myFieldList.end(); it++)
+      {
+        fieldNameCmb->insertItem(0,QString(it->first));
+        int typeStepInField = it->second > 2 ?  2 : it->second ;
+        timeStepGroupChanged(typeStepInField, false);
+      }
+      // Dimension du maillage de fonds
+      lireNomDimMaillage( fileName, meshDimBG );
+      valueAdaptation ();
+    }
+  }
+  else
+  {
+    fileName = fileName0;
+    fieldNameCmb->clear();
+  }
+
+  QFileInfo myFileInfo(fileName);
+  myFileSizeMapDir = myFileInfo.path();
+  selectMedFileBackgroundLineEdit->setText(myFileInfo.fileName());
+
+}
+void SMESHGUI_MgAdaptArguments::onMedFileCheckBox(int state)
+{
+  if (state == Qt::Checked)
+  {
+    selectOutMedFilebutton->show();
+    selectOutMedFileLineEdit->show();
+    selectOutMedFilebutton->setEnabled(true);
+    selectOutMedFileLineEdit->setEnabled(true);
+  }
+  else
+  {
+    selectOutMedFilebutton->setEnabled(false);
+    selectOutMedFileLineEdit->setEnabled(false);
+    publishOut->setChecked(true);
+  }
+}
+void SMESHGUI_MgAdaptArguments::onPublishOut(int state)
+{
+  if (state == Qt::Unchecked)
+  {
+    medFileCheckBox->setChecked(true);
+  }
+}
+
+void SMESHGUI_MgAdaptArguments::onSelectMedFilebuttonClicked()
+{
+  // bool keep = false;
+  QString fileName0 = selectMedFileLineEdit->text().trimmed();
+
+  QString fileName = getMedFileName(false);
+  if(fileName != QString::null)
+  {
+    QString aMeshName = lireNomDimMaillage(fileName.trimmed(), meshDim);
+    if (aMeshName.isEmpty() )
+    {
+      QMessageBox::critical( 0, QObject::tr("MG_ADAPT_ERROR"),
+                                QObject::tr("MG_ADAPT_MED_FILE_2") );
+      fileName = fileName0;
+    }
+    else
+    {
+      meshNameLineEdit->setText(aMeshName);
+      valueAdaptation ();
+//       ADAPTATION_MODE aMode = meshDim == 3 ? ADAPTATION_MODE::BOTH : ADAPTATION_MODE::SURFACE; // and when dimesh 3 without 2D mesh?
+//       emit meshDimSignal(aMode);
+    }
+  }
+  else
+  {
+      return;
+  }
+
+  QFileInfo myFileInfo(fileName);
+  myFileInDir = myFileInfo.path();
+  myFileOutDir = myFileInfo.path();
+  selectMedFileLineEdit->setText(myFileInfo.fileName());
+  QString outF = fileName == QString::null ? myFileInfo.fileName() :
+  QString( remove_extension(myFileInfo.fileName().toStdString() ).c_str() )+ QString(".adapt.med");
+  selectOutMedFileLineEdit->setText(outF);
+  onLocalSelected(myFileInfo.filePath());
+
+}
+
+void SMESHGUI_MgAdaptArguments::valueAdaptation()
+{
+  ADAPTATION_MODE aMode ;
+  if ( meshDimBG < 3 )
+  {
+    aMode = meshDim == 3 ? ADAPTATION_MODE::BOTH : ADAPTATION_MODE::SURFACE;
+  }
+  else
+  {
+    aMode = ADAPTATION_MODE::BOTH;
+  }
+  emit meshDimSignal(aMode);
+}
+
+void SMESHGUI_MgAdaptArguments::onLocalSelected(QString filePath)
+{
+  myFieldList = GetListeChamps(filePath, false);
+  if (myFieldList.empty())
+  {
+    if (localButton->isChecked())
+    {
+      fieldNameCmb->clear();
+    }
+  }
+  else
+  {
+    // fill field name Combobox
+    fieldNameCmb->clear();
+    std::map<QString, int>::const_iterator it;
+    for ( it = myFieldList.begin() ; it != myFieldList.end(); it++)
+    {
+      fieldNameCmb->insertItem(0,QString(it->first));
+      // Je ne comprends pas le rapport entre pas de temps et apparition d'un nouveau champ... GN
+      int typeStepInField = it->second > 2 ?  2 : it->second ;
+//             std::cout << "SMESHGUI_MgAdaptArguments::onLocalSelected typeStepInField : " << typeStepInField << std::endl;
+      timeStepGroupChanged(typeStepInField, false);
+    }
+  }
+}
+// =======================================================================
+// Gestion les boutons qui permettent  de
+// 1) retourne le nom d'un fichier par une fenetre de dialogue si aucun
+//    objet est selectionne dans l arbre d etude
+// 2) retourne le nom du fichier asocie a l objet
+//    selectionne dans l arbre d etude
+// =======================================================================
+QString SMESHGUI_MgAdaptArguments::getMedFileName(bool /*avertir*/)
+{
+
+  QString aFile = QString::null;
+  QString filtre = QString("Med") ;
+  filtre += QString(" files (*.") + QString("med") + QString(");;");
+  aFile = SUIT_FileDlg::getOpenFileName(0, QObject::tr("MG_ADAPT_SELECT_FILE_0"), QString(""), filtre );
+
+  return aFile;
+
+}
+void SMESHGUI_MgAdaptArguments::setMode(const Mode theMode, const SIZEMAP theSizeMap )
+{
+  QRadioButton* aButton = qobject_cast<QRadioButton*>( meshInGroup->button( theMode ) );
+  QRadioButton* bButton = qobject_cast<QRadioButton*>( sizeMapDefGroup->button( theSizeMap ) );
+  if ( aButton )
+  {
+    aButton->setChecked( true );
+    modeChanged( theMode );
+  }
+  if ( bButton )
+  {
+    bButton->setChecked( true );
+    sizeMapDefChanged( theSizeMap );
+  }
+}
+
+void SMESHGUI_MgAdaptArguments::modeChanged( int theMode )
+{
+  clear();
+  if(theMode == Mesh)
+  {
+    aBrowserObject->hide();
+    selectMedFileLineEdit->show();
+    selectMedFilebutton->show();
+    localButton->setEnabled(true);
+  }
+  else
+  {
+    selectMedFileLineEdit->hide();
+    selectMedFilebutton->hide();
+    localButton->setEnabled(false);
+    aBrowserObject->show();
+    sizeMapDefChanged(Background);
+    emit updateSelection();
+  }
+}
+
+void SMESHGUI_MgAdaptArguments::sizeMapDefChanged( int  theSizeMap )
+{
+  fieldNameCmb->clear();
+  if(theSizeMap == Local)
+  {
+    localButton->setEnabled(true);
+    localButton->setChecked(true);
+    medFileBackground->hide();
+    selectMedFileBackgroundbutton->hide();
+    selectMedFileBackgroundLineEdit->hide();
+    selectMedFileBackgroundLineEdit->clear();
+    valueLabel->hide();
+    dvalue->hide();
+
+    sizeMapField->setEnabled(true);
+    if (!selectMedFileLineEdit->text().isEmpty())
+    {
+      QFileInfo myFileInfo(QDir(myFileInDir), selectMedFileLineEdit->text());
+      onLocalSelected(myFileInfo.filePath());
+    }
+  }
+  else if (theSizeMap == Background)
+  {
+    medFileBackground->show();
+    backgroundButton->setChecked(true);
+    selectMedFileBackgroundbutton->show();
+    selectMedFileBackgroundLineEdit->show();
+    valueLabel->hide();
+    dvalue->hide();
+    sizeMapField->setEnabled(true);
+  }
+  else
+  {
+    medFileBackground->hide();
+    constantButton->setChecked(true);
+    selectMedFileBackgroundbutton->hide();
+    selectMedFileBackgroundLineEdit->clear();
+    selectMedFileBackgroundLineEdit->hide();
+    valueLabel->show();
+    dvalue->show();
+    sizeMapField->setEnabled(false);
+  }
+  meshDimBG = 0;
+  valueAdaptation();
+}
+void SMESHGUI_MgAdaptArguments::timeStepGroupChanged(int timeStepType, bool disableOther, int vmax)
+{
+  switch (timeStepType)
+  {
+  case 0 :
+    onNoTimeStep(disableOther);
+    break;
+  case 1 :
+    onLastTimeStep(disableOther);
+    break;
+  case 2 :
+    onChosenTimeStep(disableOther, vmax);
+  default:
+    break;
+  }
+}
+
+void SMESHGUI_MgAdaptArguments::clear()
+{
+  selectMedFileLineEdit->clear();
+  aBrowserObject->clear();
+
+  meshNameLineEdit->clear();
+  selectOutMedFileLineEdit->clear();
+}
+// med_int SMESHGUI_MgAdaptArguments::getMeshDim() const
+// {
+//   return meshDim;
+// }
+QWidget* ItemDelegate::createEditor(QWidget *parent, const QStyleOptionViewItem &o, const QModelIndex &index) const
+{
+  bool editable = index.data( EDITABLE_ROLE ).toInt();
+  return editable ? QItemDelegate::createEditor( parent, o, index ) : 0;
+}
+
+//////////////////////////////////////////
+// MgAdaptAdvWidget
+//////////////////////////////////////////
+
+MgAdaptAdvWidget::MgAdaptAdvWidget( QWidget* parent, std::vector <std::string>* options, Qt::WindowFlags f )
+  : QWidget( parent, f ), myOptions(options)
+{
+  setupWidget();
+  myOptionTable->header()->setSectionResizeMode( QHeaderView::ResizeToContents );
+  myOptionTable->setItemDelegate( new ItemDelegate( myOptionTable ) );
+
+  for ( size_t i = 0, nb = myOptions->size(); i < nb; ++i )
+  {
+    AddOption( (*myOptions)[i].c_str() );
+  }
+
+  connect( myOptionTable, SIGNAL( itemChanged(QTreeWidgetItem *, int)), SLOT( itemChanged(QTreeWidgetItem *, int )));
+  connect( addBtn,        SIGNAL(clicked()),       this, SLOT( onAddOption() ) );
+  connect(workingDirectoryPushButton, SIGNAL(pressed()),  this, SLOT(_onWorkingDirectoryPushButton()));
+}
+
+MgAdaptAdvWidget::~MgAdaptAdvWidget()
+{
+}
+
+void MgAdaptAdvWidget::AddOption( const char* option, bool isCustom )
+{
+  QString name, value;
+  bool isDefault = false;
+  if ( option )
+  {
+    QStringList name_value_type = QString(option).split( ":", QString::KeepEmptyParts );
+    if ( name_value_type.size() > 0 )
+        name = name_value_type[0];
+    if ( name_value_type.size() > 1 )
+        value = name_value_type[1];
+    if ( name_value_type.size() > 2 )
+        isDefault = !name_value_type[2].toInt();
+  }
+  QTreeWidget* table = myOptionTable;
+  //table->setExpanded( true );
+
+  QTreeWidgetItem* row;
+  if (optionTreeWidgetItem.size())
+  {
+    std::map<QString, QTreeWidgetItem *>::iterator it = optionTreeWidgetItem.find(name);
+    if(it != optionTreeWidgetItem.end()) return; // option exist
+    else
+    {
+      row = getNewQTreeWidgetItem(table, option, name, isCustom);
+    }
+  }
+  else
+  {
+    row = getNewQTreeWidgetItem(table, option, name, isCustom);
+  }
+  row->setText( 0, tr( name.toLatin1().constData() ));
+  row->setText( 1, tr( value.toLatin1().constData() ));
+  row->setCheckState( 0, isDefault ? Qt::Unchecked : Qt::Checked);
+  row->setData( NAME_COL, PARAM_NAME, name );
+
+  if ( isCustom )
+  {
+    myOptionTable->scrollToItem( row );
+    myOptionTable->setCurrentItem( row );
+    myOptionTable->editItem( row, NAME_COL );
+  }
+}
+
+QTreeWidgetItem* MgAdaptAdvWidget::getNewQTreeWidgetItem(QTreeWidget* table, const char* option, QString& name, bool isCustom)
+{
+  QTreeWidgetItem* row = new QTreeWidgetItem( table );
+  row->setData( NAME_COL, EDITABLE_ROLE, int( isCustom && !option ));
+  row->setFlags( row->flags() | Qt::ItemIsEditable );
+  optionTreeWidgetItem.insert(std::pair <QString, QTreeWidgetItem*> (name, row));
+
+  return row;
+}
+
+void MgAdaptAdvWidget::onAddOption()
+{
+  AddOption( NULL, true );
+}
+void MgAdaptAdvWidget::GetOptionAndValue( QTreeWidgetItem * tblRow,
+        QString&          option,
+        QString&          value,
+        bool&             isDefault)
+{
+  option    = tblRow->data( NAME_COL, PARAM_NAME ).toString();
+  value     = tblRow->text( VALUE_COL );
+  isDefault = ! tblRow->checkState( NAME_COL );
+
+}
+
+void MgAdaptAdvWidget::itemChanged(QTreeWidgetItem* tblRow, int column)
+{
+  if ( tblRow )
+  {
+    myOptionTable->blockSignals( true );
+
+    tblRow->setData( VALUE_COL, EDITABLE_ROLE, int( tblRow->checkState( NAME_COL )));
+
+    int c = tblRow->checkState( NAME_COL ) ? 0 : 150;
+    tblRow->setForeground( VALUE_COL, QBrush( QColor( c, c, c )));
+
+    if ( column == NAME_COL && tblRow->data( NAME_COL, EDITABLE_ROLE ).toInt() ) // custom table
+    {
+      tblRow->setData( NAME_COL, PARAM_NAME, tblRow->text( NAME_COL ));
+    }
+
+    myOptionTable->blockSignals( false );
+  }
+}
+void MgAdaptAdvWidget::setupWidget()
+{
+  if (this->objectName().isEmpty())
+      this->setObjectName(QString(tr("MG-ADAPT-ADV")));
+  this->resize(337, 369);
+  gridLayout_4 = new QGridLayout(this);
+  gridLayout_4->setObjectName(QString("gridLayout_4"));
+  myOptionTable = new MgAdaptAdvWidgetTreeWidget(this);
+  QFont font;
+  font.setBold(false);
+  font.setWeight(50);
+  QTreeWidgetItem *__qtreewidgetitem = new QTreeWidgetItem();
+  __qtreewidgetitem->setFont(1, font);
+  __qtreewidgetitem->setFont(0, font);
+  __qtreewidgetitem->setText(1, tr("OPTION_VALUE_COLUMN"));
+  __qtreewidgetitem->setText(0, tr("OPTION_NAME_COLUMN"));
+  myOptionTable->setHeaderItem(__qtreewidgetitem);
+  myOptionTable->setObjectName(QString("myOptionTable"));
+  myOptionTable->setEditTriggers(QAbstractItemView::DoubleClicked|QAbstractItemView::EditKeyPressed);
+  myOptionTable->setTabKeyNavigation(true);
+
+  gridLayout_4->addWidget(myOptionTable, 0, 0, 1, 2);
+
+  addBtn = new QPushButton(this);
+  addBtn->setText(QApplication::translate("SMESH_AdvOptionsWdg", "ADD_OPTION_BTN", Q_NULLPTR));
+  addBtn->setObjectName(QString("addBtn"));
+
+  gridLayout_4->addWidget(addBtn, 1, 0, 1, 1);
+
+  horizontalSpacer = new QSpacerItem(188, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
+
+  gridLayout_4->addItem(horizontalSpacer, 1, 1, 1, 1);
+
+  logGroupBox = new QGroupBox(this);
+  logGroupBox->setObjectName(QString("logGroupBox"));
+  gridLayout_2 = new QGridLayout(logGroupBox);
+  gridLayout_2->setObjectName(QString("gridLayout_2"));
+  gridLayout = new QGridLayout();
+  gridLayout->setObjectName(QString("gridLayout"));
+  workingDirectoryLabel = new QLabel(logGroupBox);
+  workingDirectoryLabel->setObjectName(QString("workingDirectoryLabel"));
+
+  gridLayout->addWidget(workingDirectoryLabel, 0, 0, 1, 1);
+
+  workingDirectoryLineEdit = new QLineEdit(logGroupBox);
+  workingDirectoryLineEdit->setObjectName(QString("workingDirectoryLineEdit"));
+
+  gridLayout->addWidget(workingDirectoryLineEdit, 0, 1, 1, 1);
+
+  workingDirectoryPushButton = new QPushButton(logGroupBox);
+  workingDirectoryPushButton->setObjectName(QString("workingDirectoryPushButton"));
+
+  gridLayout->addWidget(workingDirectoryPushButton, 0, 2, 1, 1);
+
+  verboseLevelLabel = new QLabel(logGroupBox);
+  verboseLevelLabel->setObjectName(QString("verboseLevelLabel"));
+
+  gridLayout->addWidget(verboseLevelLabel, 1, 0, 1, 1);
+
+  verboseLevelSpin = new QSpinBox(logGroupBox);
+  verboseLevelSpin->setObjectName(QString("verboseLevelSpin"));
+
+  gridLayout->addWidget(verboseLevelSpin, 1, 1, 1, 1);
+
+
+  gridLayout_2->addLayout(gridLayout, 0, 0, 1, 1);
+
+  horizontalLayout = new QHBoxLayout();
+  horizontalLayout->setObjectName(QString("horizontalLayout"));
+  logInFileCheck = new QCheckBox(logGroupBox);
+  logInFileCheck->setObjectName(QString("logInFileCheck"));
+  logInFileCheck->setChecked(true);
+
+  horizontalLayout->addWidget(logInFileCheck);
+
+  removeLogOnSuccessCheck = new QCheckBox(logGroupBox);
+  removeLogOnSuccessCheck->setObjectName(QString("removeLogOnSuccessCheck"));
+  removeLogOnSuccessCheck->setChecked(true);
+
+  horizontalLayout->addWidget(removeLogOnSuccessCheck);
+
+
+  gridLayout_2->addLayout(horizontalLayout, 1, 0, 1, 1);
+
+  keepWorkingFilesCheck = new QCheckBox(logGroupBox);
+  keepWorkingFilesCheck->setObjectName(QString("keepWorkingFilesCheck"));
+  keepWorkingFilesCheck->setAutoExclusive(false);
+
+  gridLayout_2->addWidget(keepWorkingFilesCheck, 2, 0, 1, 1);
+
+
+  gridLayout_4->addWidget(logGroupBox, 3, 0, 1, 2);
+
+}
+void MgAdaptAdvWidget::_onWorkingDirectoryPushButton()
+{
+  QString aDirName=QFileDialog::getExistingDirectory ();
+  if (!(aDirName.isEmpty()))workingDirectoryLineEdit->setText(aDirName);
+}
+void MgAdaptAdvWidget::onMeshDimChanged(ADAPTATION_MODE aMode)
+{
+/* default adaptation mode
+  * assume that if meshDim == 2 and no 3D backgrounmesh-->adaptation surface
+  * if meshDim == 3 and  if there is not 2D mesh -->VOLUME
+  * else BOTH
+  */
+
+  QString adaptation("adaptation"), value;
+  switch(aMode)
+  {
+    case ADAPTATION_MODE::SURFACE:
+    {
+      value ="surface";
+      setOptionValue(adaptation, value);
+      break;
+    }
+    case ADAPTATION_MODE::BOTH :
+    {
+      value = "both";
+      setOptionValue(adaptation, value);
+      break;
+    }
+    case ADAPTATION_MODE::VOLUME :
+    {
+      value = "volume";
+      setOptionValue(adaptation, value);
+      break;
+    }
+  }
+}
+void MgAdaptAdvWidget::setOptionValue(QString& option, QString& value)
+{
+  std::map<QString, QTreeWidgetItem *>::iterator it = optionTreeWidgetItem.find(option);
+  if (it != optionTreeWidgetItem.end())
+  {
+    it->second->setText( 0, tr( option.toLatin1().constData() ));
+    it->second->setText( 1, tr( value.toLatin1().constData() ));
+    it->second->setCheckState( 0,  Qt::Checked );
+    it->second->setData( NAME_COL, PARAM_NAME, option );
+    myOptionTable->editItem( it->second, NAME_COL );
+  }
+}
+namespace
+{
+bool isEditable( const QModelIndex& index )
+{
+  return index.isValid() &&
+          index.flags() & Qt::ItemIsEditable &&
+          index.flags() & Qt::ItemIsEnabled &&
+          ( !index.data( Qt::UserRole + 1 ).isValid() || index.data( Qt::UserRole + 1 ).toInt() != 0 );
+}
+}
+
+MgAdaptAdvWidgetTreeWidget::MgAdaptAdvWidgetTreeWidget( QWidget* parent )
+    : QTreeWidget( parent )
+{
+}
+
+QModelIndex MgAdaptAdvWidgetTreeWidget::moveCursor( CursorAction action, Qt::KeyboardModifiers modifiers )
+{
+  QModelIndex current = currentIndex();
+  int column = current.column();
+  if ( action == MoveNext )
+  {
+    if ( column < columnCount()-1 )
+    {
+      QModelIndex next = current.sibling( current.row(), column+1 );
+      if ( isEditable( next ) ) return next;
+    }
+    else
+    {
+      QModelIndex next = current.sibling( current.row()+1, 0 );
+      if ( isEditable( next ) ) return next;
+    }
+  }
+  else if ( action == MovePrevious )
+  {
+    if ( column == 0 ) {
+      QModelIndex next = current.sibling( current.row()-1, columnCount()-1 );
+      if ( isEditable( next ) ) return next;
+    }
+    else {
+      QModelIndex next = current.sibling( current.row(), column-1 );
+       if ( isEditable( next ) ) return next;
+    }
+  }
+  return QTreeWidget::moveCursor( action, modifiers );
+}
+
+void MgAdaptAdvWidgetTreeWidget::keyPressEvent( QKeyEvent* e )
+{
+  switch ( e->key() )
+  {
+    case Qt::Key_F2:
+    {
+      QModelIndex index = currentIndex();
+      if ( !isEditable( index ) ) {
+        for ( int i = 0; i < columnCount(); i++ ) {
+          QModelIndex sibling = index.sibling( index.row(), i );
+          if ( isEditable( sibling ) ) {
+            if ( !edit( sibling, EditKeyPressed, e ) ) e->ignore();
+          }
+        }
+      }
+    }
+    break;
+    default:
+      break;
+  }
+  QTreeWidget::keyPressEvent( e );
+}
diff --git a/src/SMESHGUI/SMESHGUI_MgAdaptDlg.h b/src/SMESHGUI/SMESHGUI_MgAdaptDlg.h
new file mode 100644 (file)
index 0000000..89902e6
--- /dev/null
@@ -0,0 +1,284 @@
+// Copyright (C) 2007-2020  CEA/DEN, EDF R&D, OPEN CASCADE\r
+//\r
+// Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,\r
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS\r
+//\r
+// This library is free software; you can redistribute it and/or\r
+// modify it under the terms of the GNU Lesser General Public\r
+// License as published by the Free Software Foundation; either\r
+// version 2.1 of the License, or (at your option) any later version.\r
+//\r
+// This library is distributed in the hope that it will be useful,\r
+// but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\r
+// Lesser General Public License for more details.\r
+//\r
+// You should have received a copy of the GNU Lesser General Public\r
+// License along with this library; if not, write to the Free Software\r
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA\r
+//\r
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com\r
+//\r
+// SMESH SMESHGUI : GUI for the adaptation in the SMESH component\r
+// File : MG_ADAPTGUI.hxx\r
+//\r
+#ifndef MG_ADAPTGUI_HXX\r
+#define MG_ADAPTGUI_HXX\r
+\r
+// Qt includes\r
+#include <QDialog>\r
+#include <QTreeWidget>\r
+#include <QItemDelegate>\r
+\r
+#include <map>\r
+\r
+#include <SALOMEconfig.h>\r
+#include CORBA_SERVER_HEADER(MG_ADAPT)\r
+#include <SALOME_GenericObj_wrap.hxx>\r
+\r
+class SalomeApp_Module;\r
+\r
+class QButtonGroup;\r
+class QLineEdit;\r
+class QGroupBox;\r
+class QRadioButton;\r
+class QLabel;\r
+class QCheckBox;\r
+class QGridLayout;\r
+class QTabWidget;\r
+class QDoubleSpinBox;\r
+class QSpacerItem;\r
+class QSpinBox;\r
+class QTreeWidgetItem;\r
+class QHBoxLayout;\r
+class QComboBox;\r
+\r
+class SMESHGUI_MgAdaptArguments;\r
+class MgAdaptAdvWidgetTreeWidget;\r
+class MgAdaptAdvWidget;\r
+\r
+enum ADAPTATION_MODE{\r
+  SURFACE,\r
+  VOLUME,\r
+  BOTH\r
+};\r
+\r
+//=================================================================================\r
+// class    : SMESHGUI_MgAdaptDlg\r
+// purpose  :\r
+//=================================================================================\r
+class  SMESHGUI_MgAdaptDlg : public QDialog\r
+{\r
+  Q_OBJECT\r
+public:\r
+  //! Property type\r
+  enum Mode { Arguments, AdvancedOptions};\r
+  SMESHGUI_MgAdaptDlg( SalomeApp_Module*, SMESH::MG_ADAPT_ptr, QWidget* parent= 0,bool isCreation = true );\r
+  ~SMESHGUI_MgAdaptDlg();\r
+\r
+  void buildDlg();\r
+  void reject();\r
+  bool checkParams(QString& msg) ;\r
+  //~void setModel(MgAdapt*);\r
+  SMESH::MG_ADAPT_ptr getModel() const;\r
+\r
+public slots:\r
+\r
+protected slots:\r
+  virtual bool PushOnApply();\r
+\r
+private slots:\r
+  virtual void PushOnHelp();\r
+  virtual void PushOnOK();\r
+\r
+protected :\r
+\r
+  SMESHGUI_MgAdaptArguments* myArgs;\r
+  MgAdaptAdvWidget*          myAdvOpt;\r
+\r
+  bool readParamsFromHypo( ) const ;\r
+  bool readParamsFromWidgets( ) ;\r
+  bool storeParamsToHypo( const SMESH::MgAdaptHypothesisData & ) const;\r
+\r
+private:\r
+\r
+  SalomeApp_Module*              mySMESHGUI;\r
+  QTabWidget*                    myTabWidget;\r
+\r
+  SMESH::MgAdaptHypothesisData_var           myData;\r
+  SALOME::GenericObj_wrap< SMESH::MG_ADAPT > model;\r
+\r
+};\r
+\r
+class  SMESHGUI_MgAdaptArguments : public QWidget\r
+{\r
+  Q_OBJECT\r
+public:\r
+  //! Property type\r
+  enum Mode { Mesh, Browser};\r
+  enum SIZEMAP { Local, Background, Constant};\r
+  SMESHGUI_MgAdaptArguments( QWidget* parent);\r
+  ~SMESHGUI_MgAdaptArguments();\r
+  void setMode( const Mode, const SIZEMAP );\r
+\r
+  QString myFileInDir;\r
+  QString myFileOutDir;\r
+  QString myFileSizeMapDir;\r
+  QGroupBox*    aMeshIn ;\r
+  QRadioButton* aMedfile;\r
+  QRadioButton* aBrowser ;\r
+  QLineEdit* aBrowserObject;\r
+  QPushButton* selectMedFilebutton ;\r
+  QSpacerItem* hspacer;\r
+  QLineEdit* selectMedFileLineEdit ;\r
+  QButtonGroup* meshInGroup ;\r
+  QGridLayout* meshIn ;\r
+\r
+  QGroupBox*    aMeshOut ;\r
+  QLabel* meshName;\r
+  QLineEdit* meshNameLineEdit;\r
+  QSpacerItem* secondHspacer;\r
+  QCheckBox* medFileCheckBox;\r
+  QPushButton* selectOutMedFilebutton;\r
+  QLineEdit* selectOutMedFileLineEdit;\r
+  QSpacerItem* thirdHspacer;\r
+  QCheckBox* publishOut;\r
+  QGridLayout* meshOut ;\r
+\r
+  QGroupBox*    sizeMapDefinition ;\r
+  QRadioButton* localButton;\r
+  QRadioButton* backgroundButton ;\r
+  QRadioButton* constantButton ;\r
+  QLabel* medFileBackground;\r
+  QPushButton* selectMedFileBackgroundbutton;\r
+  QLineEdit* selectMedFileBackgroundLineEdit;\r
+  QLabel* valueLabel;\r
+  QDoubleSpinBox* dvalue;\r
+  QButtonGroup* sizeMapDefGroup ;\r
+  QGridLayout* sizeMapDefGroupLayout;\r
+\r
+\r
+  QGroupBox* sizeMapField;\r
+  QLabel* fieldName;\r
+  QComboBox* fieldNameCmb;\r
+  QRadioButton* noTimeStep;\r
+  QRadioButton* lastTimeStep ;\r
+  QRadioButton* chosenTimeStep;\r
+  QLabel* timeStepLabel;\r
+  QSpinBox* timeStep;\r
+  QLabel* rankLabel;\r
+  QSpinBox* rankSpinBox;\r
+  QButtonGroup* timeStepGroup;\r
+  QGridLayout* sizeMapFieldGroupLayout;\r
+\r
+signals:\r
+  void updateSelection();\r
+  void toExportMED(const char *);\r
+  void meshDimSignal(ADAPTATION_MODE aMode);\r
+public slots:\r
+\r
+protected slots:\r
+\r
+private slots:\r
+  void modeChanged( int);\r
+  void sizeMapDefChanged(int);\r
+  void timeStepGroupChanged(int timeStepType, bool disableOther = false, int vmax = 0);\r
+  void onSelectMedFilebuttonClicked();\r
+  void clear();\r
+  void onMedFileCheckBox(int);\r
+  void onPublishOut(int);\r
+  void onSelectOutMedFilebutton();\r
+  void onSelectMedFileBackgroundbutton();\r
+  void onLocalSelected(QString);\r
+  void onNoTimeStep(bool disableOther = false);\r
+  void onLastTimeStep(bool disableOther = false);\r
+  void onChosenTimeStep(bool disableOther = false, int vmax = 0);\r
+  void visibleTimeStepRankLabel(bool visible);\r
+  void valueAdaptation ();\r
+\r
+private:\r
+\r
+  QString getMedFileName(bool avertir);\r
+  int meshDim;\r
+  int meshDimBG;\r
+  std::map<QString, int> myFieldList;\r
+\r
+};\r
+enum {\r
+  OPTION_ID_COLUMN = 0,\r
+  OPTION_TYPE_COLUMN,\r
+  OPTION_NAME_COLUMN = 0,\r
+  OPTION_VALUE_COLUMN,\r
+  NB_COLUMNS,\r
+};\r
+\r
+//////////////////////////////////////////\r
+// MgAdaptAdvWidget\r
+//////////////////////////////////////////\r
+class  MgAdaptAdvWidget : public QWidget\r
+{\r
+  Q_OBJECT\r
+\r
+public:\r
+  MgAdaptAdvWidget( QWidget* = 0, std::vector <std::string> * = nullptr, Qt::WindowFlags = 0 );\r
+  ~MgAdaptAdvWidget();\r
+  std::vector < std::string > *myOptions;\r
+  QGridLayout                 *gridLayout_4;\r
+  MgAdaptAdvWidgetTreeWidget  *myOptionTable;\r
+  QPushButton                 *addBtn;\r
+  QSpacerItem                 *horizontalSpacer;\r
+  QGroupBox                   *logGroupBox;\r
+  QGridLayout                 *gridLayout_2;\r
+  QGridLayout                 *gridLayout;\r
+  QLabel                      *workingDirectoryLabel;\r
+  QLineEdit                   *workingDirectoryLineEdit;\r
+  QPushButton                 *workingDirectoryPushButton;\r
+  QLabel                      *verboseLevelLabel;\r
+  QSpinBox                    *verboseLevelSpin;\r
+  QHBoxLayout                 *horizontalLayout;\r
+  QCheckBox                   *logInFileCheck;\r
+  QCheckBox                   *removeLogOnSuccessCheck;\r
+  QCheckBox                   *keepWorkingFilesCheck;\r
+\r
+  void AddOption( const char* name_value_type, bool isCustom = false );\r
+  void GetOptionAndValue( QTreeWidgetItem * tblRow, QString& option, QString& value, bool& dflt );\r
+  void setupWidget();\r
+\r
+public slots:\r
+  void                onAddOption();\r
+  void itemChanged(QTreeWidgetItem * tblRow, int column);\r
+  void onMeshDimChanged(ADAPTATION_MODE aMode);\r
+private slots:\r
+  void _onWorkingDirectoryPushButton();\r
+private:\r
+  void setOptionValue(QString& option, QString& value);\r
+  std::map<QString, QTreeWidgetItem *> optionTreeWidgetItem;\r
+\r
+  QTreeWidgetItem* getNewQTreeWidgetItem(QTreeWidget* table, const char* option, QString& name, bool isCustom);\r
+\r
+};\r
+\r
+enum { EDITABLE_ROLE = Qt::UserRole + 1, PARAM_NAME,\r
+       NAME_COL = 0, VALUE_COL\r
+     };\r
+\r
+class  ItemDelegate: public QItemDelegate\r
+{\r
+public:\r
+\r
+  ItemDelegate(QObject* parent=0): QItemDelegate(parent) {}\r
+  QWidget* createEditor(QWidget *parent, const QStyleOptionViewItem &o, const QModelIndex &index) const;\r
+};\r
+\r
+class  MgAdaptAdvWidgetTreeWidget : public QTreeWidget\r
+{\r
+  Q_OBJECT\r
+public:\r
+  MgAdaptAdvWidgetTreeWidget( QWidget* );\r
+\r
+protected:\r
+  QModelIndex moveCursor( CursorAction, Qt::KeyboardModifiers );\r
+  void keyPressEvent( QKeyEvent* );\r
+};\r
+\r
+#endif // MG_ADAPTGUI_HXX\r