Salome HOME
bos #20256: [CEA 18523] Porting SMESH to int 64 bits
[modules/smesh.git] / src / SMESHGUI / SMESHGUI_CopyMeshDlg.cxx
index b7794c02d8d3a5b62bee922f6238e6e99cb88db7..d2e137b066efa5dd7588d507b2e974fa21941902 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -351,12 +351,12 @@ QString SMESHGUI_CopyMeshDlg::getErrorMsg( SMESH::string_array_var theInvalidEnt
                                            QStringList &           theEntriesToBrowse )
 {
   if ( theInvalidEntries->length() == 0 )
-    return tr("SMESH_OPERATION_FAILED");
+    return tr("OPERATION_FAILED");
 
   // theInvalidEntries - SObject's that hold geometry objects whose
   // counterparts are not found in the newGeometry, followed by SObject's
   // holding mesh sub-objects that are invalid because they depend on a not found
-  // preceeding sub-shape
+  // preceding sub-shape
 
   QString msg = tr("SUBSHAPES_NOT_FOUND_MSG") + "\n";
 
@@ -439,7 +439,7 @@ bool SMESHGUI_CopyMeshDlg::ClickOnApply()
     else
     {
       QStringList aListElementsId = myLineEditElements->text().split(" ", QString::SkipEmptyParts);
-      SMESH::long_array_var anElementsId = new SMESH::long_array;
+      SMESH::smIdType_array_var anElementsId = new SMESH::smIdType_array;
       anElementsId->length(aListElementsId.count());
       for (int i = 0; i < aListElementsId.count(); i++)
         anElementsId[i] = aListElementsId[i].toInt();
@@ -508,7 +508,6 @@ bool SMESHGUI_CopyMeshDlg::ClickOnApply()
     anApp->browseObjects( anEntryList, toShowObjects );
 
   Init(false);
-  mySelectedObject = SMESH::SMESH_IDSource::_nil();
   SelectionIntoArgument();
 
   return true;
@@ -615,7 +614,7 @@ void SMESHGUI_CopyMeshDlg::onTextChange (const QString& theNewText)
   QStringList aListId = theNewText.split(" ", QString::SkipEmptyParts);
   if (myActor && aMesh)
   {
-    TColStd_MapOfInteger newIndices;
+    SVTK_TVtkIDsMap newIndices;
     if (send == myLineEditElements) {
       for (int i = 0; i < aListId.count(); i++)
         if ( const SMDS_MeshElement * e = aMesh->FindElement(aListId[ i ].toInt()))
@@ -685,6 +684,16 @@ void SMESHGUI_CopyMeshDlg::SelectionIntoArgument()
     mySelectedObject = SMESH::IObjectToInterface<SMESH::SMESH_IDSource>( IO );
     if ( mySelectedObject->_is_nil() )
       return;
+
+    if ( isWithGeomMode() ) // only mesh selection allowed
+    {
+      myMesh = SMESH::SMESH_Mesh::_narrow( mySelectedObject );
+      if ( myMesh->_is_nil() )
+      {
+        myLineEditElements->setText("");
+        return;
+      }
+    }
   }
   else if ( !geom->_is_nil() )
   {
@@ -716,12 +725,10 @@ void SMESHGUI_CopyMeshDlg::SelectionIntoArgument()
   else if ( !geom->_is_nil() )
   {
     myGeomNameEdit->setText( aString );
-    ok = ok && !myLineEditElements->text().isEmpty();
   }
 
-  if ( ok && isWithGeomMode() && !myMesh->_is_nil() )
-    ok = myMesh->HasShapeToMesh();
-
+  if ( ok && isWithGeomMode() )
+    ok = ( !myMesh->_is_nil() && myMesh->HasShapeToMesh() && !myNewGeometry->_is_nil() );
 
   buttonOk->setEnabled(ok);
   buttonApply->setEnabled(ok);