Salome HOME
IPAL54425: Quadrangle mapping fails on a quadrangle face with a seam
[modules/smesh.git] / src / StdMeshersGUI / StdMeshersGUI_QuadrangleParamWdg.cxx
index 7df2045bdd3e1dc5ee6ff39076eb7f38b35db43b..dda529a3f9218a20ae5600edb809795d869c199a 100644 (file)
@@ -55,7 +55,7 @@
 #define SPACING 6
 #define MARGIN 11
 
-enum { TAB_TRANSITION, TAB_VERTEX, TAB_ENF_POINTS };
+enum { TAB_TRANSITION, TAB_VERTEX, TAB_CORNERS, TAB_ENF_POINTS };
 
 //================================================================================
 // function : Constructor
@@ -153,11 +153,17 @@ QFrame*  StdMeshersGUI_QuadrangleParamCreator::buildFrame()
   pointsLay->addWidget( shapesGroup );
   pointsLay->addWidget( coordsGroup );
 
+  // Corners
+
+  myCornersSelWdg = new StdMeshersGUI_SubShapeSelectorWdg( fr, TopAbs_VERTEX );
+  myCornersSelWdg->layout()->setMargin( MARGIN );
+
   // Tabs
   myTabs = new QTabWidget( fr );
-  myTabs->addTab( myTypeWdg,      tr("TRANSITION"));
-  myTabs->addTab( myVertexSelWdg, tr("SMESH_BASE_VERTEX"));
-  myTabs->addTab( pointsFrame,    tr("ENF_NODES"));
+  myTabs->addTab( myTypeWdg,       tr("TRANSITION"));
+  myTabs->addTab( myVertexSelWdg,  tr("SMESH_BASE_VERTEX"));
+  myTabs->addTab( myCornersSelWdg, tr("CORNERS"));
+  myTabs->addTab( pointsFrame,     tr("ENF_NODES"));
 
   lay->addWidget( myTabs, row, 0, 2, 3 );
 
@@ -196,6 +202,7 @@ void StdMeshersGUI_QuadrangleParamCreator::retrieveParams() const
   if ( anEntry.isEmpty() )
     anEntry = h->GetObjectEntry();
   myVertexSelWdg->SetGeomShapeEntry(anEntry,aMainEntry);
+  myCornersSelWdg->SetGeomShapeEntry(anEntry,aMainEntry);
 
   if ( !isCreation())
   {
@@ -211,6 +218,10 @@ void StdMeshersGUI_QuadrangleParamCreator::retrieveParams() const
       myVertexSelWdg->SetListOfIDs(aVec);
     }
 
+    // corners
+    SMESH::long_array_var aVec = h->GetCorners();
+    myCornersSelWdg->SetListOfIDs( aVec );
+
     // enforced nodes
     GEOM::ListOfGO_var     shapes;
     SMESH::nodes_array_var points;
@@ -265,6 +276,9 @@ QString  StdMeshersGUI_QuadrangleParamCreator::storeParams() const
     h->SetTriaVertex( -1 );
   }
 
+  // corners
+  h->SetCorners( myCornersSelWdg->GetListOfIDs() );
+
   // enfored nodes
 
   GEOM::ListOfGO_var goList = new GEOM::ListOfGO;
@@ -408,6 +422,7 @@ void StdMeshersGUI_QuadrangleParamCreator::onSelectionChanged()
 void StdMeshersGUI_QuadrangleParamCreator::onTabChanged(int i)
 {
   myVertexSelWdg->ShowPreview( i == TAB_VERTEX );
+  myCornersSelWdg->ShowPreview( i == TAB_CORNERS );
 }
 
 //================================================================================