-// Copyright (C) 2007-2019 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
// function : FindGravityCenter()
// purpose :
//=================================================================================
-void SMESHGUI_MergeDlg::FindGravityCenter(TColStd_MapOfInteger & theElemsIdMap,
+void SMESHGUI_MergeDlg::FindGravityCenter(SVTK_TVtkIDsMap & theElemsIdMap,
std::vector<int>& theIDs,
std::list< gp_XYZ > & theGrCentersXYZ)
{
int nbNodes;
theIDs.reserve( theElemsIdMap.Extent() );
- TColStd_MapIteratorOfMapOfInteger idIter( theElemsIdMap );
+ SVTK_TVtkIDsMapIterator idIter( theElemsIdMap );
for( ; idIter.More(); idIter.Next() ) {
const SMDS_MeshElement* anElem = aMesh->FindElement(idIter.Key());
if ( !anElem )
int i, nb = KeepList->count();
if ( isKeepIDsSelection() )
{
- SMESH::long_array_var anIdList = new SMESH::long_array();
+ SMESH::smIdType_array_var anIdList = new SMESH::smIdType_array();
anIdList->length(nb);
for (i = 0; i < nb; i++)
anIdList[i] = KeepList->item(i)->text().toInt();
myIsBusy = true;
ListEdit->clear();
- TColStd_MapOfInteger anIndices;
+ SVTK_TVtkIDsMap anIndices;
QList<QListWidgetItem*> selItems = ListCoincident->selectedItems();
QListWidgetItem* anItem;
QStringList aListIds;
if (myIsBusy || !myActor)
return;
- TColStd_MapOfInteger anIndices;
+ SVTK_TVtkIDsMap anIndices;
QList<QListWidgetItem*> selItems = ListEdit->selectedItems();
QListWidgetItem* anItem;
//=================================================================================
void SMESHGUI_MergeDlg::SelectionIntoArgument()
{
+ if ( myIsBusy )
+ return;
+
if (myEditCurrentArgument == (QWidget*)LineEditMesh)
{
QString aString = "";
LineEditMesh->setText( aString );
+
+ myIsBusy = true; // here selection can change
+
if (myAction == MERGE_NODES) {
SMESH::SetPointRepresentation(true);
if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
aViewWindow->SetSelectionMode(CellSelection);
+ myIsBusy = false;
+
// process groups
myGroups.clear();
ListExclude->clear();
myIdPreview->SetPointsLabeled(false);
SMESH::SetPointRepresentation(false);
+ myIsBusy = true; // keep currently selected mesh
if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
aViewWindow->SetSelectionMode(ActorSelection);
mySelectionMgr->clearFilters();
+ myIsBusy = false;
GroupCoincident->hide();
GroupEdit->hide();
myMeshOrSubMeshOrGroupFilter = new SMESH_TypeFilter (SMESH::IDSOURCE);
+ myIsBusy = true; // keep currently selected mesh
if (myAction == MERGE_NODES) {
SMESH::SetPointRepresentation(true);
if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
if( mySelector->IsSelectionEnabled() )
aViewWindow->SetSelectionMode(CellSelection);
}
+ myIsBusy = false;
GroupCoincident->show();
GroupEdit->show();
break;
}
- SelectionIntoArgument();
+
+ if ( myMesh->_is_nil() )
+ SelectionIntoArgument();
updateControls();
if ( myActor )
{
mySelectionMgr->clearSelected();
- TColStd_MapOfInteger aIndexes;
+ SVTK_TVtkIDsMap aIndexes;
QList<QListWidgetItem*> selItems = KeepList->selectedItems();
QListWidgetItem* anItem;
foreach(anItem, selItems) aIndexes.Add(anItem->text().toInt());
// IDs to groups or vice versa
//=======================================================================
-void SMESHGUI_MergeDlg::onKeepSourceChanged(int isGroup)
+void SMESHGUI_MergeDlg::onKeepSourceChanged(int /*isGroup*/)
{
KeepList->clear();
SelectKeepButton->click();