Salome HOME
Add layers imprinting on faces.
[plugins/hybridplugin.git] / src / GUI / HYBRIDPluginGUI_HypothesisCreator.cxx
index 6ffdef7819d867f06c71aac9e98566474bbcf153..9165bb15d2970951438a09f7ad297c21be3ac97e 100644 (file)
@@ -689,30 +689,44 @@ QFrame* HYBRIDPluginGUI_HypothesisCreator::buildFrame()
   anEnfMeshLayout->setRowStretch(ENF_MESH_MESH, 10);
 
 
-  // selection of faces
+  // selection of faces for layers
 
-  QWidget* faceSelGroup = new QWidget( dlg() );
-  QGridLayout* faceSelLayout = new QGridLayout( faceSelGroup );
+  QWidget* faceSelLayersGroup = new QWidget( dlg() );
+  QGridLayout* faceSelLayersLayout = new QGridLayout( faceSelLayersGroup );
 
-  QLabel* facesLbl = new QLabel( tr("HYBRID_FACE_IDS"), faceSelGroup );
-  faceSelLayout->addWidget( facesLbl, 0, 0 );
+  QLabel* facesLbl = new QLabel( tr("HYBRID_FACE_IDS"), faceSelLayersGroup );
+  faceSelLayersLayout->addWidget( facesLbl, 0, 0 );
 
-  myFaceSelector = new StdMeshersGUI_SubShapeSelectorWdg( faceSelGroup, TopAbs_FACE, true, true );
+  myFaceSelectorLayers = new StdMeshersGUI_SubShapeSelectorWdg( faceSelLayersGroup, TopAbs_FACE, true, true );
   QString aMainEntry = SMESHGUI_GenericHypothesisCreator::getMainShapeEntry();
   QString aSubEntry  = SMESHGUI_GenericHypothesisCreator::getShapeEntry();
-  myFaceSelector->SetGeomShapeEntry( aSubEntry, aMainEntry );
-  faceSelLayout->addWidget( myFaceSelector, 1, 0, 2, 2 );
-  faceSelLayout->setRowStretch( 1, 10);
+  myFaceSelectorLayers->SetGeomShapeEntry( aSubEntry, aMainEntry );
+  faceSelLayersLayout->addWidget( myFaceSelectorLayers, 1, 0, 2, 2 );
+  faceSelLayersLayout->setRowStretch( 1, 10);
 
+  // selection of faces for imprinting
+
+  QWidget* faceSelImprintingGroup = new QWidget( dlg() );
+  QGridLayout* faceSelImprintingLayout = new QGridLayout( faceSelImprintingGroup );
+
+  QLabel* facesLblImprinting = new QLabel( tr("HYBRID_FACE_IDS"), faceSelImprintingGroup );
+  faceSelImprintingLayout->addWidget( facesLblImprinting, 0, 0 );
+
+  myFaceSelectorImprinting = new StdMeshersGUI_SubShapeSelectorWdg( faceSelImprintingGroup, TopAbs_FACE, true, true );
+  myFaceSelectorImprinting->SetGeomShapeEntry( aSubEntry, aMainEntry );
+  faceSelImprintingLayout->addWidget( myFaceSelectorImprinting, 1, 0, 2, 2 );
+  faceSelImprintingLayout->setRowStretch( 1, 10);
 
   // add tabs
   tab->insertTab( STD_TAB, myStdGroup, tr( "SMESH_ARGUMENTS" ) );
   tab->insertTab( ADV_TAB, myAdvGroup, tr( "HYBRID_ADV_ARGS" ) );
   tab->insertTab( ENF_MESH_TAB, myEnfMeshGroup, tr( "HYBRID_ENFORCED_MESHES" ) );
   if ( aMainEntry.isEmpty() && aSubEntry.isEmpty() ) // mesh not based of geometry
-    faceSelGroup->hide();
-  else
-    tab->insertTab( FACE_SEL_TAB, faceSelGroup, tr( "HYBRID_FACES_TAB" ));
+    faceSelLayersGroup->hide();
+  else {
+    tab->insertTab( FACE_SEL_LAYERS_TAB, faceSelLayersGroup, tr( "HYBRID_FACES_LAYERS_TAB" ));
+    tab->insertTab( FACE_SEL_IMPRINTING_TAB, faceSelImprintingGroup, tr( "HYBRID_FACES_IMPRINTING_TAB" ));
+  }
   tab->setCurrentIndex( STD_TAB );
 
   // connections
