X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FSMESHGUI%2FSMESHGUI_GroupDlg.cxx;h=a231ff18a9b7205a754751c10ab99b583876c255;hp=21b33c443b7e5022196c3a44633009fa7374f4a0;hb=refs%2Ftags%2FV9_7_0a1;hpb=d55dbe18f5a898be97fbc9cf66d189a1398bae0f diff --git a/src/SMESHGUI/SMESHGUI_GroupDlg.cxx b/src/SMESHGUI/SMESHGUI_GroupDlg.cxx index 21b33c443..a231ff18a 100644 --- a/src/SMESHGUI/SMESHGUI_GroupDlg.cxx +++ b/src/SMESHGUI/SMESHGUI_GroupDlg.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2020 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 @@ -74,6 +74,7 @@ #include // OCCT includes +#include #include // Qt includes @@ -522,19 +523,38 @@ QString SMESHGUI_GroupDlg::GetDefaultName(const QString& theOperation) return aName; } +//======================================================================= +//function : setDefaultName +//purpose : +//======================================================================= + void SMESHGUI_GroupDlg::setDefaultName() const { QString aResName; - int i=1; - QString aPrefix ="Group_"; - _PTR(SObject) anObj; - do + const QString aPrefix ="Group_"; + + if ( myMesh->_is_nil() ) + { + aResName = aPrefix + "1"; + } + else { - aResName = aPrefix + QString::number( i++ ); - anObj = SMESH::getStudy()->FindObject( aResName.toUtf8().constData() ); + SMESH::ListOfGroups_var allGroups = myMesh->GetGroups(); + TColStd_MapOfAsciiString allNames( allGroups->length() ); + for ( CORBA::ULong i = 0; i < allGroups->length(); ++i ) + { + CORBA::String_var name = allGroups[i]->GetName(); + allNames.Add( name.in() ); + } + int i = 1; + while ( true ) + { + aResName = aPrefix + QString::number( i++ ); + if ( !allNames.Contains( aResName.toUtf8().constData() )) + break; + } } - while ( anObj ); - myName->setText(aResName); + myName->setText(aResName); } //================================================================================= @@ -648,7 +668,7 @@ void SMESHGUI_GroupDlg::init (SMESH::SMESH_GroupBase_ptr theGroup, myIdList.clear(); if (!theGroup->IsEmpty()) { - SMESH::long_array_var anElements = theGroup->GetListOfID(); + SMESH::smIdType_array_var anElements = theGroup->GetListOfID(); int k = anElements->length(); for (int i = 0; i < k; i++) { myIdList.append(anElements[i]); @@ -747,7 +767,7 @@ void SMESHGUI_GroupDlg::updateButtons() // function : onNameChanged() // purpose : //================================================================================= -void SMESHGUI_GroupDlg::onNameChanged (const QString& text) +void SMESHGUI_GroupDlg::onNameChanged (const QString& /*text*/) { myOldName = myName->text(); updateButtons(); @@ -794,7 +814,7 @@ void SMESHGUI_GroupDlg::onGrpTypeChanged (int id) // function : onColorChanged() // purpose : Color button management //================================================================================= -void SMESHGUI_GroupDlg::onColorChanged(QColor theColor) +void SMESHGUI_GroupDlg::onColorChanged(QColor /*theColor*/) { updateButtons(); } @@ -944,7 +964,8 @@ bool SMESHGUI_GroupDlg::onApply() if (myGroup->_is_nil()) { // creation or conversion // check if group on geometry is not null - if (!myGroupOnGeom->_is_nil() || !myGroupOnFilter->_is_nil()) { + if (!myGroupOnGeom->_is_nil() || !myGroupOnFilter->_is_nil()) + { if (myMesh->_is_nil()) return false; if ( myGroupOnGeom->_is_nil() ) @@ -958,7 +979,8 @@ bool SMESHGUI_GroupDlg::onApply() } } - if (myGroup->_is_nil()) { // creation + if (myGroup->_is_nil()) // creation + { if (myMesh->_is_nil()) return false; @@ -981,7 +1003,7 @@ bool SMESHGUI_GroupDlg::onApply() } else { - SMESH::long_array_var anIdList = new SMESH::long_array; + SMESH::smIdType_array_var anIdList = new SMESH::smIdType_array; int i, k = myElements->count(); anIdList->length(k); for (i = 0; i < k; i++) { @@ -990,10 +1012,10 @@ bool SMESHGUI_GroupDlg::onApply() myGroup->Add(anIdList.inout()); } } + } - - } else { // edition - + else // edition + { resultGroup = SMESH::SMESH_GroupBase::_narrow( myGroup ); isCreation = false; @@ -1015,7 +1037,7 @@ bool SMESHGUI_GroupDlg::onApply() myIdList.removeAt(idx); } if (!aAddList.empty()) { - SMESH::long_array_var anIdList = new SMESH::long_array; + SMESH::smIdType_array_var anIdList = new SMESH::smIdType_array; int added = aAddList.count(); anIdList->length(added); for (i = 0; i < added; i++) @@ -1023,7 +1045,7 @@ bool SMESHGUI_GroupDlg::onApply() myGroup->Add(anIdList.inout()); } if (!myIdList.empty()) { - SMESH::long_array_var anIdList = new SMESH::long_array; + SMESH::smIdType_array_var anIdList = new SMESH::smIdType_array; int removed = myIdList.count(); anIdList->length(removed); for (i = 0; i < removed; i++) @@ -1111,6 +1133,7 @@ bool SMESHGUI_GroupDlg::onApply() } anIsOk = true; } + if (myGrpTypeId == 2) // group on filter { if ( myFilter->_is_nil() ) return false; @@ -1170,7 +1193,7 @@ bool SMESHGUI_GroupDlg::onApply() Handle(SALOME_InteractiveObject) anIO = anActor->getIO(); if ( isConversion ) { // need to reset TVisualObj and actor SMESH::RemoveVisualObjectWithActors( anIO->getEntry(), true ); - SMESH::Update( anIO,true); + SMESH::Update( anIO, true ); myActorsList.clear(); anActor = SMESH::FindActorByEntry( anIO->getEntry() ); if ( !anActor ) return false; @@ -1240,7 +1263,7 @@ void SMESHGUI_GroupDlg::onListSelectionChanged() if (myCurrentLineEdit == 0) { mySelectionMgr->clearSelected(); - TColStd_MapOfInteger aIndexes; + SVTK_TVtkIDsMap aIndexes; QList selItems = myElements->selectedItems(); QListWidgetItem* anItem; foreach(anItem, selItems) aIndexes.Add(anItem->text().toInt()); @@ -1933,7 +1956,7 @@ void SMESHGUI_GroupDlg::onAdd() // check if mesh is the same if (aSubMesh->GetFather()->GetId() == myMesh->GetId()) { try { - SMESH::long_array_var anElements = aSubMesh->GetElementsByType(aType); + SMESH::smIdType_array_var anElements = aSubMesh->GetElementsByType(aType); int k = anElements->length(); for (int i = 0; i < k; i++) { QString aText = QString::number(anElements[i]); @@ -1981,7 +2004,7 @@ void SMESHGUI_GroupDlg::onAdd() if (!aGroup->_is_nil()) { // check if mesh is the same if (aGroup->GetType() == aType && aGroup->GetMesh()->GetId() == myMesh->GetId()) { - SMESH::long_array_var anElements = aGroup->GetListOfID(); + SMESH::smIdType_array_var anElements = aGroup->GetListOfID(); int k = anElements->length(); for (int i = 0; i < k; i++) { QString aText = QString::number(anElements[i]); @@ -2039,7 +2062,7 @@ void SMESHGUI_GroupDlg::onAdd() aBelongToGeom->SetElementType(aType); aFilter->SetPredicate(aBelongToGeom); - SMESH::long_array_var anElements = aFilter->GetElementsId(myMesh); + SMESH::smIdType_array_var anElements = aFilter->GetElementsId(myMesh); int k = anElements->length(); for (int i = 0; i < k; i++) { @@ -2120,7 +2143,7 @@ void SMESHGUI_GroupDlg::onRemove() if (aSubMesh->GetFather()->GetId() == myMesh->GetId()) { if (aType == SMESH::NODE) { try { - SMESH::long_array_var anElements = aSubMesh->GetNodesId(); + SMESH::smIdType_array_var anElements = aSubMesh->GetNodesId(); int k = anElements->length(); for (int i = 0; i < k; i++) { QList found = @@ -2135,7 +2158,7 @@ void SMESHGUI_GroupDlg::onRemove() } else { try { - SMESH::long_array_var anElements = aSubMesh->GetElementsId(); + SMESH::smIdType_array_var anElements = aSubMesh->GetElementsId(); int k = anElements->length(); for (int i = 0; i < k; i++) { QList found = @@ -2162,7 +2185,7 @@ void SMESHGUI_GroupDlg::onRemove() if (!aGroup->_is_nil()) { // check if mesh is the same if (aGroup->GetType() == aType && aGroup->GetMesh()->GetId() == myMesh->GetId()) { - SMESH::long_array_var anElements = aGroup->GetListOfID(); + SMESH::smIdType_array_var anElements = aGroup->GetListOfID(); int k = anElements->length(); for (int i = 0; i < k; i++) { QList found = @@ -2190,15 +2213,19 @@ void SMESHGUI_GroupDlg::onSort() // PAL5412: sorts items in ascending by "string" value // myElements->sort(true); // myElements->update(); - int i, k = myElements->count(); + vtkIdType i, k = myElements->count(); if (k > 0) { myIsBusy = true; - QList aSelected; - std::vector anArray(k); + QList aSelected; + std::vector anArray(k); // QMemArray anArray(k); // fill the array for (i = 0; i < k; i++) { - int id = myElements->item(i)->text().toInt(); + vtkIdType id; + if (sizeof(vtkIdType)==8) + id = myElements->item(i)->text().toLongLong(); + else + id = myElements->item(i)->text().toInt(); anArray[i] = id; if (myElements->item(i)->isSelected()) aSelected.append(id);