Salome HOME
Merge branch 'master' into gni/adaptation
authorGérald NICOLAS <gerald.nicolas@edf.fr>
Fri, 28 Aug 2020 08:55:33 +0000 (10:55 +0200)
committerGérald NICOLAS <gerald.nicolas@edf.fr>
Fri, 28 Aug 2020 08:55:33 +0000 (10:55 +0200)
1  2 
CMakeLists.txt
src/SMESHGUI/SMESHGUI.cxx

diff --combined CMakeLists.txt
index ad268dcd098600956e0cd52cd044d254298e44f1,6e6839abd3aeef2b325a8e7fba5c51fef88879ea..9409ace73eb22bb59137fd61279fd145637fde7f
@@@ -27,7 -27,7 +27,7 @@@ INCLUDE(CMakeDependentOption
  STRING(TOUPPER ${PROJECT_NAME} PROJECT_NAME_UC)
  
  SET(${PROJECT_NAME_UC}_MAJOR_VERSION 9)
- SET(${PROJECT_NAME_UC}_MINOR_VERSION 4)
+ SET(${PROJECT_NAME_UC}_MINOR_VERSION 5)
  SET(${PROJECT_NAME_UC}_PATCH_VERSION 0)
  SET(${PROJECT_NAME_UC}_VERSION
    ${${PROJECT_NAME_UC}_MAJOR_VERSION}.${${PROJECT_NAME_UC}_MINOR_VERSION}.${${PROJECT_NAME_UC}_PATCH_VERSION})
@@@ -191,15 -191,6 +191,15 @@@ IF(NOT WITH_SHAPER_STUDY AND SALOME_BUI
    MESSAGE(WARNING "SHAPERSTUDY is not found; the corresponding tests will be omitted")
  ENDIF()
  
 +# Find MEDCoupling
 +# ================
 +SET(MEDCOUPLING_ROOT_DIR $ENV{MEDCOUPLING_ROOT_DIR} CACHE PATH "Path to the MEDCoupling tool")
 +IF(EXISTS ${MEDCOUPLING_ROOT_DIR})
 +  FIND_PACKAGE(SalomeMEDCoupling REQUIRED)   # will reload HDF5, MEDFile, XDR, etc ...
 +ELSE(EXISTS ${MEDCOUPLING_ROOT_DIR})
 +  MESSAGE(FATAL_ERROR "We absolutely need the MEDCoupling tool, please define MEDCOUPLING_ROOT_DIR !")
 +ENDIF(EXISTS ${MEDCOUPLING_ROOT_DIR})
 +
  ##
  ## SMESH specifics
  ##
@@@ -285,16 -276,6 +285,16 @@@ MARK_AS_ADVANCED(SALOME_INSTALL_PYTHON 
  MARK_AS_ADVANCED(SALOME_INSTALL_AMCONFIG_LOCAL SALOME_INSTALL_DOC)
  MARK_AS_ADVANCED(SALOME_SMESH_INSTALL_RES_DATA SALOME_SMESH_INSTALL_PLUGINS)
  
 +# Specific to ADAPT:
 +# SET(SALOME_ADAPT_INSTALL_RES_DATA "${SALOME_INSTALL_RES}/adapt" CACHE PATH
 +#   "Install path: SALOME ADAPT specific data")
 +SET(SALOME_ADAPT_INSTALL_SAMPLES share/salome/adaptsamples CACHE PATH
 +  "Install path: SALOME ADAPT samples")
 +SET(SALOME_ADAPT_INSTALL_TEST ${SALOME_INSTALL_SCRIPT_SCRIPTS}/test CACHE PATH
 +    "Install path: SALOME ADAPT Test files")
 +SET(SALOME_ADAPT_INSTALL_RES_DATA "${SALOME_INSTALL_RES}/adapt" CACHE PATH
 +    "Install path: SALOME ADAPT specific data")
 +
  # Accumulate environment variables for SMESH module
  SALOME_ACCUMULATE_ENVIRONMENT(PYTHONPATH NOCHECK ${CMAKE_INSTALL_PREFIX}/${SALOME_INSTALL_BINS}
                                                   ${CMAKE_INSTALL_PREFIX}/${SALOME_INSTALL_PYTHON}
@@@ -334,7 -315,6 +334,7 @@@ SET(_${PROJECT_NAME}_exposed_target
    SMDS SMESHimpl SMESHEngine SMESHClient SMESHDS
    SMESHUtils StdMeshers StdMeshersEngine MeshJobManagerEngine
    SPADDERPluginTesterEngine SalomeIDLSMESH SalomeIDLSPADDER
 +  ADAPTEngine ADAPTFrontTrack ADAPTImpl
  )
  
  IF(SALOME_SMESH_ENABLE_MEFISTO)
@@@ -344,7 -324,7 +344,7 @@@ ENDIF(SALOME_SMESH_ENABLE_MEFISTO
  
  IF(SALOME_BUILD_GUI)
    LIST(APPEND _${PROJECT_NAME}_exposed_targets
 -      SMESHObject SMESHFiltersSelection SMESH PluginUtils StdMeshersGUI
 +      SMESHObject SMESHFiltersSelection SMESH PluginUtils StdMeshersGUI ADAPTGUI
    )
  ENDIF(SALOME_BUILD_GUI)
  
index 27fe6571be075e73c64e7ea0a51cff4d5e34349b,80211ac67b9cbf7fea19bd66d4fd8801fb7c4728..6ed14a43586ef35675652222a197c194f98cb0ec
@@@ -30,7 -30,6 +30,7 @@@
  
  //  SMESH includes
  #include "SMESHGUI.h"
 +#include "SMESHGUI_AdaptDlg.h"
  #include "SMESHGUI_Add0DElemsOnAllNodesDlg.h"
  #include "SMESHGUI_AddMeshElementDlg.h"
  #include "SMESHGUI_AddQuadraticElementDlg.h"
@@@ -1970,12 -1969,12 +1970,12 @@@ void SMESHGUI::OnEditDelete(
    int objectCount = 0;
    QString aNameList;
    QString aParentComponent = QString::null;
 -  
 +
    for( SALOME_ListIteratorOfListIO anIt( selected ); anIt.More(); anIt.Next() )
    {
      Handle(SALOME_InteractiveObject) anIO = anIt.Value();
      if ( anIO.IsNull() ) continue;
 -    
 +
      QString father = "unknown", name;
  
      _PTR(SObject) aSO = aStudy->FindObjectID( anIO->getEntry() );
@@@ -3034,21 -3033,6 +3034,21 @@@ bool SMESHGUI::OnGUIEvent( int theComma
        }
        break;
      }
 +  // Adaptation - begin
 +  case SMESHOp::OpUniformRefinement:
 +  case SMESHOp::OpHONewCase:
 +  case SMESHOp::OpHOCaseFollow:
 +  case SMESHOp::OpHONewIter:
 +  case SMESHOp::OpHOIterCompute:
 +  case SMESHOp::OpHOIterComputePublish:
 +  case SMESHOp::OpHOEdit:
 +  case SMESHOp::OpHODelete:
 +  case SMESHOp::OpMGAdapt:
 +    {
 +      SMESH::SMESH_Mesh_var aMesh = SMESH::SMESH_Mesh::_nil();
 +      SMESHGUI_AdaptDlg *objet = new SMESHGUI_AdaptDlg( this, theCommandID, aMesh);
 +    }
 +  // Adaptation - end
    case SMESHOp::OpSplitBiQuadratic:
    case SMESHOp::OpConvertMeshToQuadratic:
    case SMESHOp::OpCreateBoundaryElements: // create 2D mesh from 3D
@@@ -4286,18 -4270,6 +4286,18 @@@ void SMESHGUI::initialize( CAM_Applicat
    createSMESHAction( SMESHOp::OpAutoColor,        "AUTO_COLOR" );
    createSMESHAction( SMESHOp::OpDisableAutoColor, "DISABLE_AUTO_COLOR" );
  
 +  // Adaptation - begin
 +  createSMESHAction( SMESHOp::OpUniformRefinement,    "REF_ALL",                 "ICON_REF_ALL" );
 +  createSMESHAction( SMESHOp::OpHONewCase,            "HOMARD_CREATE_CASE",      "ICON_HOMARD_CREATE_CASE" );
 +  createSMESHAction( SMESHOp::OpHOCaseFollow,         "HOMARD_FOLLOW_ITERATION", "ICON_HOMARD_FOLLOW_ITERATION" );
 +  createSMESHAction( SMESHOp::OpHONewIter,            "HOMARD_NEW_ITERATION",    "ICON_HOMARD_NEW_ITERATION" );
 +  createSMESHAction( SMESHOp::OpHOIterCompute,        "HOMARD_COMPUTE",          "ICON_HOMARD_COMPUTE" );
 +  createSMESHAction( SMESHOp::OpHOIterComputePublish, "HOMARD_COMPUTE_PUBLISH",  "ICON_HOMARD_COMPUTE_PUBLISH" );
 +  createSMESHAction( SMESHOp::OpHOEdit,               "EDIT",                    "ICON_DLG_EDIT_MESH" );
 +  createSMESHAction( SMESHOp::OpHODelete,             "DELETE",                  "ICON_DELETE" );
 +  createSMESHAction( SMESHOp::OpMGAdapt,              "MG_ADAPT",                "ICON_MG_ADAPT" );
 +  // Adaptation - end
 +
    createSMESHAction( SMESHOp::OpMinimumDistance,  "MEASURE_MIN_DIST", "ICON_MEASURE_MIN_DIST" );
    createSMESHAction( SMESHOp::OpBoundingBox,      "MEASURE_BND_BOX",  "ICON_MEASURE_BND_BOX" );
    createSMESHAction( SMESHOp::OpPropertiesLength, "MEASURE_LENGTH",   "ICON_MEASURE_LENGTH" );
        meshId    = createMenu( tr( "MEN_MESH" ),    -1, 70, 10 ),
        ctrlId    = createMenu( tr( "MEN_CTRL" ),    -1, 60, 10 ),
        modifyId  = createMenu( tr( "MEN_MODIFY" ),  -1, 40, 10 ),
 +      adaptId   = createMenu( tr( "MEN_ADAPT" ),   -1, 80, 10 ),
        measureId = createMenu( tr( "MEN_MEASURE" ), -1, 50, 10 ),
        viewId    = createMenu( tr( "MEN_VIEW" ),    -1,  2 );
  
        removeId = createMenu( tr( "MEN_REMOVE" ), modifyId, 403 ),
      //renumId  = createMenu( tr( "MEN_RENUM" ),  modifyId, 404 ),
        transfId = createMenu( tr( "MEN_TRANSF" ), modifyId, 405 ),
 +      refHomardId = createMenu( tr( "MEN_REF_HOMARD" ), adaptId, -1, 10 ),
        basicPropId = createMenu( tr( "MEN_BASIC_PROPERTIES" ), measureId, -1, 10 );
  
    //createMenu( SMESHOp::OpImportDAT, importId, -1 );
    createMenu( SMESHOp::OpSmoothing,              modifyId, -1 );
    createMenu( SMESHOp::OpPatternMapping,         modifyId, -1 );
  
 +  // Adaptation - begin
 +  createMenu( SMESHOp::OpUniformRefinement,    adaptId, -1 );
 +  createMenu( SMESHOp::OpHONewCase,            refHomardId, -1 );
 +  createMenu( SMESHOp::OpHOCaseFollow,         refHomardId, -1 );
 +  createMenu( separator(),                     refHomardId, -1 );
 +  createMenu( SMESHOp::OpHONewIter,            refHomardId, -1 );
 +  createMenu( SMESHOp::OpHOIterCompute,        refHomardId, -1 );
 +  createMenu( SMESHOp::OpHOIterComputePublish, refHomardId, -1 );
 +  createMenu( separator(),                     refHomardId, -1 );
 +  createMenu( SMESHOp::OpHOEdit,               refHomardId, -1 );
 +  createMenu( SMESHOp::OpHODelete,             refHomardId, -1 );
 +  createMenu( SMESHOp::OpMGAdapt,              adaptId, -1 );
 +  // Adaptation - end
 +
    createMenu( SMESHOp::OpMinimumDistance,  measureId,   -1 );
    createMenu( SMESHOp::OpBoundingBox,      measureId,   -1 );
    createMenu( SMESHOp::OpAngle,            measureId,   -1 );
    connect( volumeMenu, SIGNAL( aboutToShow() ), this, SLOT( onUpdateControlActions() ) );
  
    // ----- create toolbars --------------
 -  int meshTb       = createTool( tr( "TB_MESH" ),      QString( "SMESHMeshToolbar" ) ),
 -      info         = createTool( tr( "TB_INFO" ),      QString( "SMESHInformationToolbar" ) ),
 -      groupTb      = createTool( tr( "TB_GROUP" ),     QString( "SMESHGroupToolbar" ) ),
 -      ctrl0dTb     = createTool( tr( "TB_CTRL0D" ),    QString( "SMESHNodeControlsToolbar" ) ),
 -      ctrl1dTb     = createTool( tr( "TB_CTRL1D" ),    QString( "SMESHEdgeControlsToolbar" ) ),
 -      ctrl2dTb     = createTool( tr( "TB_CTRL2D" ),    QString( "SMESHFaceControlsToolbar" ) ),
 -      ctrl3dTb     = createTool( tr( "TB_CTRL3D" ),    QString( "SMESHVolumeControlsToolbar" ) ),
 -      addElemTb    = createTool( tr( "TB_ADD" ),       QString( "SMESHAddElementToolbar" ) ),
 -      addNonElemTb = createTool( tr( "TB_ADDNON" ),    QString( "SMESHAddElementToolbar" ) ),
 -      remTb        = createTool( tr( "TB_REM" ),       QString( "SMESHRemoveToolbar" ) ),
 -    //renumbTb     = createTool( tr( "TB_RENUMBER" ),  QString( "SMESHRenumberingToolbar" ) ),
 -      transformTb  = createTool( tr( "TB_TRANSFORM" ), QString( "SMESHTransformationToolbar" ) ),
 -      modifyTb     = createTool( tr( "TB_MODIFY" ),    QString( "SMESHModificationToolbar" ) ),
 -      measuremTb   = createTool( tr( "TB_MEASUREM" ),  QString( "SMESHMeasurementsToolbar" ) ),
 -      dispModeTb   = createTool( tr( "TB_DISP_MODE" ), QString( "SMESHDisplayModeToolbar" ) );
 -
 +  int meshTb       = createTool( tr( "TB_MESH" ),      QString( "SMESHMeshToolbar" ) ) ;
    createTool( SMESHOp::OpCreateMesh,        meshTb );
    createTool( SMESHOp::OpCreateSubMesh,     meshTb );
    createTool( SMESHOp::OpEditMeshOrSubMesh, meshTb );
    createTool( SMESHOp::OpEvaluate,          meshTb );
    createTool( SMESHOp::OpMeshOrder,         meshTb );
  
 +  int infoTb       = createTool( tr( "TB_INFO" ),      QString( "SMESHInformationToolbar" ) ) ;
 +  createTool( SMESHOp::OpMeshInformation,    infoTb );
 +  //createTool( SMESHOp::OpStdInfo, meshTb );
 +  //createTool( SMESHOp::OpWhatIs, meshTb ); // VSR: issue #0021242 (eliminate "Mesh Element Information" command)
 +  createTool( SMESHOp::OpFindElementByPoint, infoTb );
 +
 +  int groupTb      = createTool( tr( "TB_GROUP" ),     QString( "SMESHGroupToolbar" ) ) ;
    createTool( SMESHOp::OpCreateGroup,         groupTb );
    createTool( SMESHOp::OpCreateGeometryGroup, groupTb );
    createTool( SMESHOp::OpConstructGroup,      groupTb );
    createTool( SMESHOp::OpEditGroup,           groupTb );
  
 -  createTool( SMESHOp::OpMeshInformation,    info );
 -  //createTool( SMESHOp::OpStdInfo, meshTb );
 -  //createTool( SMESHOp::OpWhatIs, meshTb ); // VSR: issue #0021242 (eliminate "Mesh Element Information" command)
 -  createTool( SMESHOp::OpFindElementByPoint, info );
 -
 +  int ctrl0dTb     = createTool( tr( "TB_CTRL0D" ),    QString( "SMESHNodeControlsToolbar" ) ) ;
    createTool( SMESHOp::OpFreeNode,  ctrl0dTb );
    createTool( SMESHOp::OpEqualNode, ctrl0dTb );
    //createTool( SMESHOp::OpNodeConnectivityNb, ctrl0dTb );
  
 +  int ctrl1dTb     = createTool( tr( "TB_CTRL1D" ),    QString( "SMESHEdgeControlsToolbar" ) ) ;
    createTool( SMESHOp::OpFreeBorder, ctrl1dTb );
    createTool( SMESHOp::OpLength,     ctrl1dTb );
    createTool( SMESHOp::OpConnection, ctrl1dTb );
    createTool( SMESHOp::OpEqualEdge,  ctrl1dTb );
  
 +  int ctrl2dTb     = createTool( tr( "TB_CTRL2D" ),    QString( "SMESHFaceControlsToolbar" ) ) ;
    createTool( SMESHOp::OpFreeEdge,            ctrl2dTb );
    createTool( SMESHOp::OpFreeFace,            ctrl2dTb );
    createTool( SMESHOp::OpBareBorderFace,      ctrl2dTb );
    createTool( SMESHOp::OpEqualFace,           ctrl2dTb );
    createTool( SMESHOp::OpDeflection2D,        ctrl2dTb );
  
 +  int ctrl3dTb     = createTool( tr( "TB_CTRL3D" ),    QString( "SMESHVolumeControlsToolbar" ) ) ;
    createTool( SMESHOp::OpAspectRatio3D,         ctrl3dTb );
    createTool( SMESHOp::OpVolume,                ctrl3dTb );
    createTool( SMESHOp::OpMaxElementLength3D,    ctrl3dTb );
    createTool( SMESHOp::OpOverConstrainedVolume, ctrl3dTb );
    createTool( SMESHOp::OpEqualVolume,           ctrl3dTb );
  
 +  int addElemTb    = createTool( tr( "TB_ADD" ),       QString( "SMESHAddElementToolbar" ) ) ;
    createTool( SMESHOp::OpNode,              addElemTb );
    createTool( SMESHOp::OpElem0D,            addElemTb );
    createTool( SMESHOp::OpElem0DOnElemNodes, addElemTb );
    createTool( SMESHOp::OpHexagonalPrism,    addElemTb );
    createTool( SMESHOp::OpPolyhedron,        addElemTb );
  
 +  int addNonElemTb = createTool( tr( "TB_ADDNON" ),    QString( "SMESHAddElementToolbar" ) ) ;
    createTool( SMESHOp::OpQuadraticEdge,          addNonElemTb );
    createTool( SMESHOp::OpQuadraticTriangle,      addNonElemTb );
    createTool( SMESHOp::OpBiQuadraticTriangle,    addNonElemTb );
    createTool( SMESHOp::OpQuadraticHexahedron,    addNonElemTb );
    createTool( SMESHOp::OpTriQuadraticHexahedron, addNonElemTb );
  
 +  int remTb        = createTool( tr( "TB_REM" ),       QString( "SMESHRemoveToolbar" ) ) ;
    createTool( SMESHOp::OpRemoveNodes,       remTb );
    createTool( SMESHOp::OpRemoveElements,    remTb );
    createTool( SMESHOp::OpRemoveOrphanNodes, remTb );
    createTool( SMESHOp::OpClearMesh,         remTb );
  
 +//   int renumbTb     = createTool( tr( "TB_RENUMBER" ),  QString( "SMESHRenumberingToolbar" ) ) ;
    //createTool( SMESHOp::OpRenumberingNodes,    renumbTb );
    //createTool( SMESHOp::OpRenumberingElements, renumbTb );
  
 +  int transformTb  = createTool( tr( "TB_TRANSFORM" ), QString( "SMESHTransformationToolbar" ) ) ;
    createTool( SMESHOp::OpMergeNodes,     transformTb );
    createTool( SMESHOp::OpMergeElements,  transformTb );
    createTool( SMESHOp::OpTranslation,    transformTb );
    createTool( SMESHOp::OpSewing,         transformTb );
    createTool( SMESHOp::OpDuplicateNodes, transformTb );
  
 +  int modifyTb     = createTool( tr( "TB_MODIFY" ),    QString( "SMESHModificationToolbar" ) ) ;
    createTool( SMESHOp::OpConvertMeshToQuadratic, modifyTb );
    createTool( SMESHOp::OpCreateBoundaryElements, modifyTb );
    createTool( SMESHOp::OpExtrusion,              modifyTb );
    createTool( SMESHOp::OpSmoothing,              modifyTb );
    createTool( SMESHOp::OpPatternMapping,         modifyTb );
  
 +  // Adaptation - begin
 +  int adaptTb      = createTool( tr( "TB_ADAPTATION" ),QString( "SMESHAdaptationToolbar" ) ) ;
 +  createTool( SMESHOp::OpUniformRefinement,    adaptTb );
 +  createTool( SMESHOp::OpHONewCase,            adaptTb );
 +  createTool( SMESHOp::OpHOCaseFollow,         adaptTb );
 +  createTool( SMESHOp::OpHONewIter,            adaptTb );
 +  createTool( SMESHOp::OpHOIterCompute,        adaptTb );
 +  createTool( SMESHOp::OpHOIterComputePublish, adaptTb );
 +  createTool( SMESHOp::OpMGAdapt,              adaptTb );
 +  // Adaptation - end
 +
 +  int measuremTb   = createTool( tr( "TB_MEASUREM" ),  QString( "SMESHMeasurementsToolbar" ) ) ;
    createTool( SMESHOp::OpMinimumDistance, measuremTb );
  
 +  int dispModeTb   = createTool( tr( "TB_DISP_MODE" ), QString( "SMESHDisplayModeToolbar" ) );
    createTool( SMESHOp::OpUpdate, dispModeTb );
  
    QString lc = "$";        // VSR : instead of QtxPopupSelection::defEquality();
    popupMgr()->insert( separator(), -1, 0 );
    createPopupItem( SMESHOp::OpFileInformation,   OB, mesh, "&& selcount=1 && isImported" );
    createPopupItem( SMESHOp::OpMeshInformation,   OB, mesh_part );
-   createPopupItem( SMESHOp::OpFindElementByPoint,OB, mesh_group, "&& selcount=1" );
+   createPopupItem( SMESHOp::OpFindElementByPoint,OB, mesh_group, "&& selcount=1 && " + hasElems );
    createPopupItem( SMESHOp::OpOverallMeshQuality,OB, mesh_part );
    popupMgr()->insert( separator(), -1, 0 );
    createPopupItem( SMESHOp::OpCreateGroup,       OB, mesh, "&& selcount=1" );
    createPopupItem( SMESHOp::OpEditHypothesis,    OB, hypo, "&& isEditableHyp");
    createPopupItem( SMESHOp::OpUnassign,          OB, hyp_alg );
    popupMgr()->insert( separator(), -1, 0 );
-   createPopupItem( SMESHOp::OpConvertMeshToQuadratic, OB, mesh_submesh );
+   createPopupItem( SMESHOp::OpConvertMeshToQuadratic, OB, mesh_submesh, "&& " + hasElems );
    createPopupItem( SMESHOp::OpCreateBoundaryElements, OB, mesh_group, "&& selcount=1 && dim>=2");
 -  //popupMgr()->insert( separator(), -1, 0 );
 +  popupMgr()->insert( separator(), -1, 0 );
  
 -  //popupMgr()->insert( separator(), -1, 0 );
 +  // Adaptation - begin
 +  createPopupItem( SMESHOp::OpUniformRefinement,    OB, mesh );
 +  createPopupItem( SMESHOp::OpHONewCase,            OB, mesh );
 +//   createPopupItem( SMESHOp::OpHOCaseFollow,         OB, mesh );
 +//   createPopupItem( SMESHOp::OpHONewIter,            OB, mesh );
 +//   createPopupItem( SMESHOp::OpHOIterCompute,        OB, mesh );
 +//   createPopupItem( SMESHOp::OpHOIterComputePublish, OB, mesh );
 +  createPopupItem( SMESHOp::OpMGAdapt,              OB, mesh );
 +  // Adaptation - end
  
    QString only_one_non_empty = QString( " && %1=1 && numberOfNodes>0" ).arg( dc );
    QString multiple_non_empty = QString( " && %1>0 && numberOfNodes>0" ).arg( dc );
    popupMgr()->insert( separator(), -1, 0 );
    createPopupItem( SMESHOp::OpMeshInformation,    View, mesh_part );
    createPopupItem( SMESHOp::OpOverallMeshQuality, View, mesh_part );
-   createPopupItem( SMESHOp::OpFindElementByPoint, View, mesh );
+   createPopupItem( SMESHOp::OpFindElementByPoint, View, mesh, "&& " + hasElems);
    popupMgr()->insert( separator(), -1, 0 );
  
    createPopupItem( SMESHOp::OpUpdate,           OB + " " + View, mesh_part );
@@@ -5377,7 -5315,7 +5377,7 @@@ void SMESHGUI::createPreferences(
    setPreferenceProperty( dispgroup, "columns", 2 );
  
    addPreference( tr( "PREF_FITALL_ON_DISPLAYONLY" ), dispgroup, LightApp_Preferences::Bool, "SMESH", "fitall_on_displayonly" );
 -  
 +
    int dispmode = addPreference( tr( "PREF_DISPLAY_MODE" ), dispgroup, LightApp_Preferences::Selector, "SMESH", "display_mode" );
    QStringList modes;
    modes.append( tr("MEN_WIRE") );
    setPreferenceProperty( coloringType, "indexes", indices );
    addPreference( tr( "SMESH_DISTRIBUTION_COLOR" ), distributionGr, LightApp_Preferences::Color, "SMESH", "distribution_color" );
  
 +  // Adaptation - begin
 +  // Adaptation tab ------------------------------------------------------------------------
 +  int adaptTab = addPreference( tr( "ADAPT_PREF_TAB_GENERAL" ) );
 +  int bloc, pref ;
 +  // Refinement with HOMARD
 +  bloc = addPreference( tr( "ADAPT_PREF_HOMARD_PUBLICATION" ), adaptTab );
 +  setPreferenceProperty( bloc, "columns", 1 );
 +  pref = addPreference( tr( "ADAPT_PREF_HOMARD_PUBLICATION_MAILLAGE_IN" ), bloc, LightApp_Preferences::Bool, "HOMARD", "homard_publish_mesh_in" );
 +  pref = addPreference( tr( "ADAPT_PREF_HOMARD_PUBLICATION_MAILLAGE_OUT" ), bloc, LightApp_Preferences::Bool, "HOMARD", "homard_publish_mesh_out" );
 +
 +  // YACS with HOMARD
 +  bloc = addPreference( tr( "ADAPT_PREF_HOMARD_YACS" ), adaptTab );
 +  setPreferenceProperty( bloc, "columns", 1 );
 +  pref = addPreference( tr( "ADAPT_PREF_HOMARD_YACS_MAX_ITER" ), bloc, LightApp_Preferences::IntSpin, "HOMARD", "homard_yacs_max_iter" );
 +  setPreferenceProperty( pref, "min",  0 );
 +  setPreferenceProperty( pref, "max",  100000000 );
 +  setPreferenceProperty( pref, "step", 1 );
 +  pref = addPreference( tr( "ADAPT_PREF_HOMARD_YACS_MAX_NODE" ), bloc, LightApp_Preferences::IntSpin, "HOMARD", "homard_yacs_max_node" );
 +  setPreferenceProperty( pref, "min",  0 );
 +  setPreferenceProperty( pref, "max",  100000000 );
 +  setPreferenceProperty( pref, "step", 1000 );
 +  pref = addPreference( tr( "ADAPT_PREF_HOMARD_YACS_MAX_ELEM" ), bloc, LightApp_Preferences::IntSpin, "HOMARD", "homard_yacs_max_elem" );
 +  setPreferenceProperty( pref, "min",  0 );
 +  setPreferenceProperty( pref, "max",  100000000 );
 +  setPreferenceProperty( pref, "step", 1000 );
 +  pref = addPreference( tr( "ADAPT_PREF_HOMARD_YACS_TYPE_CONVERGENCE" ), bloc, LightApp_Preferences::Selector, "HOMARD", "homard_yacs_type_test" );
 +  QStringList aListOfTypeTest;
 +  aListOfTypeTest << tr( "ADAPT_PREF_NONE" );
 +  aListOfTypeTest << "VTest > VRef";
 +  aListOfTypeTest << "VTest < VRef";
 +  setPreferenceProperty( pref, "strings", aListOfTypeTest );
 +
 +  // MG-Adapt
 +  bloc = addPreference( tr( "ADAPT_PREF_MG_ADAPT" ), adaptTab );
 +  setPreferenceProperty( bloc, "columns", 1 );
 +  pref = addPreference( tr( "ADAPT_PREF_MG_ADAPT_FILE_MAILLAGE_OUT" ), bloc, LightApp_Preferences::Bool, "HOMARD", "mg_adapt_file_mesh_out" );
 +  pref = addPreference( tr( "ADAPT_PREF_MG_ADAPT_PUBLICATION_MAILLAGE_OUT" ), bloc, LightApp_Preferences::Bool, "HOMARD", "mg_adapt_publish_mesh_out" );
 +  pref = addPreference( tr( "ADAPT_PREF_MG_ADAPT_SIZE_MAP" ), bloc, LightApp_Preferences::Selector, "HOMARD", "mg_adapt_size_map" );
 +  QStringList aListOfSizeMap;
 +  aListOfSizeMap << tr( "ADAPT_PREF_MG_ADAPT_SIZE_MAP_LOCAL" );
 +  aListOfSizeMap << tr( "ADAPT_PREF_MG_ADAPT_SIZE_MAP_BACKGROUND" );
 +  aListOfSizeMap << tr( "ADAPT_PREF_NONE" );;
 +  setPreferenceProperty( pref, "strings", aListOfSizeMap );
 +  pref = addPreference( tr( "ADAPT_PREF_MG_ADAPT_TIME_STEP" ), bloc, LightApp_Preferences::Selector, "HOMARD", "mg_adapt_time_step" );
 +  QStringList aListOfTimeStep;
 +  aListOfTimeStep << tr( "ADAPT_PREF_NONE" );
 +  aListOfTimeStep << tr( "ADAPT_PREF_MG_ADAPT_TIME_STEP_LAST" );
 +  aListOfTimeStep << tr( "ADAPT_PREF_MG_ADAPT_TIME_STEP_C" );;
 +  setPreferenceProperty( pref, "strings", aListOfTimeStep );
 +  // Adaptation - end
 +
  }
  
  void SMESHGUI::preferencesChanged( const QString& sect, const QString& name )
@@@ -5993,6 -5880,9 +5993,9 @@@ LightApp_Operation* SMESHGUI::createOpe
    case SMESHOp::OpCompute:
    case SMESHOp::OpComputeSubMesh:
      op = new SMESHGUI_ComputeOp();
+     break;
+   case SMESHOp::OpShowErrors:
+     op = new SMESHGUI_ShowErrorsOp();
      break;
    case SMESHOp::OpPreCompute:
      op = new SMESHGUI_PrecomputeOp();
    case SMESHOp::OpElem0DOnElemNodes: // Create 0D elements on all nodes
      op = new SMESHGUI_Add0DElemsOnAllNodesOp();
      break;
 +  // Adaptation - begin
 +  case SMESHOp::OpUniformRefinement:
 +  case SMESHOp::OpHONewCase:
 +  case SMESHOp::OpHOCaseFollow:
 +  case SMESHOp::OpHONewIter:
 +  case SMESHOp::OpHOIterCompute:
 +  case SMESHOp::OpHOIterComputePublish:
 +  case SMESHOp::OpHOEdit:
 +  case SMESHOp::OpHODelete:
 +  case SMESHOp::OpMGAdapt:
 +    break;
 +  // Adaptation - end
    default:
      break;
    }