Salome HOME
bos #26453: SMESH: uniform refinement
[modules/smesh.git] / src / SMESHGUI / SMESHGUI.cxx
index d7b4ed7445256f2a77d7b3c27cf553e04ee9c7b8..3bcce12870b708cc62adb61900d12ee52fdeda59 100644 (file)
@@ -61,6 +61,7 @@
 #include "SMESHGUI_Hypotheses.h"
 #include "SMESHGUI_HypothesesUtils.h"
 #include "SMESHGUI_MG_ADAPTDRIVER.h"
+#include "SMESHGUI_HomardAdaptDlg.h"
 #include "SMESHGUI_Make2DFrom3DOp.h"
 #include "SMESHGUI_MakeNodeAtPointDlg.h"
 #include "SMESHGUI_Measurements.h"
 #include CORBA_CLIENT_HEADER(SMESH_MeshEditor)
 #include CORBA_CLIENT_HEADER(SMESH_Measurements)
 #include CORBA_CLIENT_HEADER(SMESH_Mesh)
+#include CORBA_CLIENT_HEADER(SMESH_Homard)
 
 // Qt includes
 // #define       INCLUDE_MENUITEM_DEF // VSR commented ????????
@@ -3028,6 +3030,27 @@ bool SMESHGUI::OnGUIEvent( int theCommandID )
       break;
     }
 #endif
+  case SMESHOp::OpHomardAdapt:
+    {
+      if ( isStudyLocked() )
+        break;
+      EmitSignalDeactivateDialog();
+
+      SALOME::GenericObj_wrap< SMESHHOMARD::HOMARD_Gen > homardGen;
+      try {
+        homardGen = GetSMESHGen()->CreateHOMARD_ADAPT();
+      }
+      catch ( const SALOME::SALOME_Exception& S_ex ) {
+        SUIT_MessageBox::critical(SMESHGUI::desktop(),
+                                  QObject::tr("SMESH_ERROR"),
+                                  QObject::tr(S_ex.details.text.in()));
+      }
+      if (!homardGen->_is_nil()) {
+        SMESHGUI_HomardAdaptDlg *aDlg = new SMESHGUI_HomardAdaptDlg(homardGen);
+        aDlg->show();
+      }
+      break;
+    }
   // Adaptation - end
   case SMESHOp::OpSplitBiQuadratic:
   case SMESHOp::OpConvertMeshToQuadratic:
@@ -4266,6 +4289,7 @@ void SMESHGUI::initialize( CAM_Application* app )
 #ifndef DISABLE_MG_ADAPT
   createSMESHAction( SMESHOp::OpMGAdapt, "MG_ADAPT", "ICON_MG_ADAPT" );
 #endif
+  createSMESHAction( SMESHOp::OpHomardAdapt, "HOMARD_ADAPT", "ICON_HOMARD_ADAPT" );
   // Adaptation - end
 
   createSMESHAction( SMESHOp::OpMinimumDistance,  "MEASURE_MIN_DIST", "ICON_MEASURE_MIN_DIST" );
@@ -4486,6 +4510,7 @@ void SMESHGUI::initialize( CAM_Application* app )
 #ifndef DISABLE_MG_ADAPT
   createMenu( SMESHOp::OpMGAdapt, adaptId, -1 );
 #endif
+  createMenu( SMESHOp::OpHomardAdapt, adaptId, -1 );
   // Adaptation - end
 
   createMenu( SMESHOp::OpMinimumDistance,  measureId,   -1 );
@@ -4636,6 +4661,7 @@ void SMESHGUI::initialize( CAM_Application* app )
   int adaptTb = createTool( tr( "TB_ADAPTATION" ), QString( "SMESHAdaptationToolbar" ) ) ;
   createTool( SMESHOp::OpMGAdapt, adaptTb );
 #endif
+  createTool( SMESHOp::OpHomardAdapt, adaptTb );
   // Adaptation - end
 
   int measuremTb = createTool( tr( "TB_MEASUREM" ), QString( "SMESHMeasurementsToolbar" ) ) ;
@@ -4719,11 +4745,12 @@ void SMESHGUI::initialize( CAM_Application* app )
   createPopupItem( SMESHOp::OpCreateBoundaryElements, OB, mesh_group, "&& selcount=1 && dim>=2");
 
   // Adaptation - begin
-#ifndef DISABLE_MG_ADAPT
   popupMgr()->insert( separator(), -1, 0 );
+#ifndef DISABLE_MG_ADAPT
   createPopupItem( SMESHOp::OpMGAdapt, OB, mesh );
-  popupMgr()->insert( separator(), -1, 0 );
 #endif
+  createPopupItem( SMESHOp::OpHomardAdapt, OB, mesh );
+  popupMgr()->insert( separator(), -1, 0 );
   // Adaptation - end
 
   QString only_one_non_empty = QString( " && %1=1 && numberOfNodes>0" ).arg( dc );