Salome HOME
Update of CheckDone
[modules/smesh.git] / src / StdMeshersGUI / StdMeshersGUI_QuadrangleParamWdg.cxx
index b1112e7864e30c16fd1923816991319a597c8de2..fc5dffeaf578ceb3a2eeba7c2cf38ec1aa9cf2d1 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2015  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -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
@@ -74,7 +74,7 @@ StdMeshersGUI_QuadrangleParamCreator::StdMeshersGUI_QuadrangleParamCreator(const
 
 QString  StdMeshersGUI_QuadrangleParamCreator::helpPage() const
 {
-  return "a2d_meshing_hypo_page.html#hypo_quad_params_anchor";
+  return "2d_meshing_hypo.html#hypo-quad-params-anchor";
 }
 
 //=======================================================================
@@ -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,11 +218,15 @@ 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;
     h->GetEnforcedNodes( shapes, points );
-    for ( size_t i = 0; i < shapes->length(); ++i )
+    for ( CORBA::ULong i = 0; i < shapes->length(); ++i )
     {
       CORBA::String_var name  = shapes[i]->GetName();
       CORBA::String_var entry = shapes[i]->GetStudyEntry();
@@ -223,7 +234,7 @@ void StdMeshersGUI_QuadrangleParamCreator::retrieveParams() const
       item->setData( Qt::UserRole, entry.in() );
       myShapesList->addItem( item );
     }
-    for ( size_t i = 0; i < points->length(); ++i )
+    for ( CORBA::ULong i = 0; i < points->length(); ++i )
     {
       QTreeWidgetItem* item = new QTreeWidgetItem
         ( QStringList()
@@ -249,7 +260,7 @@ QString  StdMeshersGUI_QuadrangleParamCreator::storeParams() const
 
   // name
   if( myName )
-    SMESH::SetName( SMESH::FindSObject( h ), myName->text().toLatin1().constData() );
+    SMESH::SetName( SMESH::FindSObject( h ), myName->text().toUtf8().constData() );
 
   // transition
   h->SetQuadType( StdMeshers::QuadType( myTypeWdg->GetType()) );
@@ -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;
@@ -274,9 +288,7 @@ QString  StdMeshersGUI_QuadrangleParamCreator::storeParams() const
   {
     QListWidgetItem* item = myShapesList->item(i);
     QString         entry = item->data( Qt::UserRole ).toString();
-    Handle(SALOME_InteractiveObject) io =
-      new SALOME_InteractiveObject( entry.toStdString().c_str(), "GEOM" );
-    GEOM::GEOM_Object_var go = GEOMBase::ConvertIOinGEOMObject( io );
+    GEOM::GEOM_Object_var go = SMESH::EntryToInterface<GEOM::GEOM_Object>( entry );
     if ( !go->_is_nil() )
       goList[ nbShapes++ ] = go;
   }
@@ -408,6 +420,7 @@ void StdMeshersGUI_QuadrangleParamCreator::onSelectionChanged()
 void StdMeshersGUI_QuadrangleParamCreator::onTabChanged(int i)
 {
   myVertexSelWdg->ShowPreview( i == TAB_VERTEX );
+  myCornersSelWdg->ShowPreview( i == TAB_CORNERS );
 }
 
 //================================================================================
@@ -486,8 +499,8 @@ ItemDelegate::ItemDelegate( QObject* parent ) : QItemDelegate( parent )
 */
 QWidget* StdMeshersGUI_QuadrangleParamCreator::
 ItemDelegate::createEditor( QWidget*                    parent,
-                            const QStyleOptionViewItem& option,
-                            const QModelIndex&          index ) const
+                            const QStyleOptionViewItem& /*option*/,
+                            const QModelIndex&          /*index*/ ) const
 {
   SMESHGUI_SpinBox* sb = new SMESHGUI_SpinBox( parent );
   sb->RangeStepAndValidator( COORD_MIN, COORD_MAX, 10 );