From 2db16adfe0e538d3b94644f871807e20aff6268d Mon Sep 17 00:00:00 2001 From: eap Date: Fri, 27 Feb 2009 13:34:22 +0000 Subject: [PATCH] 0020183: EDF SMESH 966 : Mesh element info anomaly enable selecting nodes common to 2 shown groups --- src/SMESHGUI/SMESHGUI_WhatIsDlg.cxx | 37 +++++++++++++++++++++++++---- 1 file changed, 33 insertions(+), 4 deletions(-) diff --git a/src/SMESHGUI/SMESHGUI_WhatIsDlg.cxx b/src/SMESHGUI/SMESHGUI_WhatIsDlg.cxx index c49e2dc1c..2e62e9c5c 100755 --- a/src/SMESHGUI/SMESHGUI_WhatIsDlg.cxx +++ b/src/SMESHGUI/SMESHGUI_WhatIsDlg.cxx @@ -51,6 +51,7 @@ #include #include #include +#include // OCCT includes #include @@ -373,7 +374,7 @@ void SMESHGUI_WhatIsDlg::SelectionIntoArgument() int nbSel = aList.Extent(); - if (nbSel != 1) + if (nbSel < 1) return; Handle(SALOME_InteractiveObject) IO = aList.First(); @@ -381,15 +382,43 @@ void SMESHGUI_WhatIsDlg::SelectionIntoArgument() if (myMesh->_is_nil()) return; + if (nbSel != 1) { + //check if all selected objects belongs to one mesh + SALOME_ListIteratorOfListIO io( aList ); + for (io.Next(); io.More(); io.Next() ) { + SMESH::SMESH_Mesh_var mesh = SMESH::GetMeshByIO(io.Value()); + if (!mesh->_is_nil() && !mesh->_is_equivalent( myMesh )) + return; + } + // select IO with any element selected (for case of selection by rectangle) + IO.Nullify(); + for (io.Initialize(aList); io.More() && IO.IsNull(); io.Next() ) + if ( mySelector->HasIndex( io.Value() )) + IO = io.Value(); + if ( IO.IsNull() ) return; + // unhilight others + if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI )) { + for (io.Initialize(aList); io.More(); io.Next() ) + if ( !IO->isSame( io.Value() )) + aViewWindow->highlight( io.Value(), false, true ); + } + } + myActor = SMESH::FindActorByObject(myMesh); if (!myActor) myActor = SMESH::FindActorByEntry(IO->getEntry()); if (!myActor) return; - QString aName; - SMESH::GetNameOfSelectedIObjects(mySelectionMgr, aName); - MeshName->setText(aName); + QString aName = IO->getName(); + // cut off wite spaces from tail, else meaningful head is not visible + int size = aName.length(); + while (size && aName.at(size-1).isSpace() ) + --size; + if ( size != aName.length() ) + aName.truncate( size ); + MeshName->setText(aName); // can be something like "2 objects" + if(!SMESH::IObjectToInterface(IO)->_is_nil()) { GroupMesh->setTitle(tr("SMESH_MESH")); } else if(!SMESH::IObjectToInterface(IO)->_is_nil()) { -- 2.39.2