@@ -1455,8 +1469,10 @@ void HYBRIDPluginGUI_HypothesisCreator::onTabChanged( int )
 {
   myEnfVertexWdg->deactivateSelection();
   myEnfMeshWdg->deactivateSelection();
-  myFaceSelector->ActivateSelection( false );
-  myFaceSelector->ShowPreview( false );
+  myFaceSelectorLayers->ActivateSelection( false );
+  myFaceSelectorLayers->ShowPreview( false );
+  myFaceSelectorImprinting->ActivateSelection( false );
+  myFaceSelectorImprinting->ShowPreview( false );
 }
 
 void HYBRIDPluginGUI_HypothesisCreator::updateWidgets()
@@ -1481,8 +1497,10 @@ void HYBRIDPluginGUI_HypothesisCreator::updateWidgets()
   addEnfMeshButton->setEnabled(enabled);
   removeEnfMeshButton->setEnabled(enabled);
   myEnfMeshWdg->setEnabled(enabled);
-  if ( QTabWidget* tab = qobject_cast<QTabWidget*>( myStdGroup->parentWidget()->parentWidget() ))
-    tab->setTabEnabled( FACE_SEL_TAB, enabled );
+  if ( QTabWidget* tab = qobject_cast<QTabWidget*>( myStdGroup->parentWidget()->parentWidget() )) {
+    tab->setTabEnabled( FACE_SEL_LAYERS_TAB, enabled );
+    tab->setTabEnabled( FACE_SEL_IMPRINTING_TAB, enabled );
+  }
 }
 
 bool HYBRIDPluginGUI_HypothesisCreator::checkParams(QString& msg) const
@@ -1530,7 +1548,8 @@ void HYBRIDPluginGUI_HypothesisCreator::retrieveParams() const
   else
     myCoreSizeSpin                -> setValue( data.myCoreSize );
   myMultinormalsAngleSpin         -> setValue( data.myMultinormalsAngle );
-  myFaceSelector                  ->SetListOfIDs( data.myFaceWLIds );
+  myFaceSelectorLayers            ->SetListOfIDs( data.myFaceWLIds );
+  myFaceSelectorImprinting        ->SetListOfIDs( data.myFaceWIIds );
 
   myAdvWidget->workingDirectoryLineEdit       ->setText   ( data.myWorkingDir );
   myAdvWidget->keepWorkingFilesCheck          ->setChecked( data.myKeepFiles );
@@ -1761,6 +1780,7 @@ bool HYBRIDPluginGUI_HypothesisCreator::readParamsFromHypo( HYBRIDHypothesisData
   h_data.myMultinormalsAngle          = h->GetMultinormalsAngle();
   h_data.myNbOfBoundaryLayers         = h->GetNbOfBoundaryLayers();
   h_data.myFaceWLIds                  = h->GetFacesWithLayers();
+  h_data.myFaceWIIds                  = h->GetFacesWithImprinting();
 
   h_data.myLayersOnAllWrap            = h->GetLayersOnAllWrap();
   h_data.myToMeshHoles                = h->GetToMeshHoles();
@@ -1872,6 +1892,7 @@ bool HYBRIDPluginGUI_HypothesisCreator::storeParamsToHypo( const HYBRIDHypothesi
     if ( h->GetNbOfBoundaryLayers() != h_data.myNbOfBoundaryLayers )
       h->SetNbOfBoundaryLayers       ( h_data.myNbOfBoundaryLayers );
     h->SetFacesWithLayers( h_data.myFaceWLIds );
+    h->SetFacesWithImprinting( h_data.myFaceWIIds );
 
     if ( h->GetKeepFiles() != h_data.myKeepFiles)
       h->SetKeepFiles       ( h_data.myKeepFiles);
@@ -1993,7 +2014,8 @@ bool HYBRIDPluginGUI_HypothesisCreator::readParamsFromWidgets( HYBRIDHypothesisD
   h_data.myBoundaryLayersProgression  = myBoundaryLayersProgressionSpin -> value();
   h_data.myCoreSize                   = myCoreSizeSpin->text().isEmpty() ? 0.0 : myCoreSizeSpin -> value();
   h_data.myMultinormalsAngle          = myMultinormalsAngleSpin -> value();
-  h_data.myFaceWLIds                  = myFaceSelector->GetListOfIDs();
+  h_data.myFaceWLIds                  = myFaceSelectorLayers->GetListOfIDs();
+  h_data.myFaceWIIds                  = myFaceSelectorImprinting->GetListOfIDs();
 
   h_data.myKeepFiles                  = myAdvWidget->keepWorkingFilesCheck->isChecked();
   h_data.myWorkingDir                 = myAdvWidget->workingDirectoryLineEdit->text().trimmed();