From 8b5f1c191594c2b11725b6344b81ba0cd2835809 Mon Sep 17 00:00:00 2001 From: jfa Date: Mon, 15 Sep 2008 08:14:51 +0000 Subject: [PATCH] Remove some methods of GEOMBase_Helper (IObjectCount(), firstIObject(), lastIObject(), selectObjects()) to prevent incorrect usage of selection manager (time loss on multiple calls to method selected()). --- src/BasicGUI/BasicGUI_ArcDlg.cxx | 14 ++- src/BasicGUI/BasicGUI_CurveDlg.cxx | 35 +++--- src/BasicGUI/BasicGUI_EllipseDlg.cxx | 39 +++--- src/BasicGUI/BasicGUI_LineDlg.cxx | 19 +-- src/BasicGUI/BasicGUI_MarkerDlg.cxx | 21 ++-- src/BasicGUI/BasicGUI_PlaneDlg.cxx | 11 +- src/BasicGUI/BasicGUI_PointDlg.cxx | 18 +-- src/BasicGUI/BasicGUI_VectorDlg.cxx | 46 +++---- src/BasicGUI/BasicGUI_WorkingPlaneDlg.cxx | 11 +- src/BlocksGUI/BlocksGUI_ExplodeDlg.cxx | 45 ++++--- src/BlocksGUI/BlocksGUI_PropagateDlg.cxx | 8 +- src/BlocksGUI/BlocksGUI_QuadFaceDlg.cxx | 10 +- src/BlocksGUI/BlocksGUI_TrsfDlg.cxx | 14 ++- src/BooleanGUI/BooleanGUI_Dialog.cxx | 38 +++--- src/BuildGUI/BuildGUI_CompoundDlg.cxx | 8 +- src/BuildGUI/BuildGUI_EdgeDlg.cxx | 33 ++--- src/BuildGUI/BuildGUI_FaceDlg.cxx | 8 +- src/BuildGUI/BuildGUI_ShellDlg.cxx | 8 +- src/BuildGUI/BuildGUI_SolidDlg.cxx | 8 +- src/BuildGUI/BuildGUI_WireDlg.cxx | 8 +- src/EntityGUI/EntityGUI_SketcherDlg.cxx | 25 ++-- src/EntityGUI/EntityGUI_SubShapeDlg.cxx | 113 ++++++++++-------- src/GEOMBase/GEOMBase_Helper.cxx | 53 +------- src/GEOMBase/GEOMBase_Helper.h | 15 --- src/GEOMBase/GEOMBase_Skeleton.cxx | 12 +- .../GenerationGUI_FillingDlg.cxx | 36 +++--- src/GenerationGUI/GenerationGUI_PipeDlg.cxx | 85 +++++++------ src/GenerationGUI/GenerationGUI_PrismDlg.cxx | 68 +++++------ src/GenerationGUI/GenerationGUI_RevolDlg.cxx | 12 +- src/GroupGUI/GroupGUI_GroupDlg.cxx | 95 ++++++++------- src/MeasureGUI/MeasureGUI_AngleDlg.cxx | 21 +++- src/MeasureGUI/MeasureGUI_CenterMassDlg.cxx | 13 +- .../MeasureGUI_CheckCompoundOfBlocksDlg.cxx | 8 +- src/MeasureGUI/MeasureGUI_DistanceDlg.cxx | 18 ++- src/MeasureGUI/MeasureGUI_NormaleDlg.cxx | 14 ++- src/MeasureGUI/MeasureGUI_PointDlg.cxx | 11 +- src/MeasureGUI/MeasureGUI_Skeleton.cxx | 24 ++-- .../OperationGUI_ArchimedeDlg.cxx | 18 +-- src/OperationGUI/OperationGUI_ChamferDlg.cxx | 43 ++++--- src/OperationGUI/OperationGUI_FilletDlg.cxx | 41 ++++--- .../OperationGUI_GetShapesOnShapeDlg.cxx | 28 +++-- .../OperationGUI_PartitionDlg.cxx | 12 +- src/PrimitiveGUI/PrimitiveGUI_BoxDlg.cxx | 11 +- src/PrimitiveGUI/PrimitiveGUI_ConeDlg.cxx | 19 +-- src/PrimitiveGUI/PrimitiveGUI_CylinderDlg.cxx | 18 +-- src/PrimitiveGUI/PrimitiveGUI_FaceDlg.cxx | 11 +- src/PrimitiveGUI/PrimitiveGUI_SphereDlg.cxx | 24 ++-- src/PrimitiveGUI/PrimitiveGUI_TorusDlg.cxx | 11 +- .../RepairGUI_ChangeOrientationDlg.cxx | 8 +- src/RepairGUI/RepairGUI_CloseContourDlg.cxx | 10 +- src/RepairGUI/RepairGUI_DivideEdgeDlg.cxx | 12 +- src/RepairGUI/RepairGUI_FreeBoundDlg.cxx | 8 +- src/RepairGUI/RepairGUI_FreeFacesDlg.cxx | 9 +- src/RepairGUI/RepairGUI_GlueDlg.cxx | 24 +++- .../RepairGUI_RemoveExtraEdgesDlg.cxx | 8 +- src/RepairGUI/RepairGUI_RemoveHolesDlg.cxx | 10 +- src/RepairGUI/RepairGUI_RemoveIntWiresDlg.cxx | 10 +- src/RepairGUI/RepairGUI_SewingDlg.cxx | 8 +- src/RepairGUI/RepairGUI_ShapeProcessDlg.cxx | 8 +- src/RepairGUI/RepairGUI_SuppressFacesDlg.cxx | 12 +- .../TransformationGUI_MirrorDlg.cxx | 33 ++--- .../TransformationGUI_MultiRotationDlg.cxx | 11 +- .../TransformationGUI_MultiTranslationDlg.cxx | 11 +- .../TransformationGUI_OffsetDlg.cxx | 16 ++- .../TransformationGUI_PositionDlg.cxx | 25 ++-- .../TransformationGUI_RotationDlg.cxx | 23 ++-- .../TransformationGUI_ScaleDlg.cxx | 35 +++--- .../TransformationGUI_TranslationDlg.cxx | 74 +++++++----- 68 files changed, 918 insertions(+), 698 deletions(-) diff --git a/src/BasicGUI/BasicGUI_ArcDlg.cxx b/src/BasicGUI/BasicGUI_ArcDlg.cxx index 8ca36253b..f0f7056e9 100644 --- a/src/BasicGUI/BasicGUI_ArcDlg.cxx +++ b/src/BasicGUI/BasicGUI_ArcDlg.cxx @@ -215,8 +215,13 @@ void BasicGUI_ArcDlg::SelectionIntoArgument() return; myEditCurrentArgument->setText( "" ); - if ( IObjectCount() != 1 ) { - switch ( getConstructorId() ) { + + LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + SALOME_ListIO aSelList; + aSelMgr->selectedObjects(aSelList); + + if (aSelList.Extent() != 1) { + switch (getConstructorId()) { case 0: if ( myEditCurrentArgument == Group3Pnts->LineEdit1 ) myPoint1 = GEOM::GEOM_Object::_nil(); else if ( myEditCurrentArgument == Group3Pnts->LineEdit2 ) myPoint2 = GEOM::GEOM_Object::_nil(); @@ -233,7 +238,7 @@ void BasicGUI_ArcDlg::SelectionIntoArgument() } // nbSel == 1 Standard_Boolean aRes = Standard_False; - GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject( firstIObject(), aRes ); + GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject(aSelList.First(), aRes); if ( !CORBA::is_nil( aSelectedObject ) && aRes ) { QString aName = GEOMBase::GetName(aSelectedObject); @@ -241,9 +246,8 @@ void BasicGUI_ArcDlg::SelectionIntoArgument() TopoDS_Shape aShape; if (GEOMBase::GetShape(aSelectedObject, aShape, TopAbs_SHAPE) && !aShape.IsNull()) { - LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); TColStd_IndexedMapOfInteger aMap; - aSelMgr->GetIndexes(firstIObject(), aMap); + aSelMgr->GetIndexes(aSelList.First(), aMap); if (aMap.Extent() == 1) // Local Selection { int anIndex = aMap(1); diff --git a/src/BasicGUI/BasicGUI_CurveDlg.cxx b/src/BasicGUI/BasicGUI_CurveDlg.cxx index aa1921875..d380c5669 100644 --- a/src/BasicGUI/BasicGUI_CurveDlg.cxx +++ b/src/BasicGUI/BasicGUI_CurveDlg.cxx @@ -261,34 +261,33 @@ void BasicGUI_CurveDlg::SelectionIntoArgument() Standard_Boolean aRes = Standard_False; - int IOC = IObjectCount(); - // bool is_append = myPoints->length() < IOC; // if true - add point, else remove - // myPoints->length( IOC ); // this length may be greater than number of objects, - // that will actually be put into myPoints - - LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); - SalomeApp_Application* app = - dynamic_cast< SalomeApp_Application* >( SUIT_Session::session()->activeApplication() ); - SalomeApp_Study* appStudy = dynamic_cast( app->activeStudy() ); + SalomeApp_Application* app = myGeomGUI->getApp(); + SalomeApp_Study* appStudy = dynamic_cast(app->activeStudy()); _PTR(Study) aDStudy = appStudy->studyDS(); - GEOM::GEOM_IShapesOperations_var aShapesOp = getGeomEngine()->GetIShapesOperations( getStudyId() ); + GEOM::GEOM_IShapesOperations_var aShapesOp = getGeomEngine()->GetIShapesOperations(getStudyId()); int anIndex; TopoDS_Shape aShape; TColStd_IndexedMapOfInteger aMapIndexes; GEOM::GEOM_Object_var anObject; std::list aList; + LightApp_SelectionMgr* aSelMgr = app->selectionMgr(); SALOME_ListIO selected; - aSelMgr->selectedObjects( selected, QString::null, false ); + aSelMgr->selectedObjects(selected, QString::null, false); + + int IOC = selected.Extent(); + // bool is_append = myPoints->length() < IOC; // if true - add point, else remove + // myPoints->length( IOC ); // this length may be greater than number of objects, + // that will actually be put into myPoints - for ( SALOME_ListIteratorOfListIO anIt( selected ); anIt.More(); anIt.Next() ) { - GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject( anIt.Value(), aRes ); - if ( !CORBA::is_nil( aSelectedObject ) && aRes ) { - if ( GEOMBase::GetShape( aSelectedObject, aShape, TopAbs_SHAPE ) && !aShape.IsNull() ) { - aSelMgr->GetIndexes( anIt.Value(), aMapIndexes ); + for (SALOME_ListIteratorOfListIO anIt (selected); anIt.More(); anIt.Next()) { + GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject(anIt.Value(), aRes); + if (!CORBA::is_nil(aSelectedObject) && aRes) { + if (GEOMBase::GetShape(aSelectedObject, aShape, TopAbs_SHAPE) && !aShape.IsNull()) { + aSelMgr->GetIndexes(anIt.Value(), aMapIndexes); - if ( aMapIndexes.Extent() > 0 ) { - for ( int ii = 1; ii <= aMapIndexes.Extent(); ii++ ) { + if (aMapIndexes.Extent() > 0) { + for (int ii = 1; ii <= aMapIndexes.Extent(); ii++) { anIndex = aMapIndexes(ii); QString aName = GEOMBase::GetName( aSelectedObject ); aName = aName + ":vertex_" + QString::number( anIndex ); diff --git a/src/BasicGUI/BasicGUI_EllipseDlg.cxx b/src/BasicGUI/BasicGUI_EllipseDlg.cxx index 36af5ff21..0abb2836c 100644 --- a/src/BasicGUI/BasicGUI_EllipseDlg.cxx +++ b/src/BasicGUI/BasicGUI_EllipseDlg.cxx @@ -211,17 +211,21 @@ void BasicGUI_EllipseDlg::SelectionIntoArgument() { myEditCurrentArgument->setText( "" ); - if ( IObjectCount() != 1 ) { - if ( myEditCurrentArgument == GroupPoints->LineEdit1 ) myPoint = GEOM::GEOM_Object::_nil(); - else if ( myEditCurrentArgument == GroupPoints->LineEdit2 ) myDir = GEOM::GEOM_Object::_nil(); + LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + SALOME_ListIO aSelList; + aSelMgr->selectedObjects(aSelList); + + if (aSelList.Extent() != 1) { + if (myEditCurrentArgument == GroupPoints->LineEdit1) myPoint = GEOM::GEOM_Object::_nil(); + else if (myEditCurrentArgument == GroupPoints->LineEdit2) myDir = GEOM::GEOM_Object::_nil(); return; } Standard_Boolean aRes = Standard_False; - Handle(SALOME_InteractiveObject) anIO = firstIObject(); - GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject( firstIObject(), aRes ); - if ( !CORBA::is_nil( aSelectedObject ) && aRes ) { - QString aName = GEOMBase::GetName( aSelectedObject ); + Handle(SALOME_InteractiveObject) anIO = aSelList.First(); + GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject(anIO, aRes); + if (!CORBA::is_nil(aSelectedObject) && aRes) { + QString aName = GEOMBase::GetName(aSelectedObject); // Get Selected object if selected subshape TopoDS_Shape aShape; @@ -231,29 +235,28 @@ void BasicGUI_EllipseDlg::SelectionIntoArgument() aNeedType = TopAbs_EDGE; if ( GEOMBase::GetShape( aSelectedObject, aShape, TopAbs_SHAPE ) && !aShape.IsNull() ) { - LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); TColStd_IndexedMapOfInteger aMap; - aSelMgr->GetIndexes( anIO, aMap ); - if ( aMap.Extent() == 1 ) { + aSelMgr->GetIndexes(anIO, aMap); + if (aMap.Extent() == 1) { int anIndex = aMap(1); - if ( aNeedType == TopAbs_EDGE ) - aName += QString( ":edge_%1" ).arg( anIndex ); + if (aNeedType == TopAbs_EDGE) + aName += QString(":edge_%1").arg(anIndex); else - aName += QString( ":vertex_%1" ).arg( anIndex ); + aName += QString(":vertex_%1").arg(anIndex); //Find SubShape Object in Father - GEOM::GEOM_Object_var aFindedObject = GEOMBase_Helper::findObjectInFather( aSelectedObject, aName ); + GEOM::GEOM_Object_var aFindedObject = GEOMBase_Helper::findObjectInFather(aSelectedObject, aName); - if ( aFindedObject == GEOM::GEOM_Object::_nil() ) { // Object not found in study - GEOM::GEOM_IShapesOperations_var aShapesOp = getGeomEngine()->GetIShapesOperations( getStudyId() ); - aSelectedObject = aShapesOp->GetSubShape( aSelectedObject, anIndex ); + if (aFindedObject == GEOM::GEOM_Object::_nil()) { // Object not found in study + GEOM::GEOM_IShapesOperations_var aShapesOp = getGeomEngine()->GetIShapesOperations(getStudyId()); + aSelectedObject = aShapesOp->GetSubShape(aSelectedObject, anIndex); } else { aSelectedObject = aFindedObject; // get Object from study } } else { // Global Selection - if ( aShape.ShapeType() != aNeedType ) { + if (aShape.ShapeType() != aNeedType) { aSelectedObject = GEOM::GEOM_Object::_nil(); aName = ""; } diff --git a/src/BasicGUI/BasicGUI_LineDlg.cxx b/src/BasicGUI/BasicGUI_LineDlg.cxx index 489f8ee25..b007fd165 100644 --- a/src/BasicGUI/BasicGUI_LineDlg.cxx +++ b/src/BasicGUI/BasicGUI_LineDlg.cxx @@ -239,17 +239,21 @@ void BasicGUI_LineDlg::SelectionIntoArgument() { myEditCurrentArgument->setText( "" ); - if ( IObjectCount() != 1 ) { - if ( myEditCurrentArgument == GroupPoints->LineEdit1 ) myPoint1 = GEOM::GEOM_Object::_nil(); - else if ( myEditCurrentArgument == GroupPoints->LineEdit2 ) myPoint2 = GEOM::GEOM_Object::_nil(); - else if ( myEditCurrentArgument == GroupFaces->LineEdit1 ) myFace1 = GEOM::GEOM_Object::_nil(); - else if ( myEditCurrentArgument == GroupFaces->LineEdit2 ) myFace2 = GEOM::GEOM_Object::_nil(); + LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + SALOME_ListIO aSelList; + aSelMgr->selectedObjects(aSelList); + + if (aSelList.Extent() != 1) { + if (myEditCurrentArgument == GroupPoints->LineEdit1) myPoint1 = GEOM::GEOM_Object::_nil(); + else if (myEditCurrentArgument == GroupPoints->LineEdit2) myPoint2 = GEOM::GEOM_Object::_nil(); + else if (myEditCurrentArgument == GroupFaces->LineEdit1) myFace1 = GEOM::GEOM_Object::_nil(); + else if (myEditCurrentArgument == GroupFaces->LineEdit2) myFace2 = GEOM::GEOM_Object::_nil(); displayPreview(); return; } Standard_Boolean aRes = Standard_False; - GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject( firstIObject(), aRes ); + GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject(aSelList.First(), aRes); if ( !CORBA::is_nil( aSelectedObject ) && aRes ) { QString aName = GEOMBase::GetName( aSelectedObject ); TopAbs_ShapeEnum aNeedType = TopAbs_VERTEX; @@ -259,9 +263,8 @@ void BasicGUI_LineDlg::SelectionIntoArgument() TopoDS_Shape aShape; if ( GEOMBase::GetShape( aSelectedObject, aShape, TopAbs_SHAPE ) && !aShape.IsNull() ) { - LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); TColStd_IndexedMapOfInteger aMap; - aSelMgr->GetIndexes( firstIObject(), aMap ); + aSelMgr->GetIndexes(aSelList.First(), aMap); if ( aMap.Extent() == 1 ) { // Local Selection int anIndex = aMap( 1 ); if ( aNeedType == TopAbs_FACE ) diff --git a/src/BasicGUI/BasicGUI_MarkerDlg.cxx b/src/BasicGUI/BasicGUI_MarkerDlg.cxx index 098e39dc0..e7cdef29a 100644 --- a/src/BasicGUI/BasicGUI_MarkerDlg.cxx +++ b/src/BasicGUI/BasicGUI_MarkerDlg.cxx @@ -339,13 +339,15 @@ bool BasicGUI_MarkerDlg::onApply() //================================================================================= void BasicGUI_MarkerDlg::onSelectionDone0() { - if ( IObjectCount() == 1 ) { + LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + SALOME_ListIO aSelList; + aSelMgr->selectedObjects(aSelList); + + if (aSelList.Extent() == 1) { Standard_Boolean aRes = Standard_False; - Handle(SALOME_InteractiveObject) anIO = firstIObject(); - GEOM::GEOM_Object_var aSelectedObj = GEOMBase::ConvertIOinGEOMObject( anIO, aRes ); + Handle(SALOME_InteractiveObject) anIO = aSelList.First(); + GEOM::GEOM_Object_var aSelectedObj = GEOMBase::ConvertIOinGEOMObject(anIO, aRes); - LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); - if ( aRes && !aSelectedObj->_is_nil() ) { TopoDS_Shape aShape; if ( GEOMBase::GetShape( aSelectedObj, aShape, TopAbs_SHAPE ) && !aShape.IsNull() ) { @@ -413,9 +415,13 @@ void BasicGUI_MarkerDlg::onSelectionDone() myEditCurrentArgument->setText( "" ); - if ( IObjectCount() == 1 ) { + LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + SALOME_ListIO aSelList; + aSelMgr->selectedObjects(aSelList); + + if (aSelList.Extent() == 1) { Standard_Boolean aRes = Standard_False; - Handle(SALOME_InteractiveObject) anIO = firstIObject(); + Handle(SALOME_InteractiveObject) anIO = aSelList.First(); GEOM::GEOM_Object_var aSelectedObj = GEOMBase::ConvertIOinGEOMObject( anIO, aRes ); if ( !CORBA::is_nil( aSelectedObj ) && aRes ) { @@ -465,7 +471,6 @@ void BasicGUI_MarkerDlg::onSelectionDone() aNeedType = TopAbs_VERTEX; TColStd_IndexedMapOfInteger aMap; - LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); aSelMgr->GetIndexes( anIO, aMap ); if ( !aMap.IsEmpty() ) { diff --git a/src/BasicGUI/BasicGUI_PlaneDlg.cxx b/src/BasicGUI/BasicGUI_PlaneDlg.cxx index 1a621e093..43657b0d8 100644 --- a/src/BasicGUI/BasicGUI_PlaneDlg.cxx +++ b/src/BasicGUI/BasicGUI_PlaneDlg.cxx @@ -320,7 +320,11 @@ void BasicGUI_PlaneDlg::SelectionIntoArgument() { myEditCurrentArgument->setText(""); - if ( IObjectCount() != 1 ) { + LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + SALOME_ListIO aSelList; + aSelMgr->selectedObjects(aSelList); + + if (aSelList.Extent() != 1) { if ( myEditCurrentArgument == GroupPntDir->LineEdit1 ) myPoint = GEOM::GEOM_Object::_nil(); else if ( myEditCurrentArgument == GroupPntDir->LineEdit2 ) myDir = GEOM::GEOM_Object::_nil(); else if ( myEditCurrentArgument == Group3Pnts->LineEdit1 ) myPoint1 = GEOM::GEOM_Object::_nil(); @@ -332,7 +336,7 @@ void BasicGUI_PlaneDlg::SelectionIntoArgument() // nbSel == 1 Standard_Boolean aRes = Standard_False; - GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject( firstIObject(), aRes ); + GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject(aSelList.First(), aRes); if ( !CORBA::is_nil( aSelectedObject ) && aRes ) { QString aName = GEOMBase::GetName( aSelectedObject ); TopAbs_ShapeEnum aNeedType = TopAbs_VERTEX; @@ -341,9 +345,8 @@ void BasicGUI_PlaneDlg::SelectionIntoArgument() TopoDS_Shape aShape; if ( GEOMBase::GetShape( aSelectedObject, aShape, TopAbs_SHAPE ) && !aShape.IsNull() ) { - LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); TColStd_IndexedMapOfInteger aMap; - aSelMgr->GetIndexes( firstIObject(), aMap ); + aSelMgr->GetIndexes(aSelList.First(), aMap); if ( aMap.Extent() == 1 ) { // Local Selection int anIndex = aMap( 1 ); if ( aNeedType == TopAbs_EDGE ) diff --git a/src/BasicGUI/BasicGUI_PointDlg.cxx b/src/BasicGUI/BasicGUI_PointDlg.cxx index e0e620ac9..ba8cdd6d2 100644 --- a/src/BasicGUI/BasicGUI_PointDlg.cxx +++ b/src/BasicGUI/BasicGUI_PointDlg.cxx @@ -429,9 +429,13 @@ void BasicGUI_PointDlg::SelectionIntoArgument() myRefPoint = myEdge = myFace = GEOM::GEOM_Object::_nil(); } - if ( IObjectCount() == 1 ) { + LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + SALOME_ListIO aSelList; + aSelMgr->selectedObjects(aSelList); + + if (aSelList.Extent() == 1) { Standard_Boolean aRes = Standard_False; - Handle(SALOME_InteractiveObject) anIO = firstIObject(); + Handle(SALOME_InteractiveObject) anIO = aSelList.First(); GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject( anIO, aRes ); if ( !CORBA::is_nil( aSelectedObject ) && aRes ) { QString aName = GEOMBase::GetName(aSelectedObject); @@ -444,9 +448,8 @@ void BasicGUI_PointDlg::SelectionIntoArgument() else if ( id == 4 ) aNeedType = TopAbs_FACE; - LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); TColStd_IndexedMapOfInteger aMap; - aSelMgr->GetIndexes(firstIObject(), aMap); + aSelMgr->GetIndexes(anIO, aMap); if ( aMap.Extent() == 1 ) { // Local Selection int anIndex = aMap( 1 ); if ( aNeedType == TopAbs_EDGE ) @@ -455,11 +458,12 @@ void BasicGUI_PointDlg::SelectionIntoArgument() aName += QString( ":vertex_%1" ).arg( anIndex ); //Find SubShape Object in Father - GEOM::GEOM_Object_var aFindedObject = GEOMBase_Helper::findObjectInFather( aSelectedObject, aName ); + GEOM::GEOM_Object_var aFindedObject = GEOMBase_Helper::findObjectInFather(aSelectedObject, aName); if ( aFindedObject == GEOM::GEOM_Object::_nil() ) { // Object not found in study - GEOM::GEOM_IShapesOperations_var aShapesOp = getGeomEngine()->GetIShapesOperations( getStudyId() ); - aSelectedObject = aShapesOp->GetSubShape( aSelectedObject, anIndex ); + GEOM::GEOM_IShapesOperations_var aShapesOp = + getGeomEngine()->GetIShapesOperations(getStudyId()); + aSelectedObject = aShapesOp->GetSubShape(aSelectedObject, anIndex); } else { aSelectedObject = aFindedObject; // get Object from study diff --git a/src/BasicGUI/BasicGUI_VectorDlg.cxx b/src/BasicGUI/BasicGUI_VectorDlg.cxx index e00aacd41..b073f9761 100644 --- a/src/BasicGUI/BasicGUI_VectorDlg.cxx +++ b/src/BasicGUI/BasicGUI_VectorDlg.cxx @@ -271,42 +271,45 @@ void BasicGUI_VectorDlg::SelectionIntoArgument() { myEditCurrentArgument->setText( "" ); - if ( IObjectCount() != 1 ) { - if ( myEditCurrentArgument == GroupPoints->LineEdit1 ) + LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + SALOME_ListIO aSelList; + aSelMgr->selectedObjects(aSelList); + + if (aSelList.Extent() != 1) { + if (myEditCurrentArgument == GroupPoints->LineEdit1) myPoint1 = GEOM::GEOM_Object::_nil(); - else if ( myEditCurrentArgument == GroupPoints->LineEdit2 ) + else if (myEditCurrentArgument == GroupPoints->LineEdit2) myPoint2 = GEOM::GEOM_Object::_nil(); return; } // nbSel == 1 Standard_Boolean aRes = Standard_False; - GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject( firstIObject(), aRes ); - if ( !CORBA::is_nil( aSelectedObject ) && aRes ) { + GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject(aSelList.First(), aRes); + if (!CORBA::is_nil(aSelectedObject) && aRes) { QString aName = GEOMBase::GetName(aSelectedObject); TopoDS_Shape aShape; - if ( GEOMBase::GetShape(aSelectedObject, aShape, TopAbs_SHAPE ) && !aShape.IsNull() ) { - LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + if (GEOMBase::GetShape(aSelectedObject, aShape, TopAbs_SHAPE) && !aShape.IsNull()) { TColStd_IndexedMapOfInteger aMap; - aSelMgr->GetIndexes( firstIObject(), aMap ); - if ( aMap.Extent() == 1 ) { // Local Selection - int anIndex = aMap( 1 ); - aName += QString( ":vertex_%1" ).arg( anIndex ); + aSelMgr->GetIndexes(aSelList.First(), aMap); + if (aMap.Extent() == 1) { // Local Selection + int anIndex = aMap(1); + aName += QString(":vertex_%1").arg(anIndex); //Find SubShape Object in Father - GEOM::GEOM_Object_var aFindedObject = GEOMBase_Helper::findObjectInFather( aSelectedObject, aName ); + GEOM::GEOM_Object_var aFindedObject = GEOMBase_Helper::findObjectInFather(aSelectedObject, aName); - if ( aFindedObject == GEOM::GEOM_Object::_nil() ) { // Object not found in study - GEOM::GEOM_IShapesOperations_var aShapesOp = getGeomEngine()->GetIShapesOperations( getStudyId() ); - aSelectedObject = aShapesOp->GetSubShape( aSelectedObject, anIndex ); + if (aFindedObject == GEOM::GEOM_Object::_nil()) { // Object not found in study + GEOM::GEOM_IShapesOperations_var aShapesOp = getGeomEngine()->GetIShapesOperations(getStudyId()); + aSelectedObject = aShapesOp->GetSubShape(aSelectedObject, anIndex); } else { aSelectedObject = aFindedObject; // get Object from study } } else { // Global Selection - if ( aShape.ShapeType() != TopAbs_VERTEX ) { + if (aShape.ShapeType() != TopAbs_VERTEX) { aSelectedObject = GEOM::GEOM_Object::_nil(); aName = ""; } @@ -317,17 +320,17 @@ void BasicGUI_VectorDlg::SelectionIntoArgument() if (!aSelectedObject->_is_nil()) { // clear selection if something selected globalSelection(); - localSelection( GEOM::GEOM_Object::_nil(), TopAbs_VERTEX ); + localSelection(GEOM::GEOM_Object::_nil(), TopAbs_VERTEX); } - if ( myEditCurrentArgument == GroupPoints->LineEdit1 ) { + if (myEditCurrentArgument == GroupPoints->LineEdit1) { myPoint1 = aSelectedObject; - if ( !myPoint1->_is_nil() && myPoint2->_is_nil() ) + if (!myPoint1->_is_nil() && myPoint2->_is_nil()) GroupPoints->PushButton2->click(); } - else if ( myEditCurrentArgument == GroupPoints->LineEdit2 ) { + else if (myEditCurrentArgument == GroupPoints->LineEdit2) { myPoint2 = aSelectedObject; - if ( !myPoint2->_is_nil() && myPoint1->_is_nil() ) + if (!myPoint2->_is_nil() && myPoint1->_is_nil()) GroupPoints->PushButton1->click(); } } @@ -335,7 +338,6 @@ void BasicGUI_VectorDlg::SelectionIntoArgument() displayPreview(); } - //================================================================================= // function : SetEditCurrentArgument() // purpose : diff --git a/src/BasicGUI/BasicGUI_WorkingPlaneDlg.cxx b/src/BasicGUI/BasicGUI_WorkingPlaneDlg.cxx index dd2edc470..9c2f8e1d4 100644 --- a/src/BasicGUI/BasicGUI_WorkingPlaneDlg.cxx +++ b/src/BasicGUI/BasicGUI_WorkingPlaneDlg.cxx @@ -293,8 +293,12 @@ void BasicGUI_WorkingPlaneDlg::SelectionIntoArgument() myEditCurrentArgument->setText( "" ); QString aName; + LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + SALOME_ListIO aSelList; + aSelMgr->selectedObjects(aSelList); + const int id = getConstructorId(); - if ( IObjectCount() != 1 ) { + if (aSelList.Extent() != 1) { if ( id == 0 ) myFace = GEOM::GEOM_Object::_nil(); else if ( id == 1 ) { @@ -308,7 +312,7 @@ void BasicGUI_WorkingPlaneDlg::SelectionIntoArgument() // nbSel == 1 Standard_Boolean aRes = Standard_False; - GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject( firstIObject(), aRes ); + GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject(aSelList.First(), aRes); if ( !aRes || CORBA::is_nil( aSelectedObject ) ) return; @@ -322,9 +326,8 @@ void BasicGUI_WorkingPlaneDlg::SelectionIntoArgument() if ( aRes && !aSelectedObject->_is_nil() ) { TopoDS_Shape aShape; if ( GEOMBase::GetShape( aSelectedObject, aShape, TopAbs_SHAPE ) && !aShape.IsNull() ) { - LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); TColStd_IndexedMapOfInteger aMap; - aSelMgr->GetIndexes( firstIObject(), aMap ); + aSelMgr->GetIndexes(aSelList.First(), aMap); if ( aMap.Extent() == 1 ) { int anIndex = aMap( 1 ); aName = aName + ":edge_" + QString::number( anIndex ); diff --git a/src/BlocksGUI/BlocksGUI_ExplodeDlg.cxx b/src/BlocksGUI/BlocksGUI_ExplodeDlg.cxx index 3b434925f..1b03969cf 100644 --- a/src/BlocksGUI/BlocksGUI_ExplodeDlg.cxx +++ b/src/BlocksGUI/BlocksGUI_ExplodeDlg.cxx @@ -200,20 +200,23 @@ bool BlocksGUI_ExplodeDlg::ClickOnApply() //================================================================================= void BlocksGUI_ExplodeDlg::SelectionIntoArgument() { - if ( !isAllSubShapes() ) + if (!isAllSubShapes()) return; myObject = GEOM::GEOM_Object::_nil(); - myGrp1->LineEdit1->setText( "" ); + myGrp1->LineEdit1->setText(""); + + LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + SALOME_ListIO aSelList; + aSelMgr->selectedObjects(aSelList); - if ( IObjectCount() == 1 ) { + if (aSelList.Extent() == 1) { Standard_Boolean aResult = Standard_False; - GEOM::GEOM_Object_var anObj = - GEOMBase::ConvertIOinGEOMObject( firstIObject(), aResult ); + GEOM::GEOM_Object_var anObj = GEOMBase::ConvertIOinGEOMObject(aSelList.First(), aResult); - if ( aResult && !anObj->_is_nil() && GEOMBase::IsShape( anObj ) ) { + if (aResult && !anObj->_is_nil() && GEOMBase::IsShape(anObj)) { myObject = anObj; - myGrp1->LineEdit1->setText( GEOMBase::GetName( anObj ) ); + myGrp1->LineEdit1->setText(GEOMBase::GetName(anObj)); } } @@ -362,15 +365,21 @@ GEOM::GEOM_IOperations_ptr BlocksGUI_ExplodeDlg::createOperation() // function : isValid() // purpose : Verify validity of input data //================================================================================= -bool BlocksGUI_ExplodeDlg::isValid( QString& ) +bool BlocksGUI_ExplodeDlg::isValid (QString&) { bool ok = false; switch ( getConstructorId() ) { case 0: - if ( IsPreview() ) + if ( IsPreview() ) { ok = !myObject->_is_nil(); - else - ok = !myObject->_is_nil() && ( isAllSubShapes() || IObjectCount() ); + } + else { + LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + SALOME_ListIO aSelList; + aSelMgr->selectedObjects(aSelList); + + ok = !myObject->_is_nil() && (isAllSubShapes() || aSelList.Extent()); + } break; default: break; @@ -416,26 +425,30 @@ bool BlocksGUI_ExplodeDlg::execute( ObjectList& objects ) if ( !isAllSubShapes() ) { QMap selected; + LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + SALOME_ListIO aSelList; + aSelMgr->selectedObjects(aSelList); + // Get names of selected objects - SALOME_ListIteratorOfListIO it ( selectedIO() ); + SALOME_ListIteratorOfListIO it (aSelList); for ( ; it.More(); it.Next() ) { selected.insert( it.Value()->getName(), 0 ); } // Iterate through result and select objects with names from selection - ObjectList toRemoveFromEnggine; + ObjectList toRemoveFromEngine; ObjectList::iterator anIter; for ( anIter = myTmpObjs.begin(); anIter != myTmpObjs.end(); ++anIter ) { CORBA::String_var objStr = myGeomGUI->getApp()->orb()->object_to_string( *anIter ); if ( selected.contains( QString( objStr.in() ) ) ) objects.push_back( *anIter ); else - toRemoveFromEnggine.push_back( *anIter ); + toRemoveFromEngine.push_back( *anIter ); } // Remove from engine useless objects - ObjectList::iterator anIter2 = toRemoveFromEnggine.begin(); - for ( ; anIter2 != toRemoveFromEnggine.end(); ++anIter2 ) + ObjectList::iterator anIter2 = toRemoveFromEngine.begin(); + for ( ; anIter2 != toRemoveFromEngine.end(); ++anIter2 ) getGeomEngine()->RemoveObject( *anIter2 ); myTmpObjs.clear(); diff --git a/src/BlocksGUI/BlocksGUI_PropagateDlg.cxx b/src/BlocksGUI/BlocksGUI_PropagateDlg.cxx index e812f4a06..25aed5c9e 100644 --- a/src/BlocksGUI/BlocksGUI_PropagateDlg.cxx +++ b/src/BlocksGUI/BlocksGUI_PropagateDlg.cxx @@ -149,8 +149,12 @@ void BlocksGUI_PropagateDlg::SelectionIntoArgument() myGrp->LineEdit1->setText( "" ); myObject = GEOM::GEOM_Object::_nil(); - if ( IObjectCount() == 1 ) { - Handle(SALOME_InteractiveObject) anIO = firstIObject(); + LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + SALOME_ListIO aSelList; + aSelMgr->selectedObjects(aSelList); + + if (aSelList.Extent() == 1) { + Handle(SALOME_InteractiveObject) anIO = aSelList.First(); Standard_Boolean aRes; myObject = GEOMBase::ConvertIOinGEOMObject( anIO, aRes ); if ( aRes ) diff --git a/src/BlocksGUI/BlocksGUI_QuadFaceDlg.cxx b/src/BlocksGUI/BlocksGUI_QuadFaceDlg.cxx index 0215f99ea..d6005a350 100644 --- a/src/BlocksGUI/BlocksGUI_QuadFaceDlg.cxx +++ b/src/BlocksGUI/BlocksGUI_QuadFaceDlg.cxx @@ -222,10 +222,14 @@ void BlocksGUI_QuadFaceDlg::SelectionIntoArgument() } } + LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + SALOME_ListIO aSelList; + aSelMgr->selectedObjects(aSelList); + GEOM::GEOM_Object_var anObj; - Standard_Boolean aResult = Standard_False; - if ( IObjectCount() == 1 ) { - anObj = GEOMBase::ConvertIOinGEOMObject( firstIObject(), aResult ); + if (aSelList.Extent() == 1) { + Standard_Boolean aResult = Standard_False; + anObj = GEOMBase::ConvertIOinGEOMObject(aSelList.First(), aResult); if ( aResult ) { if (anObj->_is_nil()) { aResult = Standard_False; diff --git a/src/BlocksGUI/BlocksGUI_TrsfDlg.cxx b/src/BlocksGUI/BlocksGUI_TrsfDlg.cxx index 7a167661d..e639d1132 100644 --- a/src/BlocksGUI/BlocksGUI_TrsfDlg.cxx +++ b/src/BlocksGUI/BlocksGUI_TrsfDlg.cxx @@ -234,12 +234,16 @@ void BlocksGUI_TrsfDlg::SelectionIntoArgument() } } + LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + SALOME_ListIO aSelList; + aSelMgr->selectedObjects(aSelList); + // If selection of main object is activated if ( aCurrFocus == MainObj1 || aCurrFocus == MainObj2 ) { - if ( IObjectCount() == 1 ) { + if (aSelList.Extent() == 1) { Standard_Boolean aResult = Standard_False; GEOM::GEOM_Object_var anObj = - GEOMBase::ConvertIOinGEOMObject( firstIObject(), aResult ); + GEOMBase::ConvertIOinGEOMObject(aSelList.First(), aResult); if ( aResult && !anObj->_is_nil() && GEOMBase::IsShape( anObj ) ) { myShape = anObj; @@ -256,14 +260,14 @@ void BlocksGUI_TrsfDlg::SelectionIntoArgument() else if ( aCurrFocus == Face1 || aCurrFocus == Face2 || aCurrFocus == Face1U || aCurrFocus == Face2U || aCurrFocus == Face1V || aCurrFocus == Face2V ) { - if ( IObjectCount() == 1 ) { + if (aSelList.Extent() == 1) { Standard_Boolean aResult = Standard_False; GEOM::GEOM_Object_var anObj = - GEOMBase::ConvertIOinGEOMObject( firstIObject(), aResult ); + GEOMBase::ConvertIOinGEOMObject(aSelList.First(), aResult); if ( aResult && !anObj->_is_nil() && GEOMBase::IsShape( anObj ) ) { TColStd_IndexedMapOfInteger anIndexes; - ( (SalomeApp_Application*)( SUIT_Session::session()->activeApplication() ) )->selectionMgr()->GetIndexes( firstIObject(), anIndexes ); + myGeomGUI->getApp()->selectionMgr()->GetIndexes(aSelList.First(), anIndexes); if ( anIndexes.Extent() == 1 ) { int anIndex = anIndexes( 1 ); diff --git a/src/BooleanGUI/BooleanGUI_Dialog.cxx b/src/BooleanGUI/BooleanGUI_Dialog.cxx index cb5ca5b10..6832dfa89 100644 --- a/src/BooleanGUI/BooleanGUI_Dialog.cxx +++ b/src/BooleanGUI/BooleanGUI_Dialog.cxx @@ -183,7 +183,6 @@ bool BooleanGUI_Dialog::ClickOnApply() return true; } - //================================================================================= // function : SelectionIntoArgument() // purpose : Called when selection has changed @@ -192,23 +191,26 @@ void BooleanGUI_Dialog::SelectionIntoArgument() { myEditCurrentArgument->setText( "" ); - if ( IObjectCount() != 1 ) { - if ( myEditCurrentArgument == myGroup->LineEdit1 ) myObject1 = GEOM::GEOM_Object::_nil(); - else if ( myEditCurrentArgument == myGroup->LineEdit2 ) myObject2 = GEOM::GEOM_Object::_nil(); + LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + SALOME_ListIO aSelList; + aSelMgr->selectedObjects(aSelList); + + if (aSelList.Extent() != 1) { + if (myEditCurrentArgument == myGroup->LineEdit1) myObject1 = GEOM::GEOM_Object::_nil(); + else if (myEditCurrentArgument == myGroup->LineEdit2) myObject2 = GEOM::GEOM_Object::_nil(); return; } // nbSel == 1 Standard_Boolean aRes = Standard_False; - GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject( firstIObject(), aRes ); - if ( !CORBA::is_nil( aSelectedObject ) && aRes && GEOMBase::IsShape( aSelectedObject ) ) { - myEditCurrentArgument->setText( GEOMBase::GetName( aSelectedObject ) ); - if ( myEditCurrentArgument == myGroup->LineEdit1 ) myObject1 = aSelectedObject; - else if ( myEditCurrentArgument == myGroup->LineEdit2 ) myObject2 = aSelectedObject; + GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject(aSelList.First(), aRes); + if (!CORBA::is_nil(aSelectedObject) && aRes && GEOMBase::IsShape(aSelectedObject)) { + myEditCurrentArgument->setText(GEOMBase::GetName(aSelectedObject)); + if (myEditCurrentArgument == myGroup->LineEdit1) myObject1 = aSelectedObject; + else if (myEditCurrentArgument == myGroup->LineEdit2) myObject2 = aSelectedObject; } } - //================================================================================= // function : SetEditCurrentArgument() // purpose : @@ -268,22 +270,22 @@ void BooleanGUI_Dialog::enterEvent( QEvent* ) //================================================================================= GEOM::GEOM_IOperations_ptr BooleanGUI_Dialog::createOperation() { - return getGeomEngine()->GetIBooleanOperations( getStudyId() ); + return getGeomEngine()->GetIBooleanOperations(getStudyId()); } //================================================================================= // function : isValid // purpose : //================================================================================= -bool BooleanGUI_Dialog::isValid( QString& msg ) +bool BooleanGUI_Dialog::isValid (QString& msg) { - Handle(SALOME_InteractiveObject) IO = firstIObject(); - Standard_Boolean testResult; - GEOM::GEOM_Object_var anObject = GEOMBase::ConvertIOinGEOMObject( IO, testResult ); - if ( !testResult || anObject->_is_nil() ) - return false; + //Handle(SALOME_InteractiveObject) IO = firstIObject(); + //Standard_Boolean testResult; + //GEOM::GEOM_Object_var anObject = GEOMBase::ConvertIOinGEOMObject(IO, testResult); + //if (!testResult || anObject->_is_nil()) + // return false; - return !CORBA::is_nil( myObject1 ) && !CORBA::is_nil( myObject2 ); + return !CORBA::is_nil(myObject1) && !CORBA::is_nil(myObject2); } //================================================================================= diff --git a/src/BuildGUI/BuildGUI_CompoundDlg.cxx b/src/BuildGUI/BuildGUI_CompoundDlg.cxx index eecd87a8b..4898feb00 100644 --- a/src/BuildGUI/BuildGUI_CompoundDlg.cxx +++ b/src/BuildGUI/BuildGUI_CompoundDlg.cxx @@ -149,14 +149,18 @@ void BuildGUI_CompoundDlg::SelectionIntoArgument() myEditCurrentArgument->setText( "" ); QString aString = ""; /* name of selection */ + LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + SALOME_ListIO aSelList; + aSelMgr->selectedObjects(aSelList); + myOkShapes = false; - int nbSel = GEOMBase::GetNameOfSelectedIObjects( selectedIO(), aString, true ); + int nbSel = GEOMBase::GetNameOfSelectedIObjects(aSelList, aString, true); if ( nbSel == 0 ) return; if ( nbSel != 1 ) aString = QString( "%1_objects").arg( nbSel ); - GEOMBase::ConvertListOfIOInListOfGO( selectedIO(), myShapes, true ); + GEOMBase::ConvertListOfIOInListOfGO(aSelList, myShapes, true); myEditCurrentArgument->setText( aString ); myOkShapes = true; } diff --git a/src/BuildGUI/BuildGUI_EdgeDlg.cxx b/src/BuildGUI/BuildGUI_EdgeDlg.cxx index 79847029f..458882661 100644 --- a/src/BuildGUI/BuildGUI_EdgeDlg.cxx +++ b/src/BuildGUI/BuildGUI_EdgeDlg.cxx @@ -148,7 +148,6 @@ bool BuildGUI_EdgeDlg::ClickOnApply() return true; } - //================================================================================= // function : SelectionIntoArgument() // purpose : Called when selection as changed or other case @@ -156,38 +155,40 @@ bool BuildGUI_EdgeDlg::ClickOnApply() void BuildGUI_EdgeDlg::SelectionIntoArgument() { erasePreview(); - myEditCurrentArgument->setText( "" ); - - if ( IObjectCount() != 1 ) { - if ( myEditCurrentArgument == GroupPoints->LineEdit1 ) + myEditCurrentArgument->setText(""); + + LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + SALOME_ListIO aSelList; + aSelMgr->selectedObjects(aSelList); + + if (aSelList.Extent() != 1) { + if (myEditCurrentArgument == GroupPoints->LineEdit1) myOkPoint1 = false; - else if ( myEditCurrentArgument == GroupPoints->LineEdit2 ) + else if (myEditCurrentArgument == GroupPoints->LineEdit2) myOkPoint2 = false; return; } - + // nbSel == 1 Standard_Boolean testResult = Standard_False; - GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject( firstIObject(), testResult ); - - if ( !testResult ) + GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject(aSelList.First(), testResult); + if (!testResult) return; - if ( myEditCurrentArgument == GroupPoints->LineEdit1 ) { + if (myEditCurrentArgument == GroupPoints->LineEdit1) { myPoint1 = aSelectedObject; myOkPoint1 = true; } - else if ( myEditCurrentArgument == GroupPoints->LineEdit2 ) { + else if (myEditCurrentArgument == GroupPoints->LineEdit2) { myPoint2 = aSelectedObject; myOkPoint2 = true; } - - myEditCurrentArgument->setText( GEOMBase::GetName( aSelectedObject ) ); - + + myEditCurrentArgument->setText(GEOMBase::GetName(aSelectedObject)); + displayPreview(); } - //================================================================================= // function : LineEditReturnPressed() // purpose : diff --git a/src/BuildGUI/BuildGUI_FaceDlg.cxx b/src/BuildGUI/BuildGUI_FaceDlg.cxx index 92205b8c1..a90e21c99 100644 --- a/src/BuildGUI/BuildGUI_FaceDlg.cxx +++ b/src/BuildGUI/BuildGUI_FaceDlg.cxx @@ -152,14 +152,18 @@ void BuildGUI_FaceDlg::SelectionIntoArgument() myEditCurrentArgument->setText( "" ); QString aName; - int aNbSel = GEOMBase::GetNameOfSelectedIObjects( selectedIO(), aName ); + LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + SALOME_ListIO aSelList; + aSelMgr->selectedObjects(aSelList); + + int aNbSel = GEOMBase::GetNameOfSelectedIObjects(aSelList, aName); if ( aNbSel < 1) { myWires.length(0); return; } - GEOMBase::ConvertListOfIOInListOfGO( selectedIO(), myWires ); + GEOMBase::ConvertListOfIOInListOfGO(aSelList, myWires); if ( !myWires.length() ) return; if ( aNbSel != 1 ) diff --git a/src/BuildGUI/BuildGUI_ShellDlg.cxx b/src/BuildGUI/BuildGUI_ShellDlg.cxx index 229dce6c8..3ebc8056b 100644 --- a/src/BuildGUI/BuildGUI_ShellDlg.cxx +++ b/src/BuildGUI/BuildGUI_ShellDlg.cxx @@ -159,14 +159,18 @@ void BuildGUI_ShellDlg::SelectionIntoArgument() myEditCurrentArgument->setText( "" ); QString aString; + LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + SALOME_ListIO aSelList; + aSelMgr->selectedObjects(aSelList); + myOkFacesAndShells = false; - int nbSel = GEOMBase::GetNameOfSelectedIObjects( selectedIO(), aString, true ); + int nbSel = GEOMBase::GetNameOfSelectedIObjects(aSelList, aString, true); if ( nbSel == 0 ) return; if ( nbSel != 1 ) aString = QString( "%1_objects ").arg( nbSel ); - GEOMBase::ConvertListOfIOInListOfGO( selectedIO(), myFacesAndShells, true ); + GEOMBase::ConvertListOfIOInListOfGO(aSelList, myFacesAndShells, true); if ( !myFacesAndShells.length() ) return; diff --git a/src/BuildGUI/BuildGUI_SolidDlg.cxx b/src/BuildGUI/BuildGUI_SolidDlg.cxx index aca4110b1..54151e6b1 100644 --- a/src/BuildGUI/BuildGUI_SolidDlg.cxx +++ b/src/BuildGUI/BuildGUI_SolidDlg.cxx @@ -163,14 +163,18 @@ void BuildGUI_SolidDlg::SelectionIntoArgument() myEditCurrentArgument->setText( "" ); QString aString = ""; + LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + SALOME_ListIO aSelList; + aSelMgr->selectedObjects(aSelList); + myOkShells = false; - int nbSel = GEOMBase::GetNameOfSelectedIObjects( selectedIO(), aString ); + int nbSel = GEOMBase::GetNameOfSelectedIObjects(aSelList, aString); if ( nbSel == 0 ) return; if ( nbSel != 1 ) aString = tr( "%1_objects" ).arg( nbSel ); - GEOMBase::ConvertListOfIOInListOfGO( selectedIO(), myShells ); + GEOMBase::ConvertListOfIOInListOfGO(aSelList, myShells); if ( !myShells.length() ) return; diff --git a/src/BuildGUI/BuildGUI_WireDlg.cxx b/src/BuildGUI/BuildGUI_WireDlg.cxx index 82f23b0b2..256d40346 100644 --- a/src/BuildGUI/BuildGUI_WireDlg.cxx +++ b/src/BuildGUI/BuildGUI_WireDlg.cxx @@ -152,15 +152,19 @@ void BuildGUI_WireDlg::SelectionIntoArgument() myEditCurrentArgument->setText( "" ); QString aString = ""; /* name of selection */ + LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + SALOME_ListIO aSelList; + aSelMgr->selectedObjects(aSelList); + myOkEdgesAndWires = false; - int nbSel = GEOMBase::GetNameOfSelectedIObjects( selectedIO(), aString ); + int nbSel = GEOMBase::GetNameOfSelectedIObjects(aSelList, aString); if ( nbSel == 0 ) return; if ( nbSel != 1 ) aString = tr( "%1_objects" ).arg( nbSel ); - GEOMBase::ConvertListOfIOInListOfGO( selectedIO(), myEdgesAndWires ); + GEOMBase::ConvertListOfIOInListOfGO(aSelList, myEdgesAndWires); if ( !myEdgesAndWires.length() ) return; diff --git a/src/EntityGUI/EntityGUI_SketcherDlg.cxx b/src/EntityGUI/EntityGUI_SketcherDlg.cxx index 218597fe2..591bc79ac 100644 --- a/src/EntityGUI/EntityGUI_SketcherDlg.cxx +++ b/src/EntityGUI/EntityGUI_SketcherDlg.cxx @@ -858,18 +858,22 @@ void EntityGUI_SketcherDlg::SelectionIntoArgument() myX = myLastX1; myY = myLastY1; - int nbSel = IObjectCount(); - if ( nbSel == 1 && myEditCurrentArgument == Group1Sel->LineEdit1 ) { + LightApp_SelectionMgr* aSelMgr = myGeometryGUI->getApp()->selectionMgr(); + SALOME_ListIO aSelList; + aSelMgr->selectedObjects(aSelList); + + int nbSel = aSelList.Extent(); + if (nbSel == 1 && myEditCurrentArgument == Group1Sel->LineEdit1) { Standard_Boolean aRes = Standard_False; - GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject( firstIObject(), aRes ); - if ( !CORBA::is_nil( aSelectedObject ) && aRes ) { + GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject(aSelList.First(), aRes); + if (!CORBA::is_nil(aSelectedObject) && aRes) { TopoDS_Shape aShape; - if ( GEOMBase::GetShape( aSelectedObject, aShape, TopAbs_VERTEX ) ) { + if (GEOMBase::GetShape(aSelectedObject, aShape, TopAbs_VERTEX)) { gp_Trsf aTrans; gp_Ax3 aWPlane = myGeometryGUI->GetWorkingPlane(); - aTrans.SetTransformation( aWPlane ); - BRepBuilderAPI_Transform aTransformation( aShape, aTrans, Standard_False ); + aTrans.SetTransformation(aWPlane); + BRepBuilderAPI_Transform aTransformation (aShape, aTrans, Standard_False); aShape = aTransformation.Shape(); gp_Pnt aPnt; @@ -914,7 +918,12 @@ void EntityGUI_SketcherDlg::LineEditReturnPressed() /* so SelectionIntoArgument() is automatically called. */ const QString objectUserName = myEditCurrentArgument->text(); QWidget* thisWidget = (QWidget*)this; - if ( GEOMBase::SelectionByNameInDialogs( thisWidget, objectUserName, selectedIO() ) ) + + LightApp_SelectionMgr* aSelMgr = myGeometryGUI->getApp()->selectionMgr(); + SALOME_ListIO aSelList; + aSelMgr->selectedObjects(aSelList); + + if (GEOMBase::SelectionByNameInDialogs(thisWidget, objectUserName, aSelList)) myEditCurrentArgument->setText( objectUserName ); } } diff --git a/src/EntityGUI/EntityGUI_SubShapeDlg.cxx b/src/EntityGUI/EntityGUI_SubShapeDlg.cxx index 7d1a465b5..aba73a6f8 100644 --- a/src/EntityGUI/EntityGUI_SubShapeDlg.cxx +++ b/src/EntityGUI/EntityGUI_SubShapeDlg.cxx @@ -198,66 +198,68 @@ bool EntityGUI_SubShapeDlg::ClickOnApply() //================================================================================= void EntityGUI_SubShapeDlg::SelectionIntoArgument() { - if ( !isAllSubShapes() ) + if (!isAllSubShapes()) return; ResetStateOfDialog(); QString aString = ""; /* name of selection */ - int nbSel = GEOMBase::GetNameOfSelectedIObjects( selectedIO(), aString, true ); - if ( nbSel != 1 ) + LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + SALOME_ListIO aSelList; + aSelMgr->selectedObjects(aSelList); + + int nbSel = GEOMBase::GetNameOfSelectedIObjects(aSelList, aString, true); + if (nbSel != 1) return; TopoDS_Shape S; - Handle(SALOME_InteractiveObject) IO = firstIObject(); + Handle(SALOME_InteractiveObject) IO = aSelList.First(); if ( !IO->hasEntry() ) { SUIT_Session::session()->activeApplication()->putInfo( tr( "GEOM_PRP_SHAPE_IN_STUDY" ) ); updateButtonState(); return; } - if ( !GEOMBase::GetTopoFromSelection( selectedIO(), S ) || - S.IsNull() || - S.ShapeType() == TopAbs_VERTEX ) { + if (!GEOMBase::GetTopoFromSelection(aSelList, S) || + S.IsNull() || + S.ShapeType() == TopAbs_VERTEX) { myObject = GEOM::GEOM_Object::_nil(); updateButtonState(); return; } - Standard_Boolean testResult; - myObject = GEOMBase::ConvertIOinGEOMObject( IO, testResult ); - if ( !testResult || myObject->_is_nil() ) { + myObject = GEOMBase::ConvertIOinGEOMObject(IO, testResult); + if (!testResult || myObject->_is_nil()) { updateButtonState(); return; } myShape = S; - GroupPoints->LineEdit1->setText( aString ); - + GroupPoints->LineEdit1->setText(aString); int SelectedShapeType = GroupPoints->ComboBox1->currentIndex(); int count = GroupPoints->ComboBox1->count(); - if ( myWithShape ) + if (myWithShape) count = count - 1; int i = 0; // Solving PAL5590 - if ( myShape.ShapeType() == TopAbs_COMPOUND ) { + if (myShape.ShapeType() == TopAbs_COMPOUND) { unsigned int nb = NumberOfSubShapes(myShape, TopAbs_COMPOUND); if ( nb > 0 ) i++; } - while ( i <= myShape.ShapeType() ) { - GroupPoints->ComboBox1->removeItem( 0 ); + while (i <= myShape.ShapeType()) { + GroupPoints->ComboBox1->removeItem(0); i++; } - if ( myShape.ShapeType() == TopAbs_COMPOUND ) { - if ( myWithShape == false ) { - GroupPoints->ComboBox1->insertItem( GroupPoints->ComboBox1->count(), "Shape" ); + if (myShape.ShapeType() == TopAbs_COMPOUND) { + if (myWithShape == false) { + GroupPoints->ComboBox1->insertItem(GroupPoints->ComboBox1->count(), "Shape"); myWithShape = true; } } @@ -518,28 +520,35 @@ GEOM::GEOM_IOperations_ptr EntityGUI_SubShapeDlg::createOperation() // function : isValid // purpose : //================================================================================= -bool EntityGUI_SubShapeDlg::isValid( QString& msg ) +bool EntityGUI_SubShapeDlg::isValid (QString& msg) { bool isOk = false; - Standard_Boolean testResult; - GEOM::GEOM_Object_var anObj = GEOMBase::ConvertIOinGEOMObject( firstIObject(), testResult ); - if ( !testResult || myObject->_is_nil() ) { + + if (myObject->_is_nil()) { updateButtonState(); return isOk; } - if ( !myObject->_is_nil() ) { - if ( isAllSubShapes() ) - isOk = true; - else if ( IObjectCount() == 1 ) { - if ( testResult && !anObj->_is_nil() ) { - TColStd_IndexedMapOfInteger aMapIndex; - myGeomGUI->getApp()->selectionMgr()->GetIndexes( firstIObject(), aMapIndex ); - isOk = aMapIndex.Extent() > 0; - if ( !isOk ) - msg += tr( "NO_SUBSHAPES_SELECTED" ); + + if (isAllSubShapes()) + isOk = true; + else { + LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + SALOME_ListIO aSelList; + aSelMgr->selectedObjects(aSelList); + + if (aSelList.Extent() == 1) { + Standard_Boolean testResult; + GEOM::GEOM_Object_var anObj = GEOMBase::ConvertIOinGEOMObject(aSelList.First(), testResult); + if (testResult && !anObj->_is_nil()) { + TColStd_IndexedMapOfInteger aMapIndex; + aSelMgr->GetIndexes(aSelList.First(), aMapIndex); + isOk = aMapIndex.Extent() > 0; + if (!isOk) + msg += tr("NO_SUBSHAPES_SELECTED"); } } } + return isOk; } @@ -547,38 +556,42 @@ bool EntityGUI_SubShapeDlg::isValid( QString& msg ) // function : execute // purpose : //================================================================================= -bool EntityGUI_SubShapeDlg::execute( ObjectList& objects ) +bool EntityGUI_SubShapeDlg::execute (ObjectList& objects) { - GEOM::ListOfGO_var aList = GEOM::GEOM_IShapesOperations::_narrow( - getOperation() )->MakeExplode( myObject, shapeType(), true ); - - if ( !aList->length() ) + GEOM::ListOfGO_var aList = GEOM::GEOM_IShapesOperations::_narrow(getOperation())-> + MakeExplode(myObject, shapeType(), true); + + if (!aList->length()) return false; - + // Throw away sub-shapes not selected by user if not in preview mode // and manual selection is active - if ( !isAllSubShapes() ) { - if ( IObjectCount() == 1 ) { + if (!isAllSubShapes()) { + LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + SALOME_ListIO aSelList; + aSelMgr->selectedObjects(aSelList); + + if (aSelList.Extent() == 1) { Standard_Boolean aResult = Standard_False; GEOM::GEOM_Object_var anObj = - GEOMBase::ConvertIOinGEOMObject( firstIObject(), aResult ); + GEOMBase::ConvertIOinGEOMObject(aSelList.First(), aResult); - if ( aResult && !anObj->_is_nil() ) { + if (aResult && !anObj->_is_nil()) { TColStd_IndexedMapOfInteger aMapIndex; - myGeomGUI->getApp()->selectionMgr()->GetIndexes( firstIObject(), aMapIndex ); + aSelMgr->GetIndexes(aSelList.First(), aMapIndex); GEOM::GEOM_ILocalOperations_var aLocOp = - getGeomEngine()->GetILocalOperations( getStudyId() ); + getGeomEngine()->GetILocalOperations(getStudyId()); - for ( int i = 0, n = aList->length(); i < n; i++ ) - if ( aMapIndex.Contains( aLocOp->GetSubShapeIndex( myObject, aList[i] ) ) ) - objects.push_back( GEOM::GEOM_Object::_duplicate( aList[i] ) ); + for (int i = 0, n = aList->length(); i < n; i++) + if (aMapIndex.Contains(aLocOp->GetSubShapeIndex(myObject, aList[i]))) + objects.push_back(GEOM::GEOM_Object::_duplicate(aList[i])); } } } else - for ( int i = 0, n = aList->length(); i < n; i++ ) - objects.push_back( GEOM::GEOM_Object::_duplicate( aList[i] ) ); + for (int i = 0, n = aList->length(); i < n; i++) + objects.push_back(GEOM::GEOM_Object::_duplicate(aList[i])); return objects.size(); } diff --git a/src/GEOMBase/GEOMBase_Helper.cxx b/src/GEOMBase/GEOMBase_Helper.cxx index 3f056bc05..38ef9af04 100755 --- a/src/GEOMBase/GEOMBase_Helper.cxx +++ b/src/GEOMBase/GEOMBase_Helper.cxx @@ -972,56 +972,10 @@ QString GEOMBase_Helper::getPrefix( GEOM::GEOM_Object_ptr theObj ) const } } -//================================================================ -// Function : selectedIO -// Purpose : Return the list of selected SALOME_InteractiveObject's -//================================================================ -const SALOME_ListIO& GEOMBase_Helper::selectedIO() -{ - mySelected.Clear(); - - SalomeApp_Application* app = dynamic_cast< SalomeApp_Application* >( SUIT_Session::session()->activeApplication() ); - if ( app ) { - LightApp_SelectionMgr* aSelMgr = app->selectionMgr(); - if ( aSelMgr ) - aSelMgr->selectedObjects( mySelected ); - } - - return mySelected; -} - -//================================================================ -// Function : IObjectCount -// Purpose : Return the number of selected objects -//================================================================ -int GEOMBase_Helper::IObjectCount() -{ - return selectedIO().Extent(); -} - -//================================================================ -// Function : firstIObject -// Purpose : Return the first selected object in the selected object list -//================================================================ -Handle(SALOME_InteractiveObject) GEOMBase_Helper::firstIObject() -{ - const SALOME_ListIO& aList = selectedIO(); - return aList.Extent() > 0 ? aList.First() : Handle(SALOME_InteractiveObject)(); -} - -//================================================================ -// Function : lastIObject -// Purpose : Return the last selected object in the selected object list -//================================================================ -Handle(SALOME_InteractiveObject) GEOMBase_Helper::lastIObject() -{ - const SALOME_ListIO& aList = selectedIO(); - return aList.Extent() > 0 ? aList.Last() : Handle(SALOME_InteractiveObject)(); -} - //================================================================ // Function : getDesktop -// Purpose : Returns myDesktop field. Initialized in constructor, usually as dynamic_cast(parentWidget()) +// Purpose : Returns myDesktop field. Initialized in constructor, +// usually as dynamic_cast(parentWidget()) //================================================================ SUIT_Desktop* GEOMBase_Helper::getDesktop() const { @@ -1063,7 +1017,8 @@ bool GEOMBase_Helper::selectObjects( ObjectList& objects ) // Purpose : It should return an object if its founded in study or // return Null object if the object is not founded //================================================================ -GEOM::GEOM_Object_ptr GEOMBase_Helper::findObjectInFather( GEOM::GEOM_Object_ptr theFather, const QString& theName) +GEOM::GEOM_Object_ptr GEOMBase_Helper::findObjectInFather (GEOM::GEOM_Object_ptr theFather, + const QString& theName) { SalomeApp_Application* app = dynamic_cast< SalomeApp_Application* >( SUIT_Session::session()->activeApplication() ); diff --git a/src/GEOMBase/GEOMBase_Helper.h b/src/GEOMBase/GEOMBase_Helper.h index 59cb8abc5..bb9eedb24 100755 --- a/src/GEOMBase/GEOMBase_Helper.h +++ b/src/GEOMBase/GEOMBase_Helper.h @@ -131,21 +131,6 @@ protected: inline void setPrefix( const QString& prefix ) { myPrefix = prefix; } QString getPrefix( GEOM::GEOM_Object_ptr = GEOM::GEOM_Object::_nil() ) const; - - const SALOME_ListIO& selectedIO(); - // Function returns a list of SALOME_InteractiveObject's from - // selection manager in GUI - - int IObjectCount() ; - // Function returns the number of selected objects - - Handle(SALOME_InteractiveObject) firstIObject() ; - // Function returns the first selected object in the list - // of selected objects - - Handle(SALOME_InteractiveObject) lastIObject() ; - // Function returns the last selected object in the list - // of selected objects bool selectObjects( ObjectList& objects ); // Selects list of objects diff --git a/src/GEOMBase/GEOMBase_Skeleton.cxx b/src/GEOMBase/GEOMBase_Skeleton.cxx index 329688330..6bcb99393 100644 --- a/src/GEOMBase/GEOMBase_Skeleton.cxx +++ b/src/GEOMBase/GEOMBase_Skeleton.cxx @@ -162,7 +162,7 @@ void GEOMBase_Skeleton::ClickOnCancel() //================================================================================= void GEOMBase_Skeleton::LineEditReturnPressed() { - if ( !myEditCurrentArgument ) + if (!myEditCurrentArgument) return; /* User name of object input management */ @@ -170,9 +170,13 @@ void GEOMBase_Skeleton::LineEditReturnPressed() /* so SelectionIntoArgument() is automatically called. */ const QString objectUserName = myEditCurrentArgument->text(); QWidget* thisWidget = (QWidget*)this; - - if ( GEOMBase::SelectionByNameInDialogs( thisWidget, objectUserName, selectedIO() ) ) - myEditCurrentArgument->setText( objectUserName ); + + SALOME_ListIO aList; + LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + if (aSelMgr) + aSelMgr->selectedObjects(aList); + if (GEOMBase::SelectionByNameInDialogs(thisWidget, objectUserName, aList)) + myEditCurrentArgument->setText(objectUserName); } //================================================================================= diff --git a/src/GenerationGUI/GenerationGUI_FillingDlg.cxx b/src/GenerationGUI/GenerationGUI_FillingDlg.cxx index 021c7d795..ae4f0251a 100644 --- a/src/GenerationGUI/GenerationGUI_FillingDlg.cxx +++ b/src/GenerationGUI/GenerationGUI_FillingDlg.cxx @@ -197,41 +197,43 @@ bool GenerationGUI_FillingDlg::ClickOnApply() void GenerationGUI_FillingDlg::SelectionIntoArgument() { erasePreview(); - myEditCurrentArgument->setText( "" ); + myEditCurrentArgument->setText(""); - if ( IObjectCount() != 1 ) { - if ( myEditCurrentArgument == GroupPoints->LineEdit1 ) + LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + SALOME_ListIO aSelList; + aSelMgr->selectedObjects(aSelList); + + if (aSelList.Extent() != 1) { + if (myEditCurrentArgument == GroupPoints->LineEdit1) myOkCompound = false; return; } // nbSel == 1 Standard_Boolean testResult = Standard_False; - GEOM::GEOM_Object_ptr aSelectedObject = GEOMBase::ConvertIOinGEOMObject( firstIObject(), testResult ); + GEOM::GEOM_Object_ptr aSelectedObject = GEOMBase::ConvertIOinGEOMObject(aSelList.First(), testResult); - if ( !testResult ) + if (!testResult) return; - if ( myEditCurrentArgument == GroupPoints->LineEdit1 ) { + if (myEditCurrentArgument == GroupPoints->LineEdit1) { TopoDS_Shape S; myOkCompound = false; - if ( GEOMBase::GetShape(aSelectedObject, S) && - S.ShapeType() == TopAbs_COMPOUND ) { - // myCompound should be a compound of edges - for ( TopoDS_Iterator it( S ); it.More(); it.Next() ) - if ( it.Value().ShapeType() != TopAbs_EDGE ) - return; - myCompound = aSelectedObject; - myOkCompound = true; - } + if (GEOMBase::GetShape(aSelectedObject, S) && S.ShapeType() == TopAbs_COMPOUND) { + // myCompound should be a compound of edges + for (TopoDS_Iterator it (S); it.More(); it.Next()) + if (it.Value().ShapeType() != TopAbs_EDGE) + return; + myCompound = aSelectedObject; + myOkCompound = true; + } } - myEditCurrentArgument->setText( GEOMBase::GetName( aSelectedObject ) ); + myEditCurrentArgument->setText(GEOMBase::GetName(aSelectedObject)); displayPreview(); } - //================================================================================= // function : SetEditCurrentArgument() // purpose : diff --git a/src/GenerationGUI/GenerationGUI_PipeDlg.cxx b/src/GenerationGUI/GenerationGUI_PipeDlg.cxx index 3db3c8851..1d4f57967 100644 --- a/src/GenerationGUI/GenerationGUI_PipeDlg.cxx +++ b/src/GenerationGUI/GenerationGUI_PipeDlg.cxx @@ -163,72 +163,72 @@ void GenerationGUI_PipeDlg::SelectionIntoArgument() { erasePreview(); myEditCurrentArgument->setText( "" ); - - if ( IObjectCount() != 1 ) { - if ( myEditCurrentArgument == GroupPoints->LineEdit1 ) - myOkBase = false; - else if ( myEditCurrentArgument == GroupPoints->LineEdit2 ) - myOkPath = false; + + LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + SALOME_ListIO aSelList; + aSelMgr->selectedObjects(aSelList); + + if (aSelList.Extent() != 1) { + if (myEditCurrentArgument == GroupPoints->LineEdit1) myOkBase = false; + else if (myEditCurrentArgument == GroupPoints->LineEdit2) myOkPath = false; return; } - + // nbSel == 1 Standard_Boolean testResult = Standard_False; - GEOM::GEOM_Object_ptr aSelectedObject = GEOMBase::ConvertIOinGEOMObject( firstIObject(), testResult ); - - if ( !testResult ) + GEOM::GEOM_Object_ptr aSelectedObject = GEOMBase::ConvertIOinGEOMObject(aSelList.First(), testResult); + + if (!testResult) return; - + TopoDS_Shape S; - - if ( myEditCurrentArgument == GroupPoints->LineEdit1 ) { + + if (myEditCurrentArgument == GroupPoints->LineEdit1) { myOkBase = false; - if ( !GEOMBase::GetShape( aSelectedObject, S ) || - S.ShapeType() == TopAbs_COMPSOLID || - S.ShapeType() == TopAbs_COMPOUND || - S.ShapeType() == TopAbs_SOLID || - S.ShapeType() == TopAbs_SHAPE ) + if (!GEOMBase::GetShape(aSelectedObject, S) || + S.ShapeType() == TopAbs_COMPSOLID || + S.ShapeType() == TopAbs_COMPOUND || + S.ShapeType() == TopAbs_SOLID || + S.ShapeType() == TopAbs_SHAPE) return; - + myBase = aSelectedObject; - myEditCurrentArgument->setText( GEOMBase::GetName( aSelectedObject ) ); + myEditCurrentArgument->setText(GEOMBase::GetName(aSelectedObject)); myOkBase = true; } - else if ( myEditCurrentArgument == GroupPoints->LineEdit2 ) { + else if (myEditCurrentArgument == GroupPoints->LineEdit2) { myOkPath = false; - - if ( !GEOMBase::GetShape( aSelectedObject, S ) ) + + if (!GEOMBase::GetShape(aSelectedObject, S)) return; - QString aName = GEOMBase::GetName( aSelectedObject ); - - if ( testResult && !aSelectedObject->_is_nil() && aSelectedObject != myBase ) { - LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + QString aName = GEOMBase::GetName(aSelectedObject); + + if (testResult && !aSelectedObject->_is_nil() && aSelectedObject != myBase) { TColStd_IndexedMapOfInteger aMap; - - aSelMgr->GetIndexes( firstIObject(), aMap ); - if ( aMap.Extent() == 1 ) { - int anIndex = aMap( 1 ); - aName.append( ":edge_" + QString::number( anIndex ) ); - + aSelMgr->GetIndexes(aSelList.First(), aMap); + if (aMap.Extent() == 1) { + int anIndex = aMap(1); + aName.append(":edge_" + QString::number(anIndex)); + //Find SubShape Object in Father - GEOM::GEOM_Object_var aFindedObject = GEOMBase_Helper::findObjectInFather( aSelectedObject, aName ); - - if ( aFindedObject == GEOM::GEOM_Object::_nil() ) { // Object not found in study + GEOM::GEOM_Object_var aFindedObject = GEOMBase_Helper::findObjectInFather(aSelectedObject, aName); + + if (aFindedObject == GEOM::GEOM_Object::_nil()) { // Object not found in study GEOM::GEOM_IShapesOperations_var aShapesOp = - getGeomEngine()->GetIShapesOperations( getStudyId() ); - myPath = aShapesOp->GetSubShape( aSelectedObject, anIndex ); + getGeomEngine()->GetIShapesOperations(getStudyId()); + myPath = aShapesOp->GetSubShape(aSelectedObject, anIndex); myOkPath = true; } - else { // get Object from study + else { // get Object from study myPath = aFindedObject; myOkPath = true; } } else { myOkPath = true; - if ( S.ShapeType() != TopAbs_EDGE ) { + if (S.ShapeType() != TopAbs_EDGE) { aSelectedObject = GEOM::GEOM_Object::_nil(); aName = ""; myOkPath = false; @@ -236,13 +236,12 @@ void GenerationGUI_PipeDlg::SelectionIntoArgument() myPath = aSelectedObject; } } - myEditCurrentArgument->setText( aName ); + myEditCurrentArgument->setText(aName); } - + displayPreview(); } - //================================================================================= // function : SetEditCurrentArgument() // purpose : diff --git a/src/GenerationGUI/GenerationGUI_PrismDlg.cxx b/src/GenerationGUI/GenerationGUI_PrismDlg.cxx index e64a13e6c..8645d7b63 100644 --- a/src/GenerationGUI/GenerationGUI_PrismDlg.cxx +++ b/src/GenerationGUI/GenerationGUI_PrismDlg.cxx @@ -321,12 +321,16 @@ void GenerationGUI_PrismDlg::SelectionIntoArgument() erasePreview(); myEditCurrentArgument->setText( "" ); - if ( getConstructorId() == 0 ) { - - if ( IObjectCount() != 1 ) { - if ( myEditCurrentArgument == GroupPoints->LineEdit1 ) + LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + SALOME_ListIO aSelList; + aSelMgr->selectedObjects(aSelList); + + if (getConstructorId() == 0) + { + if (aSelList.Extent() != 1) { + if (myEditCurrentArgument == GroupPoints->LineEdit1) myOkBase = false; - else if ( myEditCurrentArgument == GroupPoints->LineEdit2 ) + else if (myEditCurrentArgument == GroupPoints->LineEdit2) myOkVec = false; return; } @@ -334,20 +338,18 @@ void GenerationGUI_PrismDlg::SelectionIntoArgument() // nbSel == 1 Standard_Boolean testResult = Standard_False; GEOM::GEOM_Object_var aSelectedObject = - GEOMBase::ConvertIOinGEOMObject( firstIObject(), testResult ); - - if ( !testResult ) + GEOMBase::ConvertIOinGEOMObject(aSelList.First(), testResult); + if (!testResult) return; bool myOk = true; TopoDS_Shape aShape; QString aName = GEOMBase::GetName( aSelectedObject ); if ( GEOMBase::GetShape( aSelectedObject, aShape, TopAbs_SHAPE ) && !aShape.IsNull() ) { - LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); TColStd_IndexedMapOfInteger aMap; - aSelMgr->GetIndexes( firstIObject(), aMap ); - if ( aMap.Extent() == 1 ) { - int anIndex = aMap( 1 ); + aSelMgr->GetIndexes(aSelList.First(), aMap); + if (aMap.Extent() == 1) { + int anIndex = aMap(1); aName.append( ":edge_" + QString::number( anIndex ) ); //Find SubShape Object in Father @@ -381,15 +383,15 @@ void GenerationGUI_PrismDlg::SelectionIntoArgument() } myEditCurrentArgument->setText( aName ); } - else if ( getConstructorId() == 1 ) { // getConstructorId()==1 - extrusion using 2 points - if ( IObjectCount() != 1 ) { - if ( myEditCurrentArgument == GroupPoints2->LineEdit1 ) + else if (getConstructorId() == 1) { // getConstructorId()==1 - extrusion using 2 points + if (aSelList.Extent() != 1) { + if (myEditCurrentArgument == GroupPoints2->LineEdit1) myOkBase = false; - else if ( myEditCurrentArgument == GroupPoints2->LineEdit2 ) { + else if (myEditCurrentArgument == GroupPoints2->LineEdit2) { myPoint1 = GEOM::GEOM_Object::_nil(); myOkPnt1 = false; } - else if ( myEditCurrentArgument == GroupPoints2->LineEdit3 ) { + else if (myEditCurrentArgument == GroupPoints2->LineEdit3) { myPoint2 = GEOM::GEOM_Object::_nil(); myOkPnt2 = false; } @@ -399,18 +401,17 @@ void GenerationGUI_PrismDlg::SelectionIntoArgument() // nbSel == 1 Standard_Boolean testResult = Standard_False; GEOM::GEOM_Object_var aSelectedObject = - GEOMBase::ConvertIOinGEOMObject( firstIObject(), testResult ); - - if ( !testResult || CORBA::is_nil( aSelectedObject ) ) + GEOMBase::ConvertIOinGEOMObject(aSelList.First(), testResult); + + if (!testResult || CORBA::is_nil(aSelectedObject)) return; - - QString aName = GEOMBase::GetName( aSelectedObject ); + + QString aName = GEOMBase::GetName(aSelectedObject); TopoDS_Shape aShape; bool myOk = true; - if ( GEOMBase::GetShape( aSelectedObject, aShape, TopAbs_SHAPE ) && !aShape.IsNull() ) { - LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + if (GEOMBase::GetShape(aSelectedObject, aShape, TopAbs_SHAPE) && !aShape.IsNull()) { TColStd_IndexedMapOfInteger aMap; - aSelMgr->GetIndexes( firstIObject(), aMap ); + aSelMgr->GetIndexes(aSelList.First(), aMap ); if (aMap.Extent() == 1) { int anIndex = aMap(1); aName.append( ":vertex_" + QString::number( anIndex ) ); @@ -451,23 +452,22 @@ void GenerationGUI_PrismDlg::SelectionIntoArgument() myPoint2 = aSelectedObject; } } - else if ( getConstructorId() == 2 ) { // extrusion using dx dy dz + else if (getConstructorId() == 2) { // extrusion using dx dy dz Standard_Boolean testResult = Standard_False; GEOM::GEOM_Object_var aSelectedObject = - GEOMBase::ConvertIOinGEOMObject( firstIObject(), testResult ); - - if ( !testResult || CORBA::is_nil( aSelectedObject ) ) + GEOMBase::ConvertIOinGEOMObject(aSelList.First(), testResult); + + if (!testResult || CORBA::is_nil(aSelectedObject)) return; - - QString aName = GEOMBase::GetName( aSelectedObject ); + + QString aName = GEOMBase::GetName(aSelectedObject); myBase = aSelectedObject; - myEditCurrentArgument->setText( aName ); + myEditCurrentArgument->setText(aName); } - + displayPreview(); } - //================================================================================= // function : SetEditCurrentArgument() // purpose : diff --git a/src/GenerationGUI/GenerationGUI_RevolDlg.cxx b/src/GenerationGUI/GenerationGUI_RevolDlg.cxx index 3e6f7fa8e..8f9a6008e 100644 --- a/src/GenerationGUI/GenerationGUI_RevolDlg.cxx +++ b/src/GenerationGUI/GenerationGUI_RevolDlg.cxx @@ -218,7 +218,11 @@ void GenerationGUI_RevolDlg::SelectionIntoArgument() erasePreview(); myEditCurrentArgument->setText( "" ); - if ( IObjectCount() != 1 ) { + LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + SALOME_ListIO aSelList; + aSelMgr->selectedObjects(aSelList); + + if (aSelList.Extent() != 1) { if ( myEditCurrentArgument == GroupPoints->LineEdit1 ) myOkBase = false; else if ( myEditCurrentArgument == GroupPoints->LineEdit2 ) @@ -228,7 +232,7 @@ void GenerationGUI_RevolDlg::SelectionIntoArgument() // nbSel == 1 Standard_Boolean testResult = Standard_False; - GEOM::GEOM_Object_ptr aSelectedObject = GEOMBase::ConvertIOinGEOMObject( firstIObject(), testResult ); + GEOM::GEOM_Object_ptr aSelectedObject = GEOMBase::ConvertIOinGEOMObject(aSelList.First(), testResult); QString aName = GEOMBase::GetName( aSelectedObject ); if ( !testResult ) @@ -249,9 +253,8 @@ void GenerationGUI_RevolDlg::SelectionIntoArgument() TopoDS_Shape aShape; if ( GEOMBase::GetShape( aSelectedObject, aShape, TopAbs_SHAPE ) && !aShape.IsNull() ) { - LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); TColStd_IndexedMapOfInteger aMap; - aSelMgr->GetIndexes( firstIObject(), aMap ); + aSelMgr->GetIndexes(aSelList.First(), aMap); if ( aMap.Extent() == 1 ) { int anIndex = aMap( 1 ); @@ -289,7 +292,6 @@ void GenerationGUI_RevolDlg::SelectionIntoArgument() displayPreview(); } - //================================================================================= // function : SetEditCurrentArgument() // purpose : diff --git a/src/GroupGUI/GroupGUI_GroupDlg.cxx b/src/GroupGUI/GroupGUI_GroupDlg.cxx index 1b3f5b782..fd555bdd0 100644 --- a/src/GroupGUI/GroupGUI_GroupDlg.cxx +++ b/src/GroupGUI/GroupGUI_GroupDlg.cxx @@ -161,6 +161,8 @@ void GroupGUI_GroupDlg::Init() { // san -- TODO: clear selected sub-shapes... //mySelSubBtn->setChecked( true ); + LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + if ( myMode == CreateGroup ) { initName( tr( "GROUP_PREFIX" ) ); @@ -171,34 +173,38 @@ void GroupGUI_GroupDlg::Init() connect( mySelBtn, SIGNAL( clicked() ), this, SLOT( SetEditCurrentArgument() ) ); connect( mySelBtn2, SIGNAL( clicked() ), this, SLOT( SetEditCurrentArgument() ) ); } - else if ( myMode == EditGroup && IObjectCount() ) { - Standard_Boolean aResult = Standard_False; - GEOM::GEOM_Object_var anObj = - GEOMBase::ConvertIOinGEOMObject( firstIObject(), aResult ); + else if (myMode == EditGroup) { + SALOME_ListIO aSelList; + aSelMgr->selectedObjects(aSelList); + + if (aSelList.Extent()) { + Standard_Boolean aResult = Standard_False; + GEOM::GEOM_Object_var anObj = + GEOMBase::ConvertIOinGEOMObject(aSelList.First(), aResult); - if ( aResult && !CORBA::is_nil( anObj ) && anObj->GetType() == GEOM_GROUP ) { - myGroup = anObj; + if ( aResult && !CORBA::is_nil( anObj ) && anObj->GetType() == GEOM_GROUP ) { + myGroup = anObj; - mainFrame()->ResultName->setText( GEOMBase::GetName( myGroup ) ); + mainFrame()->ResultName->setText( GEOMBase::GetName( myGroup ) ); - GEOM::GEOM_IGroupOperations_var anOp = GEOM::GEOM_IGroupOperations::_narrow( getOperation() ); - myMainObj = anOp->GetMainShape( myGroup ); - if ( !CORBA::is_nil( myMainObj ) ) - myMainName->setText( GEOMBase::GetName( myMainObj ) ); + GEOM::GEOM_IGroupOperations_var anOp = GEOM::GEOM_IGroupOperations::_narrow( getOperation() ); + myMainObj = anOp->GetMainShape( myGroup ); + if ( !CORBA::is_nil( myMainObj ) ) + myMainName->setText( GEOMBase::GetName( myMainObj ) ); - setShapeType( (TopAbs_ShapeEnum)anOp->GetType( myGroup ) ); + setShapeType( (TopAbs_ShapeEnum)anOp->GetType( myGroup ) ); - GEOM::ListOfLong_var aCurrList = anOp->GetObjects( myGroup ); - for ( int i = 0, n = aCurrList->length(); i < n; i++ ) - myIdList->addItem( new QListWidgetItem( QString( "%1" ).arg( aCurrList[i] ) ) ); + GEOM::ListOfLong_var aCurrList = anOp->GetObjects( myGroup ); + for ( int i = 0, n = aCurrList->length(); i < n; i++ ) + myIdList->addItem( new QListWidgetItem( QString( "%1" ).arg( aCurrList[i] ) ) ); - myEditCurrentArgument = 0; + myEditCurrentArgument = 0; + } + connect( mySelBtn2, SIGNAL( clicked() ), this, SLOT( SetEditCurrentArgument() ) ); } - connect( mySelBtn2, SIGNAL( clicked() ), this, SLOT( SetEditCurrentArgument() ) ); } - connect( myGeomGUI->getApp()->selectionMgr(), SIGNAL( currentSelectionChanged() ), - this, SLOT( SelectionIntoArgument() ) ); + connect( aSelMgr, SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument()) ); connect( buttonOk(), SIGNAL( clicked() ), this, SLOT( ClickOnOk() ) ); connect( buttonApply(), SIGNAL( clicked() ), this, SLOT( ClickOnApply() ) ); @@ -209,7 +215,7 @@ void GroupGUI_GroupDlg::Init() connect( myRemBtn, SIGNAL( clicked() ), this, SLOT( remove() ) ); connect( myIdList, SIGNAL( selectionChanged() ), this, SLOT( selectionChanged() ) ); - setInPlaceObj( GEOM::GEOM_Object::_nil() ); + setInPlaceObj(GEOM::GEOM_Object::_nil()); myBusy = true; // just activate but do not select in the list activateSelection(); @@ -354,18 +360,22 @@ void GroupGUI_GroupDlg::onGetInPlace() myIdList->clearSelection(); myIdList->blockSignals( isBlocked ); - if (IObjectCount() != 1 ) + LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + SALOME_ListIO aSelList; + aSelMgr->selectedObjects(aSelList); + + if (aSelList.Extent() != 1) return; Standard_Boolean aResult = Standard_False; GEOM::GEOM_Object_var anObj = - GEOMBase::ConvertIOinGEOMObject( firstIObject(), aResult ); - if ( aResult && !anObj->_is_nil() && GEOMBase::IsShape( anObj ) ) { - if ( !anObj->_is_equivalent(myMainObj) && !anObj->_is_equivalent( myGroup )) { + GEOMBase::ConvertIOinGEOMObject(aSelList.First(), aResult); + if (aResult && !anObj->_is_nil() && GEOMBase::IsShape(anObj)) { + if (!anObj->_is_equivalent(myMainObj) && !anObj->_is_equivalent(myGroup)) { SUIT_OverrideCursor wc; - myEditCurrentArgument->setText( GEOMBase::GetName( anObj ) ); + myEditCurrentArgument->setText(GEOMBase::GetName(anObj)); GEOM::GEOM_IShapesOperations_var aShapesOp = - getGeomEngine()->GetIShapesOperations( getStudyId() ); + getGeomEngine()->GetIShapesOperations(getStudyId()); if ( subSelectionWay() == GET_IN_PLACE ) { GEOM::GEOM_Object_var aGetInPlaceObj = aShapesOp->GetInPlace(myMainObj, anObj); setInPlaceObj( aGetInPlaceObj ); @@ -430,19 +440,23 @@ void GroupGUI_GroupDlg::setInPlaceObj( GEOM::GEOM_Object_var theObj ) void GroupGUI_GroupDlg::SelectionIntoArgument() { // if (myPlaceCheckBox->isChecked() && myEditCurrentArgument == myShape2Name ) - if (subSelectionWay() != ALL_SUBSHAPES && myEditCurrentArgument == myShape2Name ) { + if (subSelectionWay() != ALL_SUBSHAPES && myEditCurrentArgument == myShape2Name) { onGetInPlace(); return; } - if ( myEditCurrentArgument == myMainName) { // Selection of a main shape is active - myEditCurrentArgument->setText( "" ); + LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + SALOME_ListIO aSelList; + aSelMgr->selectedObjects(aSelList); + + if (myEditCurrentArgument == myMainName) { // Selection of a main shape is active + myEditCurrentArgument->setText(""); myIdList->clear(); - - if ( IObjectCount() == 1 ) { + + if (aSelList.Extent() == 1) { Standard_Boolean aResult = Standard_False; GEOM::GEOM_Object_var anObj = - GEOMBase::ConvertIOinGEOMObject( firstIObject(), aResult ); + GEOMBase::ConvertIOinGEOMObject(aSelList.First(), aResult); if ( aResult && !anObj->_is_nil() && GEOMBase::IsShape( anObj ) ) { myMainObj = anObj; @@ -468,17 +482,10 @@ void GroupGUI_GroupDlg::SelectionIntoArgument() TColStd_IndexedMapOfInteger aMapIndex; - SALOME_ListIO aSelIOs; - SalomeApp_Application* app = myGeomGUI->getApp(); - if ( app ) { - LightApp_SelectionMgr* aSelMgr = app->selectionMgr(); - if ( aSelMgr ) { - LightApp_SelectionMgr::MapEntryOfMapOfInteger aMap; - aSelMgr->selectedSubOwners( aMap ); - if ( aMap.Size() == 1 ) - aMapIndex = LightApp_SelectionMgr::MapEntryOfMapOfInteger::Iterator( aMap ).Value(); - } - } + LightApp_SelectionMgr::MapEntryOfMapOfInteger aMap; + aSelMgr->selectedSubOwners( aMap ); + if ( aMap.Size() == 1 ) + aMapIndex = LightApp_SelectionMgr::MapEntryOfMapOfInteger::Iterator( aMap ).Value(); bool subselected = aMapIndex.Extent(); // convert inPlace indices to main indices @@ -502,7 +509,7 @@ void GroupGUI_GroupDlg::SelectionIntoArgument() globalSelection( GEOM_ALLSHAPES ); GEOM::ListOfGO anObjects; - GEOMBase::ConvertListOfIOInListOfGO(selectedIO(), anObjects); + GEOMBase::ConvertListOfIOInListOfGO(aSelList, anObjects); GEOM::GEOM_ILocalOperations_var aLocOp = getGeomEngine()->GetILocalOperations( getStudyId() ); GEOM::GEOM_IShapesOperations_var aShapesOp = getGeomEngine()->GetIShapesOperations( getStudyId() ); diff --git a/src/MeasureGUI/MeasureGUI_AngleDlg.cxx b/src/MeasureGUI/MeasureGUI_AngleDlg.cxx index 24c3baaeb..1ec8fd5c8 100644 --- a/src/MeasureGUI/MeasureGUI_AngleDlg.cxx +++ b/src/MeasureGUI/MeasureGUI_AngleDlg.cxx @@ -29,6 +29,8 @@ #include #include +#include + #include #include #include @@ -38,7 +40,8 @@ #include #include #include -//#include "SalomeApp_Application.h" +#include +#include // OCCT Includes #include @@ -146,9 +149,13 @@ void MeasureGUI_AngleDlg::Init() //================================================================================= void MeasureGUI_AngleDlg::SelectionIntoArgument() { + LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + SALOME_ListIO aSelList; + aSelMgr->selectedObjects(aSelList); + Standard_Boolean testResult = Standard_False; GEOM::GEOM_Object_var aSelectedObject = - GEOMBase::ConvertIOinGEOMObject( firstIObject(), testResult ); + GEOMBase::ConvertIOinGEOMObject(aSelList.First(), testResult); if ( !testResult ) aSelectedObject = GEOM::GEOM_Object::_nil(); @@ -239,13 +246,17 @@ void MeasureGUI_AngleDlg::LineEditReturnPressed() { QLineEdit* send = (QLineEdit*)sender(); - if ( send == mySelEdit ) + if (send == mySelEdit) myEditCurrentArgument = mySelEdit; else myEditCurrentArgument = mySelEdit2; - if ( GEOMBase::SelectionByNameInDialogs( this, mySelEdit->text(), selectedIO() ) ) - mySelEdit->setText( mySelEdit->text() ); + LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + SALOME_ListIO aSelList; + aSelMgr->selectedObjects(aSelList); + + if (GEOMBase::SelectionByNameInDialogs(this, mySelEdit->text(), aSelList)) + mySelEdit->setText(mySelEdit->text()); } //================================================================================= diff --git a/src/MeasureGUI/MeasureGUI_CenterMassDlg.cxx b/src/MeasureGUI/MeasureGUI_CenterMassDlg.cxx index 62f484852..25d71d935 100644 --- a/src/MeasureGUI/MeasureGUI_CenterMassDlg.cxx +++ b/src/MeasureGUI/MeasureGUI_CenterMassDlg.cxx @@ -29,6 +29,8 @@ #include #include +#include + #include #include #include @@ -158,16 +160,20 @@ void MeasureGUI_CenterMassDlg::SelectionIntoArgument() erasePreview(); myObj = GEOM::GEOM_Object::_nil(); - if ( IObjectCount() != 1 ) { + LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + SALOME_ListIO aSelList; + aSelMgr->selectedObjects(aSelList); + + if (aSelList.Extent() != 1) { processObject(); return; } Standard_Boolean testResult = Standard_False; GEOM::GEOM_Object_var aSelectedObject = - GEOMBase::ConvertIOinGEOMObject( firstIObject(), testResult ); + GEOMBase::ConvertIOinGEOMObject(aSelList.First(), testResult); - if ( !testResult || aSelectedObject->_is_nil() ) { + if (!testResult || aSelectedObject->_is_nil()) { processObject(); return; } @@ -177,7 +183,6 @@ void MeasureGUI_CenterMassDlg::SelectionIntoArgument() displayPreview(); } - //================================================================================= // function : SetEditCurrentArgument() // purpose : diff --git a/src/MeasureGUI/MeasureGUI_CheckCompoundOfBlocksDlg.cxx b/src/MeasureGUI/MeasureGUI_CheckCompoundOfBlocksDlg.cxx index 58cd190c2..309d35851 100644 --- a/src/MeasureGUI/MeasureGUI_CheckCompoundOfBlocksDlg.cxx +++ b/src/MeasureGUI/MeasureGUI_CheckCompoundOfBlocksDlg.cxx @@ -165,7 +165,11 @@ void MeasureGUI_CheckCompoundOfBlocksDlg::SelectionIntoArgument() erasePreview(); myObj = GEOM::GEOM_Object::_nil(); - if ( IObjectCount() != 1 ) { + LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + SALOME_ListIO aSelList; + aSelMgr->selectedObjects(aSelList); + + if (aSelList.Extent() != 1) { myGrp->LineEdit1->setText( "" ); processObject(); return; @@ -173,7 +177,7 @@ void MeasureGUI_CheckCompoundOfBlocksDlg::SelectionIntoArgument() Standard_Boolean testResult = Standard_False; GEOM::GEOM_Object_var aSelectedObject = - GEOMBase::ConvertIOinGEOMObject( firstIObject(), testResult ); + GEOMBase::ConvertIOinGEOMObject(aSelList.First(), testResult); if ( !testResult || aSelectedObject->_is_nil() ) { myGrp->LineEdit1->setText( "" ); diff --git a/src/MeasureGUI/MeasureGUI_DistanceDlg.cxx b/src/MeasureGUI/MeasureGUI_DistanceDlg.cxx index 2e9fea39a..075c27596 100644 --- a/src/MeasureGUI/MeasureGUI_DistanceDlg.cxx +++ b/src/MeasureGUI/MeasureGUI_DistanceDlg.cxx @@ -29,6 +29,8 @@ #include #include +#include + #include #include #include @@ -37,6 +39,8 @@ #include #include #include +#include +#include #include #include @@ -132,9 +136,13 @@ void MeasureGUI_DistanceDlg::Init() //================================================================================= void MeasureGUI_DistanceDlg::SelectionIntoArgument() { + LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + SALOME_ListIO aSelList; + aSelMgr->selectedObjects(aSelList); + Standard_Boolean testResult = Standard_False; GEOM::GEOM_Object_var aSelectedObject = - GEOMBase::ConvertIOinGEOMObject( firstIObject(), testResult ); + GEOMBase::ConvertIOinGEOMObject(aSelList.First(), testResult); if ( !testResult ) aSelectedObject = GEOM::GEOM_Object::_nil(); @@ -241,8 +249,12 @@ void MeasureGUI_DistanceDlg::LineEditReturnPressed() else myEditCurrentArgument = mySelEdit2; - if ( GEOMBase::SelectionByNameInDialogs( this, mySelEdit->text(), selectedIO() ) ) - mySelEdit->setText( mySelEdit->text() ); + LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + SALOME_ListIO aSelList; + aSelMgr->selectedObjects(aSelList); + + if (GEOMBase::SelectionByNameInDialogs(this, mySelEdit->text(), aSelList)) + mySelEdit->setText(mySelEdit->text()); } diff --git a/src/MeasureGUI/MeasureGUI_NormaleDlg.cxx b/src/MeasureGUI/MeasureGUI_NormaleDlg.cxx index 9c064e60b..071661fce 100644 --- a/src/MeasureGUI/MeasureGUI_NormaleDlg.cxx +++ b/src/MeasureGUI/MeasureGUI_NormaleDlg.cxx @@ -168,13 +168,17 @@ void MeasureGUI_NormaleDlg::SelectionIntoArgument() myPoint = GEOM::GEOM_Object::_nil(); } - if ( IObjectCount() != 1 ) + LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + SALOME_ListIO aSelList; + aSelMgr->selectedObjects(aSelList); + + if (aSelList.Extent() != 1) return; // nbSel == 1 Standard_Boolean testResult = Standard_False; GEOM::GEOM_Object_var aSelectedObject = - GEOMBase::ConvertIOinGEOMObject( firstIObject(), testResult ); + GEOMBase::ConvertIOinGEOMObject(aSelList.First(), testResult); if ( !testResult ) return; @@ -185,9 +189,8 @@ void MeasureGUI_NormaleDlg::SelectionIntoArgument() TopoDS_Shape aShape; if ( GEOMBase::GetShape( aSelectedObject, aShape, TopAbs_SHAPE ) && !aShape.IsNull() ) { - LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); TColStd_IndexedMapOfInteger aMap; - aSelMgr->GetIndexes( firstIObject(), aMap ); + aSelMgr->GetIndexes(aSelList.First(), aMap); if ( aMap.Extent() == 1 ) // Local Selection { GEOM::GEOM_IShapesOperations_var aShapesOp = getGeomEngine()->GetIShapesOperations( getStudyId() ); @@ -209,9 +212,8 @@ void MeasureGUI_NormaleDlg::SelectionIntoArgument() TopoDS_Shape aShape; if ( GEOMBase::GetShape( aSelectedObject, aShape, TopAbs_SHAPE ) && !aShape.IsNull() ) { - LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); TColStd_IndexedMapOfInteger aMap; - aSelMgr->GetIndexes( firstIObject(), aMap ); + aSelMgr->GetIndexes(aSelList.First(), aMap); if ( aMap.Extent() == 1 ) // Local Selection { GEOM::GEOM_IShapesOperations_var aShapesOp = getGeomEngine()->GetIShapesOperations( getStudyId() ); diff --git a/src/MeasureGUI/MeasureGUI_PointDlg.cxx b/src/MeasureGUI/MeasureGUI_PointDlg.cxx index f9e822710..843a9922c 100644 --- a/src/MeasureGUI/MeasureGUI_PointDlg.cxx +++ b/src/MeasureGUI/MeasureGUI_PointDlg.cxx @@ -29,6 +29,8 @@ #include #include +#include + #include #include #include @@ -125,9 +127,13 @@ void MeasureGUI_PointDlg::SelectionIntoArgument() myGrp->LineEdit3->setText( "" ); myGrp->LineEdit4->setText( "" ); + LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + SALOME_ListIO aSelList; + aSelMgr->selectedObjects(aSelList); + Standard_Boolean testResult = Standard_False; GEOM::GEOM_Object_var aSelectedObject = - GEOMBase::ConvertIOinGEOMObject( firstIObject(), testResult ); + GEOMBase::ConvertIOinGEOMObject(aSelList.First(), testResult); if ( !testResult || aSelectedObject->_is_nil() ) return; @@ -135,8 +141,7 @@ void MeasureGUI_PointDlg::SelectionIntoArgument() myObj = aSelectedObject; TColStd_IndexedMapOfInteger anIndexes; - ( (SalomeApp_Application*)( SUIT_Session::session()->activeApplication() ) )-> - selectionMgr()->GetIndexes( firstIObject(), anIndexes ); + aSelMgr->GetIndexes(aSelList.First(), anIndexes); TopoDS_Shape aShape; if ( anIndexes.Extent() > 1 || !GEOMBase::GetShape( myObj, aShape ) || aShape.IsNull() ) diff --git a/src/MeasureGUI/MeasureGUI_Skeleton.cxx b/src/MeasureGUI/MeasureGUI_Skeleton.cxx index 3109b3738..2dd79a196 100644 --- a/src/MeasureGUI/MeasureGUI_Skeleton.cxx +++ b/src/MeasureGUI/MeasureGUI_Skeleton.cxx @@ -179,8 +179,12 @@ void MeasureGUI_Skeleton::LineEditReturnPressed() const QString objectUserName = mySelEdit->text(); QWidget* thisWidget = ( QWidget* )this; - if ( GEOMBase::SelectionByNameInDialogs( thisWidget, objectUserName, selectedIO() ) ) - mySelEdit->setText( objectUserName ); + LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + SALOME_ListIO aSelList; + aSelMgr->selectedObjects(aSelList); + + if (GEOMBase::SelectionByNameInDialogs(thisWidget, objectUserName, aSelList)) + mySelEdit->setText(objectUserName); } } @@ -241,20 +245,24 @@ void MeasureGUI_Skeleton::SetEditCurrentArgument() void MeasureGUI_Skeleton::SelectionIntoArgument() { myObj = GEOM::GEOM_Object::_nil(); - + + LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + SALOME_ListIO aSelList; + aSelMgr->selectedObjects(aSelList); + Standard_Boolean testResult = Standard_False; GEOM::GEOM_Object_var aSelectedObject = - GEOMBase::ConvertIOinGEOMObject( firstIObject(), testResult ); - - if ( !testResult || aSelectedObject->_is_nil() ) { - mySelEdit->setText( "" ); + GEOMBase::ConvertIOinGEOMObject(aSelList.First(), testResult); + + if (!testResult || aSelectedObject->_is_nil()) { + mySelEdit->setText(""); processObject(); erasePreview(); return; } myObj = aSelectedObject; - mySelEdit->setText( GEOMBase::GetName( myObj ) ); + mySelEdit->setText(GEOMBase::GetName(myObj)); processObject(); redisplayPreview(); } diff --git a/src/OperationGUI/OperationGUI_ArchimedeDlg.cxx b/src/OperationGUI/OperationGUI_ArchimedeDlg.cxx index 87dd1655b..853cee04b 100644 --- a/src/OperationGUI/OperationGUI_ArchimedeDlg.cxx +++ b/src/OperationGUI/OperationGUI_ArchimedeDlg.cxx @@ -168,31 +168,33 @@ bool OperationGUI_ArchimedeDlg::ClickOnApply() return true; } - //================================================================================= // function : SelectionIntoArgument() // purpose : Called when selection as changed or other case //================================================================================= void OperationGUI_ArchimedeDlg::SelectionIntoArgument() { - myEditCurrentArgument->setText( "" ); + myEditCurrentArgument->setText(""); myShape = GEOM::GEOM_Object::_nil(); - - if ( IObjectCount() != 1 ) + + LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + SALOME_ListIO aSelList; + aSelMgr->selectedObjects(aSelList); + + if (aSelList.Extent() != 1) return; Standard_Boolean testResult = Standard_False; - myShape = GEOMBase::ConvertIOinGEOMObject( firstIObject(), testResult ); + myShape = GEOMBase::ConvertIOinGEOMObject(aSelList.First(), testResult); - if ( !testResult || myShape->_is_nil() || !GEOMBase::IsShape( myShape ) ) { + if (!testResult || myShape->_is_nil() || !GEOMBase::IsShape(myShape)) { myShape = GEOM::GEOM_Object::_nil(); return; } - myEditCurrentArgument->setText( GEOMBase::GetName( myShape ) ); + myEditCurrentArgument->setText(GEOMBase::GetName(myShape)); } - //================================================================================= // function : LineEditReturnPressed() // purpose : diff --git a/src/OperationGUI/OperationGUI_ChamferDlg.cxx b/src/OperationGUI/OperationGUI_ChamferDlg.cxx index 002280d40..606e0a39e 100644 --- a/src/OperationGUI/OperationGUI_ChamferDlg.cxx +++ b/src/OperationGUI/OperationGUI_ChamferDlg.cxx @@ -348,7 +348,6 @@ bool OperationGUI_ChamferDlg::ClickOnApply() return true; } - //================================================================================= // function : SelectionIntoArgument() // purpose : Called when selection has changed @@ -356,7 +355,7 @@ bool OperationGUI_ChamferDlg::ClickOnApply() void OperationGUI_ChamferDlg::SelectionIntoArgument() { erasePreview(); - myEditCurrentArgument->setText( "" ); + myEditCurrentArgument->setText(""); // Get index of current selection focus int aCurrFocus = -1; @@ -368,12 +367,17 @@ void OperationGUI_ChamferDlg::SelectionIntoArgument() } } + LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + SALOME_ListIO aSelList; + aSelMgr->selectedObjects(aSelList); + // If selection of main object is activated - if ( aCurrFocus == MainObj1 || aCurrFocus == MainObj2 || aCurrFocus == MainObj3 || aCurrFocus == MainObj4) { - if ( IObjectCount() == 1 ) { + if (aCurrFocus == MainObj1 || aCurrFocus == MainObj2 || aCurrFocus == MainObj3 || aCurrFocus == MainObj4) + { + if (aSelList.Extent() == 1) { Standard_Boolean aResult = Standard_False; GEOM::GEOM_Object_var anObj = - GEOMBase::ConvertIOinGEOMObject( firstIObject(), aResult ); + GEOMBase::ConvertIOinGEOMObject(aSelList.First(), aResult); if ( aResult && !anObj->_is_nil() ) { myShape = anObj; @@ -388,18 +392,19 @@ void OperationGUI_ChamferDlg::SelectionIntoArgument() enableWidgets(); } // If face selection of second tab is activated - else if ( aCurrFocus == Face1 || aCurrFocus == Face2 ) { - if ( IObjectCount() == 1 ) { + else if (aCurrFocus == Face1 || aCurrFocus == Face2) + { + if (aSelList.Extent() == 1) { Standard_Boolean aResult = Standard_False; GEOM::GEOM_Object_var anObj = - GEOMBase::ConvertIOinGEOMObject( firstIObject(), aResult ); + GEOMBase::ConvertIOinGEOMObject(aSelList.First(), aResult); if ( aResult && !anObj->_is_nil() ) { TColStd_IndexedMapOfInteger anIndexes; - ( (SalomeApp_Application*)( SUIT_Session::session()->activeApplication() ) )->selectionMgr()->GetIndexes( firstIObject(), anIndexes ); + aSelMgr->GetIndexes(aSelList.First(), anIndexes); - if ( anIndexes.Extent() == 1 ) { - int anIndex = anIndexes( 1 ); + if (anIndexes.Extent() == 1) { + int anIndex = anIndexes(1); QString aFaceName = QString( GEOMBase::GetName( anObj ) ) + ":%1"; myEditCurrentArgument->setText( aFaceName.arg( anIndex ) ); myFace[ aCurrFocus ] = anIndex; @@ -412,20 +417,20 @@ void OperationGUI_ChamferDlg::SelectionIntoArgument() myFace[ aCurrFocus ] = -1; } // If face selection of third or fourth tab is activated - else if ( aCurrFocus == Faces || aCurrFocus == Edges ) { - if ( IObjectCount() == 1 ) { + else if (aCurrFocus == Faces || aCurrFocus == Edges) { + if (aSelList.Extent() == 1) { Standard_Boolean aResult = Standard_False; GEOM::GEOM_Object_var anObj = - GEOMBase::ConvertIOinGEOMObject( firstIObject(), aResult ); - + GEOMBase::ConvertIOinGEOMObject(aSelList.First(), aResult); + if ( aResult && !anObj->_is_nil() ) { TColStd_IndexedMapOfInteger anIndexes; - ( (SalomeApp_Application*)( SUIT_Session::session()->activeApplication() ) )->selectionMgr()->GetIndexes( firstIObject(), anIndexes ); + aSelMgr->GetIndexes(aSelList.First(), anIndexes); - if ( anIndexes.Extent() > 0 ) { + if (anIndexes.Extent() > 0) { QString aName; - if ( anIndexes.Extent() == 1 ) { - int anIndex = anIndexes( 1 ); + if (anIndexes.Extent() == 1) { + int anIndex = anIndexes(1); aName = QString( GEOMBase::GetName( anObj ) ) + QString( ":%1" ).arg( anIndex ); } diff --git a/src/OperationGUI/OperationGUI_FilletDlg.cxx b/src/OperationGUI/OperationGUI_FilletDlg.cxx index cdf2dd396..bc2e65b57 100644 --- a/src/OperationGUI/OperationGUI_FilletDlg.cxx +++ b/src/OperationGUI/OperationGUI_FilletDlg.cxx @@ -299,18 +299,23 @@ void OperationGUI_FilletDlg::SelectionIntoArgument() erasePreview(); myEditCurrentArgument->setText( "" ); + LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + SALOME_ListIO aSelList; + aSelMgr->selectedObjects(aSelList); + // If selection of main object is activated - if ( myEditCurrentArgument == Group1->LineEdit1 || - myEditCurrentArgument == Group2->LineEdit1 || - myEditCurrentArgument == Group3->LineEdit1 ) { - if ( IObjectCount() == 1 ) { + if (myEditCurrentArgument == Group1->LineEdit1 || + myEditCurrentArgument == Group2->LineEdit1 || + myEditCurrentArgument == Group3->LineEdit1) + { + if (aSelList.Extent() == 1) { Standard_Boolean aResult = Standard_False; GEOM::GEOM_Object_var anObj = - GEOMBase::ConvertIOinGEOMObject( firstIObject(), aResult ); - - if ( aResult && !anObj->_is_nil() ) { + GEOMBase::ConvertIOinGEOMObject(aSelList.First(), aResult); + + if (aResult && !anObj->_is_nil()) { myShape = anObj; - myEditCurrentArgument->setText( GEOMBase::GetName( anObj ) ); + myEditCurrentArgument->setText(GEOMBase::GetName(anObj)); displayPreview(); enableWidgets(); return; @@ -321,21 +326,22 @@ void OperationGUI_FilletDlg::SelectionIntoArgument() enableWidgets(); } // If face or edge selection is activated - else if ( myEditCurrentArgument == Group2->LineEdit2 || - myEditCurrentArgument == Group3->LineEdit2 ) { - if ( IObjectCount() == 1 ) { + else if (myEditCurrentArgument == Group2->LineEdit2 || + myEditCurrentArgument == Group3->LineEdit2) + { + if (aSelList.Extent() == 1) { Standard_Boolean aResult = Standard_False; GEOM::GEOM_Object_var anObj = - GEOMBase::ConvertIOinGEOMObject( firstIObject(), aResult ); + GEOMBase::ConvertIOinGEOMObject(aSelList.First(), aResult); - if ( aResult && !anObj->_is_nil() ) { + if (aResult && !anObj->_is_nil()) { TColStd_IndexedMapOfInteger anIndexes; - myGeomGUI->getApp()->selectionMgr()->GetIndexes( firstIObject(), anIndexes ); + aSelMgr->GetIndexes(aSelList.First(), anIndexes); - if ( anIndexes.Extent() > 0 ) { + if (anIndexes.Extent() > 0) { QString aName; - if ( anIndexes.Extent() == 1 ) { - int anIndex = anIndexes( 1 ); + if (anIndexes.Extent() == 1) { + int anIndex = anIndexes(1); aName = QString( GEOMBase::GetName( anObj ) ) + QString( ":%1" ).arg( anIndex ); } @@ -358,7 +364,6 @@ void OperationGUI_FilletDlg::SelectionIntoArgument() } } - //================================================================================= // function : LineEditReturnPressed() // purpose : diff --git a/src/OperationGUI/OperationGUI_GetShapesOnShapeDlg.cxx b/src/OperationGUI/OperationGUI_GetShapesOnShapeDlg.cxx index b2686cc10..8f08fca23 100644 --- a/src/OperationGUI/OperationGUI_GetShapesOnShapeDlg.cxx +++ b/src/OperationGUI/OperationGUI_GetShapesOnShapeDlg.cxx @@ -175,16 +175,20 @@ void OperationGUI_GetShapesOnShapeDlg::SelectionIntoArgument() myEditCurrentArgument->setText( "" ); QString aString = ""; - int nbSel = GEOMBase::GetNameOfSelectedIObjects( selectedIO(), aString, true ); + LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + SALOME_ListIO aSelList; + aSelMgr->selectedObjects(aSelList); - if ( nbSel > 0 ) { + int nbSel = GEOMBase::GetNameOfSelectedIObjects(aSelList, aString, true); + + if (nbSel > 0) { Standard_Boolean aRes = Standard_False; - GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject( firstIObject(), aRes ); - if ( !CORBA::is_nil( aSelectedObject ) && aRes && GEOMBase::IsShape( aSelectedObject ) ) { + GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject(aSelList.First(), aRes); + if (!CORBA::is_nil(aSelectedObject) && aRes && GEOMBase::IsShape(aSelectedObject)) { { - myEditCurrentArgument->setText( GEOMBase::GetName( aSelectedObject ) ); - if ( myEditCurrentArgument == GroupPoints->LineEdit1 ) myObject1 = aSelectedObject; - else if ( myEditCurrentArgument == GroupPoints->LineEdit2 ) myObject2 = aSelectedObject; + myEditCurrentArgument->setText(GEOMBase::GetName(aSelectedObject)); + if (myEditCurrentArgument == GroupPoints->LineEdit1) myObject1 = aSelectedObject; + else if (myEditCurrentArgument == GroupPoints->LineEdit2) myObject2 = aSelectedObject; } } } @@ -258,11 +262,11 @@ GEOM::GEOM_IOperations_ptr OperationGUI_GetShapesOnShapeDlg::createOperation() //================================================================================= bool OperationGUI_GetShapesOnShapeDlg::isValid( QString& msg ) { - Handle(SALOME_InteractiveObject) IO = firstIObject(); - Standard_Boolean testResult; - GEOM::GEOM_Object_var anObject = GEOMBase::ConvertIOinGEOMObject( IO, testResult ); - if ( !testResult || anObject->_is_nil() ) - return false; + //Handle(SALOME_InteractiveObject) IO = firstIObject(); + //Standard_Boolean testResult; + //GEOM::GEOM_Object_var anObject = GEOMBase::ConvertIOinGEOMObject( IO, testResult ); + //if ( !testResult || anObject->_is_nil() ) + // return false; return !CORBA::is_nil( myObject1 ) && !CORBA::is_nil( myObject2 ); } diff --git a/src/OperationGUI/OperationGUI_PartitionDlg.cxx b/src/OperationGUI/OperationGUI_PartitionDlg.cxx index 662cba75c..9c787d2ce 100644 --- a/src/OperationGUI/OperationGUI_PartitionDlg.cxx +++ b/src/OperationGUI/OperationGUI_PartitionDlg.cxx @@ -235,7 +235,11 @@ void OperationGUI_PartitionDlg::SelectionIntoArgument() myEditCurrentArgument->setText( "" ); QString aString = ""; - int nbSel = GEOMBase::GetNameOfSelectedIObjects( selectedIO(), aString, true ); + LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + SALOME_ListIO aSelList; + aSelMgr->selectedObjects(aSelList); + + int nbSel = GEOMBase::GetNameOfSelectedIObjects(aSelList, aString, true); if ( nbSel < 1 ) { if ( myEditCurrentArgument == GroupPoints->LineEdit1 ) { @@ -248,7 +252,7 @@ void OperationGUI_PartitionDlg::SelectionIntoArgument() // One and only one plane can be selected - if ( getConstructorId() == 1 && + if ( getConstructorId() == 1 && myEditCurrentArgument == GroupPoints->LineEdit2 && nbSel != 1 ) { myListTools.length( 0 ); @@ -256,13 +260,13 @@ void OperationGUI_PartitionDlg::SelectionIntoArgument() } if ( myEditCurrentArgument == GroupPoints->LineEdit1 ) { - GEOMBase::ConvertListOfIOInListOfGO( selectedIO(), myListShapes, true ); + GEOMBase::ConvertListOfIOInListOfGO(aSelList, myListShapes, true); myListMaterials.length( 0 ); if ( !myListShapes.length() ) return; } else if ( myEditCurrentArgument == GroupPoints->LineEdit2 ) { - GEOMBase::ConvertListOfIOInListOfGO( selectedIO(), myListTools, true ); + GEOMBase::ConvertListOfIOInListOfGO(aSelList, myListTools, true); if ( !myListTools.length() ) return; } diff --git a/src/PrimitiveGUI/PrimitiveGUI_BoxDlg.cxx b/src/PrimitiveGUI/PrimitiveGUI_BoxDlg.cxx index b6a8dc33f..05441ed86 100644 --- a/src/PrimitiveGUI/PrimitiveGUI_BoxDlg.cxx +++ b/src/PrimitiveGUI/PrimitiveGUI_BoxDlg.cxx @@ -249,7 +249,11 @@ void PrimitiveGUI_BoxDlg::SelectionIntoArgument() myEditCurrentArgument->setText( "" ); - if ( IObjectCount() != 1 ) { + LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + SALOME_ListIO aSelList; + aSelMgr->selectedObjects(aSelList); + + if ( aSelList.Extent() != 1 ) { if ( myEditCurrentArgument == GroupPoints->LineEdit1 ) myPoint1 = GEOM::GEOM_Object::_nil(); else if ( myEditCurrentArgument == GroupPoints->LineEdit2 ) @@ -259,7 +263,7 @@ void PrimitiveGUI_BoxDlg::SelectionIntoArgument() // nbSel == 1 Standard_Boolean testResult = Standard_False; - GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject( firstIObject(), testResult ); + GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject( aSelList.First(), testResult ); if ( !testResult || CORBA::is_nil( aSelectedObject ) ) return; @@ -267,9 +271,8 @@ void PrimitiveGUI_BoxDlg::SelectionIntoArgument() TopoDS_Shape aShape; QString aName = GEOMBase::GetName( aSelectedObject ); if (GEOMBase::GetShape( aSelectedObject, aShape, TopAbs_SHAPE ) && !aShape.IsNull() ) { - LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); TColStd_IndexedMapOfInteger aMap; - aSelMgr->GetIndexes( firstIObject(), aMap ); + aSelMgr->GetIndexes( aSelList.First(), aMap ); if ( aMap.Extent() == 1) { // Local Selection int anIndex = aMap( 1 ); aName.append( ":vertex_" + QString::number( anIndex ) ); diff --git a/src/PrimitiveGUI/PrimitiveGUI_ConeDlg.cxx b/src/PrimitiveGUI/PrimitiveGUI_ConeDlg.cxx index 07bf6b3ee..1fe9e0fe3 100644 --- a/src/PrimitiveGUI/PrimitiveGUI_ConeDlg.cxx +++ b/src/PrimitiveGUI/PrimitiveGUI_ConeDlg.cxx @@ -254,27 +254,30 @@ bool PrimitiveGUI_ConeDlg::ClickOnApply() return true; } - //================================================================================= // function : SelectionIntoArgument() // purpose : Called when selection as changed or other case //================================================================================= void PrimitiveGUI_ConeDlg::SelectionIntoArgument() { - if ( getConstructorId() != 0 ) + if (getConstructorId() != 0) return; - if ( IObjectCount() != 1 ) { - if ( myEditCurrentArgument == GroupPoints->LineEdit1 ) + LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + SALOME_ListIO aSelList; + aSelMgr->selectedObjects(aSelList); + + if (aSelList.Extent() != 1) { + if (myEditCurrentArgument == GroupPoints->LineEdit1) myPoint = GEOM::GEOM_Object::_nil(); - else if ( myEditCurrentArgument == GroupPoints->LineEdit2 ) + else if (myEditCurrentArgument == GroupPoints->LineEdit2) myDir = GEOM::GEOM_Object::_nil(); return; } /* nbSel == 1 */ Standard_Boolean testResult = Standard_False; - GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject( firstIObject(), testResult ); + GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject(aSelList.First(), testResult); if ( !testResult || CORBA::is_nil( aSelectedObject ) ) return; @@ -287,9 +290,8 @@ void PrimitiveGUI_ConeDlg::SelectionIntoArgument() if ( myEditCurrentArgument == GroupPoints->LineEdit2 ) aNeedType = TopAbs_EDGE; - LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); TColStd_IndexedMapOfInteger aMap; - aSelMgr->GetIndexes( firstIObject(), aMap ); + aSelMgr->GetIndexes(aSelList.First(), aMap); if ( aMap.Extent() == 1 ) { int anIndex = aMap(1); if ( aNeedType == TopAbs_EDGE ) @@ -327,7 +329,6 @@ void PrimitiveGUI_ConeDlg::SelectionIntoArgument() displayPreview(); } - //================================================================================= // function : SetEditCurrentArgument() // purpose : diff --git a/src/PrimitiveGUI/PrimitiveGUI_CylinderDlg.cxx b/src/PrimitiveGUI/PrimitiveGUI_CylinderDlg.cxx index 871596615..aa01161fc 100644 --- a/src/PrimitiveGUI/PrimitiveGUI_CylinderDlg.cxx +++ b/src/PrimitiveGUI/PrimitiveGUI_CylinderDlg.cxx @@ -259,21 +259,24 @@ void PrimitiveGUI_CylinderDlg::SelectionIntoArgument() myEditCurrentArgument->setText( "" ); - if ( IObjectCount() != 1 ) { - if ( myEditCurrentArgument == GroupPoints->LineEdit1 ) + LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + SALOME_ListIO aSelList; + aSelMgr->selectedObjects(aSelList); + + if (aSelList.Extent() != 1) { + if (myEditCurrentArgument == GroupPoints->LineEdit1) myPoint = GEOM::GEOM_Object::_nil(); - else if ( myEditCurrentArgument == GroupPoints->LineEdit2 ) + else if (myEditCurrentArgument == GroupPoints->LineEdit2) myDir = GEOM::GEOM_Object::_nil(); return; } /* nbSel == 1 */ Standard_Boolean testResult = Standard_False; - GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject( firstIObject(), testResult ); + GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject(aSelList.First(), testResult); - if ( !testResult || CORBA::is_nil( aSelectedObject ) ) + if (!testResult || CORBA::is_nil(aSelectedObject)) return; - QString aName = GEOMBase::GetName(aSelectedObject); TopoDS_Shape aShape; @@ -282,9 +285,8 @@ void PrimitiveGUI_CylinderDlg::SelectionIntoArgument() if ( myEditCurrentArgument == GroupPoints->LineEdit2 ) aNeedType = TopAbs_EDGE; - LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); TColStd_IndexedMapOfInteger aMap; - aSelMgr->GetIndexes( firstIObject(), aMap ); + aSelMgr->GetIndexes(aSelList.First(), aMap); if ( aMap.Extent() == 1 ) { // Local Selection int anIndex = aMap( 1 ); if ( aNeedType == TopAbs_EDGE ) diff --git a/src/PrimitiveGUI/PrimitiveGUI_FaceDlg.cxx b/src/PrimitiveGUI/PrimitiveGUI_FaceDlg.cxx index 168a00a41..452b1d804 100755 --- a/src/PrimitiveGUI/PrimitiveGUI_FaceDlg.cxx +++ b/src/PrimitiveGUI/PrimitiveGUI_FaceDlg.cxx @@ -318,7 +318,11 @@ void PrimitiveGUI_FaceDlg::SelectionIntoArgument() myEditCurrentArgument->setText( "" ); - if ( IObjectCount() != 1 ) { + LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + SALOME_ListIO aSelList; + aSelMgr->selectedObjects(aSelList); + + if ( aSelList.Extent() != 1 ) { if ( myEditCurrentArgument == GroupPlane->LineEdit1 ) myEdge = GEOM::GEOM_Object::_nil(); return; } @@ -326,7 +330,7 @@ void PrimitiveGUI_FaceDlg::SelectionIntoArgument() // nbSel == 1 Standard_Boolean aRes = Standard_False; TopAbs_ShapeEnum aNeedType = TopAbs_EDGE; - GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject( firstIObject(), aRes ); + GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject( aSelList.First(), aRes ); if ( !CORBA::is_nil( aSelectedObject ) && aRes ) { QString aName = GEOMBase::GetName( aSelectedObject ); @@ -335,9 +339,8 @@ void PrimitiveGUI_FaceDlg::SelectionIntoArgument() if (GroupType->RadioButton2->isChecked()) aNeedType = TopAbs_FACE; - LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); TColStd_IndexedMapOfInteger aMap; - aSelMgr->GetIndexes( firstIObject(), aMap ); + aSelMgr->GetIndexes( aSelList.First(), aMap ); if ( aMap.Extent() == 1 ) { // Local Selection int anIndex = aMap( 1 ); if ( aNeedType == TopAbs_EDGE ) diff --git a/src/PrimitiveGUI/PrimitiveGUI_SphereDlg.cxx b/src/PrimitiveGUI/PrimitiveGUI_SphereDlg.cxx index 13bd12071..8922e36e8 100644 --- a/src/PrimitiveGUI/PrimitiveGUI_SphereDlg.cxx +++ b/src/PrimitiveGUI/PrimitiveGUI_SphereDlg.cxx @@ -231,27 +231,30 @@ void PrimitiveGUI_SphereDlg::SelectionIntoArgument() { if ( getConstructorId() != 0 ) return; - + myEditCurrentArgument->setText( "" ); - - if ( IObjectCount() != 1 ) { + + LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + SALOME_ListIO aSelList; + aSelMgr->selectedObjects(aSelList); + + if (aSelList.Extent() != 1) { myPoint = GEOM::GEOM_Object::_nil(); return; } - + /* nbSel == 1 ! */ Standard_Boolean testResult = Standard_False; - GEOM::GEOM_Object_ptr aSelectedObject = GEOMBase::ConvertIOinGEOMObject( firstIObject(), testResult ); - + GEOM::GEOM_Object_ptr aSelectedObject = GEOMBase::ConvertIOinGEOMObject(aSelList.First(), testResult); + if ( !testResult || CORBA::is_nil( aSelectedObject ) ) return; - + QString aName = GEOMBase::GetName( aSelectedObject ); TopoDS_Shape aShape; if ( GEOMBase::GetShape( aSelectedObject, aShape, TopAbs_SHAPE) && !aShape.IsNull() ) { - LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); TColStd_IndexedMapOfInteger aMap; - aSelMgr->GetIndexes( firstIObject(), aMap ); + aSelMgr->GetIndexes(aSelList.First(), aMap); if ( aMap.Extent() == 1 ) { // Local Selection int anIndex = aMap( 1 ); aName.append( ":vertex_" + QString::number( anIndex ) ); @@ -278,11 +281,10 @@ void PrimitiveGUI_SphereDlg::SelectionIntoArgument() myEditCurrentArgument->setText( aName ); myPoint = aSelectedObject; - + displayPreview(); } - //================================================================================= // function : LineEditReturnPressed() // purpose : diff --git a/src/PrimitiveGUI/PrimitiveGUI_TorusDlg.cxx b/src/PrimitiveGUI/PrimitiveGUI_TorusDlg.cxx index f4dc772a9..acea052ab 100644 --- a/src/PrimitiveGUI/PrimitiveGUI_TorusDlg.cxx +++ b/src/PrimitiveGUI/PrimitiveGUI_TorusDlg.cxx @@ -255,7 +255,11 @@ void PrimitiveGUI_TorusDlg::SelectionIntoArgument() myEditCurrentArgument->setText( "" ); - if ( IObjectCount() != 1 ) { + LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + SALOME_ListIO aSelList; + aSelMgr->selectedObjects(aSelList); + + if ( aSelList.Extent() != 1 ) { if ( myEditCurrentArgument == GroupPoints->LineEdit1 ) myPoint = GEOM::GEOM_Object::_nil(); else if ( myEditCurrentArgument == GroupPoints->LineEdit2 ) @@ -265,7 +269,7 @@ void PrimitiveGUI_TorusDlg::SelectionIntoArgument() /* nbSel == 1 */ Standard_Boolean testResult = Standard_False; - GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject( firstIObject(), testResult ); + GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject( aSelList.First(), testResult ); if ( !testResult || CORBA::is_nil( aSelectedObject ) ) return; @@ -278,9 +282,8 @@ void PrimitiveGUI_TorusDlg::SelectionIntoArgument() if ( myEditCurrentArgument == GroupPoints->LineEdit2 ) aNeedType = TopAbs_EDGE; - LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); TColStd_IndexedMapOfInteger aMap; - aSelMgr->GetIndexes( firstIObject(), aMap ); + aSelMgr->GetIndexes( aSelList.First(), aMap ); if ( aMap.Extent() == 1 ) { // Local Selection int anIndex = aMap( 1 ); if ( aNeedType == TopAbs_EDGE ) diff --git a/src/RepairGUI/RepairGUI_ChangeOrientationDlg.cxx b/src/RepairGUI/RepairGUI_ChangeOrientationDlg.cxx index 2f2f4e2a2..26ea5739c 100644 --- a/src/RepairGUI/RepairGUI_ChangeOrientationDlg.cxx +++ b/src/RepairGUI/RepairGUI_ChangeOrientationDlg.cxx @@ -157,8 +157,12 @@ void RepairGUI_ChangeOrientationDlg::SelectionIntoArgument() myEditCurrentArgument->setText( "" ); QString aName; + LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + SALOME_ListIO aSelList; + aSelMgr->selectedObjects(aSelList); + if ( myEditCurrentArgument == GroupPoints->LineEdit1 ) { - if ( IObjectCount() != 1 ) { + if ( aSelList.Extent() != 1 ) { if ( myEditCurrentArgument == GroupPoints->LineEdit1 ) myOkObject = false; return; @@ -168,7 +172,7 @@ void RepairGUI_ChangeOrientationDlg::SelectionIntoArgument() // nbSel == 1 Standard_Boolean testResult = Standard_False; GEOM::GEOM_Object_ptr aSelectedObject = - GEOMBase::ConvertIOinGEOMObject( firstIObject(), testResult ); + GEOMBase::ConvertIOinGEOMObject( aSelList.First(), testResult ); if ( !testResult ) return; diff --git a/src/RepairGUI/RepairGUI_CloseContourDlg.cxx b/src/RepairGUI/RepairGUI_CloseContourDlg.cxx index d24f6f31b..1ce7c8f9a 100644 --- a/src/RepairGUI/RepairGUI_CloseContourDlg.cxx +++ b/src/RepairGUI/RepairGUI_CloseContourDlg.cxx @@ -189,8 +189,12 @@ void RepairGUI_CloseContourDlg::SelectionIntoArgument() else if ( myEditCurrentArgument == GroupPoints->LineEdit2 ) myWiresInd->length( 0 ); - if ( IObjectCount() == 1 ) { - Handle(SALOME_InteractiveObject) anIO = firstIObject(); + LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + SALOME_ListIO aSelList; + aSelMgr->selectedObjects(aSelList); + + if ( aSelList.Extent() == 1 ) { + Handle(SALOME_InteractiveObject) anIO = aSelList.First(); if ( myEditCurrentArgument == GroupPoints->LineEdit1 ) { // face selection Standard_Boolean aRes; @@ -206,7 +210,7 @@ void RepairGUI_CloseContourDlg::SelectionIntoArgument() } else if ( myEditCurrentArgument == GroupPoints->LineEdit2 ) { TColStd_IndexedMapOfInteger aMap; - myGeomGUI->getApp()->selectionMgr()->GetIndexes( anIO, aMap ); + aSelMgr->GetIndexes( anIO, aMap ); const int n = aMap.Extent(); myWiresInd->length( n ); for ( int i = 1; i <= n; i++ ) diff --git a/src/RepairGUI/RepairGUI_DivideEdgeDlg.cxx b/src/RepairGUI/RepairGUI_DivideEdgeDlg.cxx index 9ba9969bc..7cea1fd99 100644 --- a/src/RepairGUI/RepairGUI_DivideEdgeDlg.cxx +++ b/src/RepairGUI/RepairGUI_DivideEdgeDlg.cxx @@ -221,8 +221,12 @@ void RepairGUI_DivideEdgeDlg::SelectionIntoArgument() myObject = GEOM::GEOM_Object::_nil(); - if ( IObjectCount() == 1 ) { - Handle(SALOME_InteractiveObject) anIO = firstIObject(); + LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + SALOME_ListIO aSelList; + aSelMgr->selectedObjects(aSelList); + + if ( aSelList.Extent() == 1 ) { + Handle(SALOME_InteractiveObject) anIO = aSelList.First(); Standard_Boolean aRes; GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject( anIO, aRes ); if ( !CORBA::is_nil( aSelectedObject ) && aRes ) { @@ -235,9 +239,7 @@ void RepairGUI_DivideEdgeDlg::SelectionIntoArgument() GEOM::short_array anIndexes; TColStd_IndexedMapOfInteger aMap; - SalomeApp_Application* anApp = - (SalomeApp_Application*)(SUIT_Session::session()->activeApplication()); - anApp->selectionMgr()->GetIndexes( anIO, aMap ); + aSelMgr->GetIndexes( anIO, aMap ); if ( aMap.Extent() == 1 ) { // local selection int anIndex = aMap( 1 ); diff --git a/src/RepairGUI/RepairGUI_FreeBoundDlg.cxx b/src/RepairGUI/RepairGUI_FreeBoundDlg.cxx index 6f26180e5..e4d511667 100644 --- a/src/RepairGUI/RepairGUI_FreeBoundDlg.cxx +++ b/src/RepairGUI/RepairGUI_FreeBoundDlg.cxx @@ -196,12 +196,16 @@ void RepairGUI_FreeBoundDlg::onActivate() //================================================================================= void RepairGUI_FreeBoundDlg::onSelectionDone() { - if ( IObjectCount() != 1 ) + LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + SALOME_ListIO aSelList; + aSelMgr->selectedObjects(aSelList); + + if ( aSelList.Extent() != 1 ) return; Standard_Boolean isOk = Standard_False; GEOM::GEOM_Object_var anObj = - GEOMBase::ConvertIOinGEOMObject( firstIObject(), isOk ); + GEOMBase::ConvertIOinGEOMObject( aSelList.First(), isOk ); if ( !isOk || anObj->_is_nil() || !GEOMBase::IsShape( anObj ) ) return; diff --git a/src/RepairGUI/RepairGUI_FreeFacesDlg.cxx b/src/RepairGUI/RepairGUI_FreeFacesDlg.cxx index 89afe9580..fa692516a 100644 --- a/src/RepairGUI/RepairGUI_FreeFacesDlg.cxx +++ b/src/RepairGUI/RepairGUI_FreeFacesDlg.cxx @@ -228,14 +228,19 @@ void RepairGUI_FreeFacesDlg::Init() void RepairGUI_FreeFacesDlg::onSelectionDone() { erasePreview(); - if ( IObjectCount() != 1 ) { + + LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + SALOME_ListIO aSelList; + aSelMgr->selectedObjects(aSelList); + + if ( aSelList.Extent() != 1 ) { myEdit->setText( "" ); return; } Standard_Boolean isOk = Standard_False; GEOM::GEOM_Object_var anObj = - GEOMBase::ConvertIOinGEOMObject( firstIObject(), isOk ); + GEOMBase::ConvertIOinGEOMObject( aSelList.First(), isOk ); if ( !isOk || anObj->_is_nil() || !GEOMBase::IsShape( anObj ) ) { myEdit->setText( "" ); diff --git a/src/RepairGUI/RepairGUI_GlueDlg.cxx b/src/RepairGUI/RepairGUI_GlueDlg.cxx index 12c2a2021..c3ddfef0e 100644 --- a/src/RepairGUI/RepairGUI_GlueDlg.cxx +++ b/src/RepairGUI/RepairGUI_GlueDlg.cxx @@ -290,8 +290,12 @@ void RepairGUI_GlueDlg::SelectionIntoArgument() myEditCurrentArgument->setText( "" ); myObject = GEOM::GEOM_Object::_nil(); - if ( IObjectCount() == 1 ) { - Handle(SALOME_InteractiveObject) anIO = firstIObject(); + LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + SALOME_ListIO aSelList; + aSelMgr->selectedObjects(aSelList); + + if ( aSelList.Extent() == 1 ) { + Handle(SALOME_InteractiveObject) anIO = aSelList.First(); Standard_Boolean aRes; myObject = GEOMBase::ConvertIOinGEOMObject( anIO, aRes ); if ( aRes ) @@ -423,9 +427,13 @@ bool RepairGUI_GlueDlg::execute( ObjectList& objects ) QMap selected; // Get names of selected objects - SALOME_ListIteratorOfListIO it ( selectedIO() ); - for ( ; it.More(); it.Next() ) - selected.insert( it.Value()->getName(), 0 ); + LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + SALOME_ListIO aSelList; + aSelMgr->selectedObjects(aSelList); + + SALOME_ListIteratorOfListIO it (aSelList); + for (; it.More(); it.Next()) + selected.insert(it.Value()->getName(), 0); // Iterate through result and select objects with names from selection // ObjectList toRemoveFromEnggine; @@ -693,8 +701,12 @@ void RepairGUI_GlueDlg::updateButtonState() } else { + LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + SALOME_ListIO aSelList; + aSelMgr->selectedObjects(aSelList); + bool wasSelected = false; - SALOME_ListIteratorOfListIO it ( selectedIO() ); + SALOME_ListIteratorOfListIO it (aSelList); if (it.More() > 0) wasSelected = true; bool wasDetected = myTmpObjs.size() ? true : false; diff --git a/src/RepairGUI/RepairGUI_RemoveExtraEdgesDlg.cxx b/src/RepairGUI/RepairGUI_RemoveExtraEdgesDlg.cxx index 2ec52ea0a..fa7084932 100644 --- a/src/RepairGUI/RepairGUI_RemoveExtraEdgesDlg.cxx +++ b/src/RepairGUI/RepairGUI_RemoveExtraEdgesDlg.cxx @@ -161,8 +161,12 @@ void RepairGUI_RemoveExtraEdgesDlg::SelectionIntoArgument() myEditCurrentArgument->setText( "" ); QString aName; + LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + SALOME_ListIO aSelList; + aSelMgr->selectedObjects(aSelList); + if ( myEditCurrentArgument == GroupPoints->LineEdit1 ) { - if ( IObjectCount() != 1 ) { + if ( aSelList.Extent() != 1 ) { if ( myEditCurrentArgument == GroupPoints->LineEdit1 ) myOkObject = false; return; @@ -172,7 +176,7 @@ void RepairGUI_RemoveExtraEdgesDlg::SelectionIntoArgument() // nbSel == 1 Standard_Boolean testResult = Standard_False; GEOM::GEOM_Object_ptr aSelectedObject = - GEOMBase::ConvertIOinGEOMObject( firstIObject(), testResult ); + GEOMBase::ConvertIOinGEOMObject( aSelList.First(), testResult ); if ( !testResult ) return; diff --git a/src/RepairGUI/RepairGUI_RemoveHolesDlg.cxx b/src/RepairGUI/RepairGUI_RemoveHolesDlg.cxx index d8b0347a7..798b52595 100644 --- a/src/RepairGUI/RepairGUI_RemoveHolesDlg.cxx +++ b/src/RepairGUI/RepairGUI_RemoveHolesDlg.cxx @@ -184,8 +184,12 @@ void RepairGUI_RemoveHolesDlg::SelectionIntoArgument() if ( myEditCurrentArgument == GroupPoints->LineEdit1 ) myObject = GEOM::GEOM_Object::_nil(); else if ( myEditCurrentArgument == GroupPoints->LineEdit2 ) myWiresInd->length( 0 ); - if ( IObjectCount() == 1 ) { - Handle(SALOME_InteractiveObject) anIO = firstIObject(); + LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + SALOME_ListIO aSelList; + aSelMgr->selectedObjects(aSelList); + + if ( aSelList.Extent() == 1 ) { + Handle(SALOME_InteractiveObject) anIO = aSelList.First(); if ( myEditCurrentArgument == GroupPoints->LineEdit1 ) { // face selection Standard_Boolean aRes; @@ -198,7 +202,7 @@ void RepairGUI_RemoveHolesDlg::SelectionIntoArgument() else if ( myEditCurrentArgument == GroupPoints->LineEdit2 && !GroupPoints->CheckButton1->isChecked() ) { TColStd_IndexedMapOfInteger aMap; - ( (SalomeApp_Application*)( SUIT_Session::session()->activeApplication() ) )->selectionMgr()->GetIndexes( anIO, aMap ); + aSelMgr->GetIndexes( anIO, aMap ); const int n = aMap.Extent(); myWiresInd->length( n ); for ( int i = 1; i <= n; i++ ) diff --git a/src/RepairGUI/RepairGUI_RemoveIntWiresDlg.cxx b/src/RepairGUI/RepairGUI_RemoveIntWiresDlg.cxx index 3f866d513..ba1641382 100644 --- a/src/RepairGUI/RepairGUI_RemoveIntWiresDlg.cxx +++ b/src/RepairGUI/RepairGUI_RemoveIntWiresDlg.cxx @@ -172,8 +172,12 @@ void RepairGUI_RemoveIntWiresDlg::SelectionIntoArgument() if ( myEditCurrentArgument == GroupPoints->LineEdit1 ) myObject = GEOM::GEOM_Object::_nil(); else if ( myEditCurrentArgument == GroupPoints->LineEdit2 ) myWiresInd->length( 0 ); - if ( IObjectCount() == 1 ) { - Handle(SALOME_InteractiveObject) anIO = firstIObject(); + LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + SALOME_ListIO aSelList; + aSelMgr->selectedObjects(aSelList); + + if ( aSelList.Extent() == 1 ) { + Handle(SALOME_InteractiveObject) anIO = aSelList.First(); if ( myEditCurrentArgument == GroupPoints->LineEdit1 ) { // face selection Standard_Boolean aRes; @@ -186,7 +190,7 @@ void RepairGUI_RemoveIntWiresDlg::SelectionIntoArgument() else if ( myEditCurrentArgument == GroupPoints->LineEdit2 && !GroupPoints->CheckButton1->isChecked() ) { TColStd_IndexedMapOfInteger aMap; - ( (SalomeApp_Application*)( SUIT_Session::session()->activeApplication() ) )->selectionMgr()->GetIndexes( anIO, aMap ); + aSelMgr->GetIndexes( anIO, aMap ); const int n = aMap.Extent(); myWiresInd->length( n ); for ( int i = 1; i <= n; i++ ) diff --git a/src/RepairGUI/RepairGUI_SewingDlg.cxx b/src/RepairGUI/RepairGUI_SewingDlg.cxx index 4055f3df6..a6d8f1cba 100644 --- a/src/RepairGUI/RepairGUI_SewingDlg.cxx +++ b/src/RepairGUI/RepairGUI_SewingDlg.cxx @@ -177,8 +177,12 @@ void RepairGUI_SewingDlg::SelectionIntoArgument() myEditCurrentArgument->setText( "" ); myObject = GEOM::GEOM_Object::_nil(); - if ( IObjectCount() == 1 ) { - Handle(SALOME_InteractiveObject) anIO = firstIObject(); + LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + SALOME_ListIO aSelList; + aSelMgr->selectedObjects(aSelList); + + if ( aSelList.Extent() == 1 ) { + Handle(SALOME_InteractiveObject) anIO = aSelList.First(); Standard_Boolean aRes; myObject = GEOMBase::ConvertIOinGEOMObject( anIO, aRes ); if ( aRes ) diff --git a/src/RepairGUI/RepairGUI_ShapeProcessDlg.cxx b/src/RepairGUI/RepairGUI_ShapeProcessDlg.cxx index fed28dc93..1abf61dc1 100755 --- a/src/RepairGUI/RepairGUI_ShapeProcessDlg.cxx +++ b/src/RepairGUI/RepairGUI_ShapeProcessDlg.cxx @@ -358,10 +358,14 @@ void RepairGUI_ShapeProcessDlg::selectionChanged() { reset(); + LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + SALOME_ListIO aSelList; + aSelMgr->selectedObjects(aSelList); + Standard_Boolean aRes = Standard_False; int i = 0; - myObjects->length( IObjectCount() ); - for ( SALOME_ListIteratorOfListIO anIt( selectedIO() ); anIt.More(); anIt.Next() ) { + myObjects->length(aSelList.Extent()); + for (SALOME_ListIteratorOfListIO anIt (aSelList); anIt.More(); anIt.Next()) { GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject( anIt.Value(), aRes ); if ( !CORBA::is_nil( aSelectedObject ) && aRes ) myObjects[i++] = aSelectedObject; diff --git a/src/RepairGUI/RepairGUI_SuppressFacesDlg.cxx b/src/RepairGUI/RepairGUI_SuppressFacesDlg.cxx index f3a239ddc..22a4a80ed 100644 --- a/src/RepairGUI/RepairGUI_SuppressFacesDlg.cxx +++ b/src/RepairGUI/RepairGUI_SuppressFacesDlg.cxx @@ -164,9 +164,15 @@ void RepairGUI_SuppressFacesDlg::SelectionIntoArgument() Standard_Boolean aRes = Standard_False; int i = 0; int numFaces = 0; - myObjects->length( IObjectCount() ); + + LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + SALOME_ListIO aSelList; + aSelMgr->selectedObjects(aSelList); + + myObjects->length( aSelList.Extent() ); myFaces.clear(); - for ( SALOME_ListIteratorOfListIO anIt( selectedIO() ); anIt.More(); anIt.Next() ) { + + for (SALOME_ListIteratorOfListIO anIt (aSelList); anIt.More(); anIt.Next()) { Handle(SALOME_InteractiveObject) anIO = anIt.Value(); GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject( anIO, aRes ); if ( !CORBA::is_nil( aSelectedObject ) && aRes ) { @@ -176,7 +182,7 @@ void RepairGUI_SuppressFacesDlg::SelectionIntoArgument() GEOM::short_array anIndexes; TColStd_IndexedMapOfInteger aMap; - myGeomGUI->getApp()->selectionMgr()->GetIndexes( anIO, aMap ); + aSelMgr->GetIndexes( anIO, aMap ); if ( !aMap.IsEmpty() ) { Convert( aMap, anIndexes ); diff --git a/src/TransformationGUI/TransformationGUI_MirrorDlg.cxx b/src/TransformationGUI/TransformationGUI_MirrorDlg.cxx index a9079259f..efd910eb4 100644 --- a/src/TransformationGUI/TransformationGUI_MirrorDlg.cxx +++ b/src/TransformationGUI/TransformationGUI_MirrorDlg.cxx @@ -208,32 +208,36 @@ void TransformationGUI_MirrorDlg::SelectionIntoArgument() myEditCurrentArgument->setText( "" ); QString aName; - if ( myEditCurrentArgument == GroupPoints->LineEdit1 ) { - int aNbSel = GEOMBase::GetNameOfSelectedIObjects( selectedIO(), aName ); + LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + SALOME_ListIO aSelList; + aSelMgr->selectedObjects(aSelList); + + if (myEditCurrentArgument == GroupPoints->LineEdit1) { + int aNbSel = GEOMBase::GetNameOfSelectedIObjects(aSelList, aName); if ( aNbSel < 1 ) { - myObjects.length( 0 ); + myObjects.length(0); return; } - GEOMBase::ConvertListOfIOInListOfGO( selectedIO(), myObjects ); - if ( !myObjects.length() ) + GEOMBase::ConvertListOfIOInListOfGO(aSelList, myObjects); + if (!myObjects.length()) return; - if ( aNbSel != 1 ) - aName = tr( "%1_objects" ).arg( aNbSel ); + if (aNbSel != 1) + aName = tr("%1_objects").arg(aNbSel); } - else if ( myEditCurrentArgument == GroupPoints->LineEdit2 ) { - if ( IObjectCount() != 1 ) { + else if (myEditCurrentArgument == GroupPoints->LineEdit2) { + if (aSelList.Extent() != 1) { myArgument = GEOM::GEOM_Object::_nil(); return; } Standard_Boolean testResult = Standard_False; - GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject( firstIObject(), testResult ); + GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject(aSelList.First(), testResult); myArgument = aSelectedObject; - if ( !testResult || CORBA::is_nil( myArgument ) ) + if (!testResult || CORBA::is_nil(myArgument)) return; - aName = GEOMBase::GetName( aSelectedObject ); + aName = GEOMBase::GetName(aSelectedObject); - if ( testResult && !aSelectedObject->_is_nil() ) { + if (testResult && !aSelectedObject->_is_nil()) { TopoDS_Shape aShape; if ( GEOMBase::GetShape( aSelectedObject, aShape, TopAbs_SHAPE ) && !aShape.IsNull() ) { TopAbs_ShapeEnum aNeedType = TopAbs_VERTEX; @@ -242,9 +246,8 @@ void TransformationGUI_MirrorDlg::SelectionIntoArgument() else if ( getConstructorId() == 2 ) aNeedType = TopAbs_FACE; - LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); TColStd_IndexedMapOfInteger aMap; - aSelMgr->GetIndexes( firstIObject(), aMap ); + aSelMgr->GetIndexes(aSelList.First(), aMap); if ( aMap.Extent() == 1 ) { int anIndex = aMap( 1 ); if ( aNeedType == TopAbs_VERTEX ) diff --git a/src/TransformationGUI/TransformationGUI_MultiRotationDlg.cxx b/src/TransformationGUI/TransformationGUI_MultiRotationDlg.cxx index 5006f5632..55128a3a8 100644 --- a/src/TransformationGUI/TransformationGUI_MultiRotationDlg.cxx +++ b/src/TransformationGUI/TransformationGUI_MultiRotationDlg.cxx @@ -279,7 +279,11 @@ void TransformationGUI_MultiRotationDlg::SelectionIntoArgument() { myEditCurrentArgument->setText( "" ); - if ( IObjectCount() != 1 ) { + LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + SALOME_ListIO aSelList; + aSelMgr->selectedObjects(aSelList); + + if ( aSelList.Extent() != 1 ) { if ( myEditCurrentArgument == GroupPoints->LineEdit1 || myEditCurrentArgument == GroupDimensions->LineEdit1 ) myBase = GEOM::GEOM_Object::_nil(); @@ -292,7 +296,7 @@ void TransformationGUI_MultiRotationDlg::SelectionIntoArgument() // nbSel == 1 Standard_Boolean testResult = Standard_False;; GEOM::GEOM_Object_var aSelectedObject = - GEOMBase::ConvertIOinGEOMObject( firstIObject(), testResult ); + GEOMBase::ConvertIOinGEOMObject( aSelList.First(), testResult ); if ( !testResult || CORBA::is_nil( aSelectedObject) || !GEOMBase::IsShape( aSelectedObject ) ) return; @@ -308,9 +312,8 @@ void TransformationGUI_MultiRotationDlg::SelectionIntoArgument() TopoDS_Shape aShape; if ( GEOMBase::GetShape( aSelectedObject, aShape, TopAbs_SHAPE ) && !aShape.IsNull() ) { - LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); TColStd_IndexedMapOfInteger aMap; - aSelMgr->GetIndexes( firstIObject(), aMap ); + aSelMgr->GetIndexes( aSelList.First(), aMap ); if ( aMap.Extent() == 1 ) { int anIndex = aMap( 1 ); aName += QString( ":edge_%1" ).arg( anIndex ); diff --git a/src/TransformationGUI/TransformationGUI_MultiTranslationDlg.cxx b/src/TransformationGUI/TransformationGUI_MultiTranslationDlg.cxx index 716acd4d9..fe5858128 100644 --- a/src/TransformationGUI/TransformationGUI_MultiTranslationDlg.cxx +++ b/src/TransformationGUI/TransformationGUI_MultiTranslationDlg.cxx @@ -293,7 +293,11 @@ void TransformationGUI_MultiTranslationDlg::SelectionIntoArgument() { myEditCurrentArgument->setText( "" ); - if ( IObjectCount() != 1 ) { + LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + SALOME_ListIO aSelList; + aSelMgr->selectedObjects(aSelList); + + if ( aSelList.Extent() != 1 ) { if ( myEditCurrentArgument == GroupPoints->LineEdit1 || myEditCurrentArgument == GroupDimensions->LineEdit1 ) myBase = GEOM::GEOM_Object::_nil(); @@ -307,7 +311,7 @@ void TransformationGUI_MultiTranslationDlg::SelectionIntoArgument() // nbSel == 1 Standard_Boolean testResult = Standard_False;; - GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject( firstIObject(), testResult ); + GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject( aSelList.First(), testResult ); if ( !testResult || CORBA::is_nil( aSelectedObject ) || !GEOMBase::IsShape( aSelectedObject ) ) return; @@ -324,9 +328,8 @@ void TransformationGUI_MultiTranslationDlg::SelectionIntoArgument() TopoDS_Shape aShape; if ( GEOMBase::GetShape( aSelectedObject, aShape, TopAbs_SHAPE ) && !aShape.IsNull() ) { - LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); TColStd_IndexedMapOfInteger aMap; - aSelMgr->GetIndexes( firstIObject(), aMap ); + aSelMgr->GetIndexes( aSelList.First(), aMap ); if ( aMap.Extent() == 1 ) { int anIndex = aMap( 1 ); aName += QString( ":edge_%1" ).arg( anIndex ); diff --git a/src/TransformationGUI/TransformationGUI_OffsetDlg.cxx b/src/TransformationGUI/TransformationGUI_OffsetDlg.cxx index 15f342d5a..7ab9318fa 100644 --- a/src/TransformationGUI/TransformationGUI_OffsetDlg.cxx +++ b/src/TransformationGUI/TransformationGUI_OffsetDlg.cxx @@ -165,19 +165,23 @@ void TransformationGUI_OffsetDlg::SelectionIntoArgument() myEditCurrentArgument->setText( "" ); QString aName; - int aNbSel = GEOMBase::GetNameOfSelectedIObjects( selectedIO(), aName ); + LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + SALOME_ListIO aSelList; + aSelMgr->selectedObjects(aSelList); + + int aNbSel = GEOMBase::GetNameOfSelectedIObjects(aSelList, aName); if ( aNbSel < 1 ) { myObjects.length( 0 ); return; } // nbSel > 0 - GEOMBase::ConvertListOfIOInListOfGO( selectedIO(), myObjects ); - if ( !myObjects.length() ) + GEOMBase::ConvertListOfIOInListOfGO (aSelList, myObjects); + if (!myObjects.length()) return; - - myEditCurrentArgument->setText( aName ); - + + myEditCurrentArgument->setText(aName); + displayPreview(); } diff --git a/src/TransformationGUI/TransformationGUI_PositionDlg.cxx b/src/TransformationGUI/TransformationGUI_PositionDlg.cxx index 69e759bdb..7c6d4b321 100644 --- a/src/TransformationGUI/TransformationGUI_PositionDlg.cxx +++ b/src/TransformationGUI/TransformationGUI_PositionDlg.cxx @@ -220,28 +220,32 @@ void TransformationGUI_PositionDlg::SelectionIntoArgument() myEditCurrentArgument->setText( "" ); QString aName; - if ( myEditCurrentArgument == Group1->LineEdit1 ) { - int aNbSel = GEOMBase::GetNameOfSelectedIObjects( selectedIO(), aName ); - if ( aNbSel < 1 ) { - myObjects.length( 0 ); + LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + SALOME_ListIO aSelList; + aSelMgr->selectedObjects(aSelList); + + if (myEditCurrentArgument == Group1->LineEdit1) { + int aNbSel = GEOMBase::GetNameOfSelectedIObjects(aSelList, aName); + if (aNbSel < 1) { + myObjects.length(0); displayPreview(); return; } - GEOMBase::ConvertListOfIOInListOfGO( selectedIO(), myObjects ); + GEOMBase::ConvertListOfIOInListOfGO(aSelList, myObjects); if ( !myObjects.length() ) { displayPreview(); return; } } - else if ( myEditCurrentArgument == Group1->LineEdit2 ) { + else if (myEditCurrentArgument == Group1->LineEdit2) { myStartLCS = GEOM::GEOM_Object::_nil(); - if ( IObjectCount() != 1 ) { + if (aSelList.Extent() != 1) { displayPreview(); return; } Standard_Boolean testResult = Standard_False; - myStartLCS = GEOMBase::ConvertIOinGEOMObject( firstIObject(), testResult ); + myStartLCS = GEOMBase::ConvertIOinGEOMObject(aSelList.First(), testResult); if ( !testResult || CORBA::is_nil( myStartLCS ) ) { displayPreview(); return; @@ -250,13 +254,13 @@ void TransformationGUI_PositionDlg::SelectionIntoArgument() } else if ( myEditCurrentArgument == Group1->LineEdit3 ) { myEndLCS = GEOM::GEOM_Object::_nil(); - if ( IObjectCount() != 1 ) { + if ( aSelList.Extent() != 1 ) { displayPreview(); return; } Standard_Boolean testResult = Standard_False; - myEndLCS = GEOMBase::ConvertIOinGEOMObject( firstIObject(), testResult ); + myEndLCS = GEOMBase::ConvertIOinGEOMObject(aSelList.First(), testResult); if ( !testResult || CORBA::is_nil( myEndLCS ) ) { displayPreview(); return; @@ -268,7 +272,6 @@ void TransformationGUI_PositionDlg::SelectionIntoArgument() displayPreview(); } - //================================================================================= // function : LineEditReturnPressed() // purpose : diff --git a/src/TransformationGUI/TransformationGUI_RotationDlg.cxx b/src/TransformationGUI/TransformationGUI_RotationDlg.cxx index 4d21574cf..b9a21f503 100644 --- a/src/TransformationGUI/TransformationGUI_RotationDlg.cxx +++ b/src/TransformationGUI/TransformationGUI_RotationDlg.cxx @@ -233,18 +233,22 @@ void TransformationGUI_RotationDlg::SelectionIntoArgument() myEditCurrentArgument->setText( "" ); QString aName; - if ( myEditCurrentArgument == GroupPoints->LineEdit1 ) { - int aNbSel = GEOMBase::GetNameOfSelectedIObjects( selectedIO(), aName ); - if ( aNbSel < 1) { - myObjects.length( 0 ); + LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + SALOME_ListIO aSelList; + aSelMgr->selectedObjects(aSelList); + + if (myEditCurrentArgument == GroupPoints->LineEdit1) { + int aNbSel = GEOMBase::GetNameOfSelectedIObjects(aSelList, aName); + if (aNbSel < 1) { + myObjects.length(0); return; } - GEOMBase::ConvertListOfIOInListOfGO( selectedIO(), myObjects ); - if ( !myObjects.length() ) + GEOMBase::ConvertListOfIOInListOfGO(aSelList, myObjects); + if (!myObjects.length()) return; } else { - if ( IObjectCount() != 1 ) { + if (aSelList.Extent() != 1) { if ( myEditCurrentArgument == GroupPoints->LineEdit2 && getConstructorId() == 0 ) myAxis = GEOM::GEOM_Object::_nil(); else if ( myEditCurrentArgument == GroupPoints->LineEdit2 && getConstructorId() == 1 ) @@ -257,7 +261,7 @@ void TransformationGUI_RotationDlg::SelectionIntoArgument() } Standard_Boolean testResult = Standard_False; - GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject( firstIObject(), testResult ); + GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject(aSelList.First(), testResult); if ( !testResult || CORBA::is_nil( aSelectedObject ) ) return; @@ -268,9 +272,8 @@ void TransformationGUI_RotationDlg::SelectionIntoArgument() if ( myEditCurrentArgument == GroupPoints->LineEdit2 && getConstructorId() == 0 ) aNeedType = TopAbs_EDGE; - LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); TColStd_IndexedMapOfInteger aMap; - aSelMgr->GetIndexes( firstIObject(), aMap ); + aSelMgr->GetIndexes(aSelList.First(), aMap); if ( aMap.Extent() == 1 ) { int anIndex = aMap( 1 ); if ( aNeedType == TopAbs_EDGE ) diff --git a/src/TransformationGUI/TransformationGUI_ScaleDlg.cxx b/src/TransformationGUI/TransformationGUI_ScaleDlg.cxx index 03619339c..3202cf0a6 100644 --- a/src/TransformationGUI/TransformationGUI_ScaleDlg.cxx +++ b/src/TransformationGUI/TransformationGUI_ScaleDlg.cxx @@ -258,36 +258,39 @@ void TransformationGUI_ScaleDlg::SelectionIntoArgument() myEditCurrentArgument->setText( "" ); QString aName; - if ( myEditCurrentArgument == LineEdit1 ) + LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + SALOME_ListIO aSelList; + aSelMgr->selectedObjects(aSelList); + + if (myEditCurrentArgument == LineEdit1) { - int aNbSel = GEOMBase::GetNameOfSelectedIObjects( selectedIO(), aName ); - if ( aNbSel < 1 ) + int aNbSel = GEOMBase::GetNameOfSelectedIObjects(aSelList, aName); + if (aNbSel < 1) { - myObjects.length( 0 ); + myObjects.length(0); return; } - GEOMBase::ConvertListOfIOInListOfGO( selectedIO(), myObjects ); - if ( !myObjects.length() ) + GEOMBase::ConvertListOfIOInListOfGO(aSelList, myObjects); + if (!myObjects.length()) return; } - else if ( myEditCurrentArgument == LineEdit2 ) + else if (myEditCurrentArgument == LineEdit2) { GEOM::GEOM_Object_var aSelectedObject = GEOM::GEOM_Object::_nil(); - if ( IObjectCount() == 1 ) + if (aSelList.Extent() == 1) { Standard_Boolean testResult = Standard_False; - aSelectedObject = GEOMBase::ConvertIOinGEOMObject( firstIObject(), testResult ); - if ( testResult ) + aSelectedObject = GEOMBase::ConvertIOinGEOMObject(aSelList.First(), testResult); + if (testResult) { - aName = GEOMBase::GetName( aSelectedObject ); + aName = GEOMBase::GetName(aSelectedObject); TopoDS_Shape aShape; - if ( GEOMBase::GetShape( aSelectedObject, aShape, TopAbs_SHAPE ) && !aShape.IsNull() ) + if (GEOMBase::GetShape(aSelectedObject, aShape, TopAbs_SHAPE) && !aShape.IsNull()) { - LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); TColStd_IndexedMapOfInteger aMap; - aSelMgr->GetIndexes( firstIObject(), aMap ); - if ( aMap.Extent() == 1 ) + aSelMgr->GetIndexes(aSelList.First(), aMap); + if (aMap.Extent() == 1) { int anIndex = aMap( 1 ); aName += QString( ":vertex_%1" ).arg( anIndex ); @@ -318,7 +321,7 @@ void TransformationGUI_ScaleDlg::SelectionIntoArgument() myPoint = aSelectedObject; } - myEditCurrentArgument->setText( aName ); + myEditCurrentArgument->setText(aName); displayPreview(); } diff --git a/src/TransformationGUI/TransformationGUI_TranslationDlg.cxx b/src/TransformationGUI/TransformationGUI_TranslationDlg.cxx index 2ba0131c5..164419060 100644 --- a/src/TransformationGUI/TransformationGUI_TranslationDlg.cxx +++ b/src/TransformationGUI/TransformationGUI_TranslationDlg.cxx @@ -274,32 +274,36 @@ void TransformationGUI_TranslationDlg::SelectionIntoArgument() myEditCurrentArgument->setText( "" ); QString aName; - if ( myEditCurrentArgument == GroupPoints->LineEdit1 ) { - int aNbSel = GEOMBase::GetNameOfSelectedIObjects( selectedIO(), aName ); + LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + SALOME_ListIO aSelList; + aSelMgr->selectedObjects(aSelList); + + if (myEditCurrentArgument == GroupPoints->LineEdit1) { + int aNbSel = GEOMBase::GetNameOfSelectedIObjects(aSelList, aName); - if ( aNbSel < 1 ) { - myObjects.length( 0 ); + if (aNbSel < 1) { + myObjects.length(0); return; } - GEOMBase::ConvertListOfIOInListOfGO( selectedIO(), myObjects ); - if ( !myObjects.length() ) + GEOMBase::ConvertListOfIOInListOfGO(aSelList, myObjects); + if (!myObjects.length()) return; } else { - if ( IObjectCount() != 1 ) { - if ( myEditCurrentArgument == GroupPoints->LineEdit2 && getConstructorId() == 1 ) + if (aSelList.Extent() != 1 ) { + if (myEditCurrentArgument == GroupPoints->LineEdit2 && getConstructorId() == 1) myPoint1 = GEOM::GEOM_Object::_nil(); - else if ( myEditCurrentArgument == GroupPoints->LineEdit2 && getConstructorId() == 2 ) + else if (myEditCurrentArgument == GroupPoints->LineEdit2 && getConstructorId() == 2) myVector = GEOM::GEOM_Object::_nil(); - else if ( myEditCurrentArgument == GroupPoints->LineEdit3 ) + else if (myEditCurrentArgument == GroupPoints->LineEdit3) myPoint2 = GEOM::GEOM_Object::_nil(); return; } + + Standard_Boolean testResult = Standard_False; + GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject(aSelList.First(), testResult); - Standard_Boolean testResult = Standard_False;; - GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject( firstIObject(), testResult ); - - if ( !testResult || CORBA::is_nil( aSelectedObject ) ) + if (!testResult || CORBA::is_nil(aSelectedObject)) return; TopoDS_Shape aShape; @@ -310,9 +314,8 @@ void TransformationGUI_TranslationDlg::SelectionIntoArgument() if ( myEditCurrentArgument == GroupPoints->LineEdit2 && getConstructorId() == 2 ) aNeedType = TopAbs_EDGE; - LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); TColStd_IndexedMapOfInteger aMap; - aSelMgr->GetIndexes( firstIObject(), aMap ); + aSelMgr->GetIndexes(aSelList.First(), aMap); if ( aMap.Extent() == 1 ) { int anIndex = aMap( 1 ); @@ -354,7 +357,6 @@ void TransformationGUI_TranslationDlg::SelectionIntoArgument() displayPreview(); } - //================================================================================= // function : LineEditReturnPressed() // purpose : @@ -451,22 +453,26 @@ GEOM::GEOM_IOperations_ptr TransformationGUI_TranslationDlg::createOperation() bool TransformationGUI_TranslationDlg::isValid( QString& /*msg*/ ) { int aConstructorId = getConstructorId(); - - switch ( aConstructorId ) { + + switch (aConstructorId) { case 0: { - Handle(SALOME_InteractiveObject) IO = firstIObject(); - Standard_Boolean testResult; - GEOM::GEOM_Object_var anObject = GEOMBase::ConvertIOinGEOMObject( IO, testResult ); - if ( !testResult || anObject->_is_nil() ) - return false; - - return !( myObjects.length() == 0 ); + //LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + //SALOME_ListIO aSelList; + //aSelMgr->selectedObjects(aSelList); + // + //Handle(SALOME_InteractiveObject) IO = aSelList.First(); + //Standard_Boolean testResult; + //GEOM::GEOM_Object_var anObject = GEOMBase::ConvertIOinGEOMObject(IO, testResult); + //if (!testResult || anObject->_is_nil()) + // return false; + + return !(myObjects.length() == 0); } case 1: - return !( myObjects.length() == 0 || myPoint1->_is_nil() || myPoint2->_is_nil() ); + return !(myObjects.length() == 0 || myPoint1->_is_nil() || myPoint2->_is_nil()); case 2: - return !( myObjects.length() == 0 || myVector->_is_nil() ); + return !( myObjects.length() == 0 || myVector->_is_nil()); default: break; } @@ -494,7 +500,8 @@ bool TransformationGUI_TranslationDlg::execute( ObjectList& objects ) if ( toCreateCopy ) { for ( int i = 0; i < myObjects.length(); i++ ) { myCurrObject = myObjects[i]; - anObj = GEOM::GEOM_ITransformOperations::_narrow( getOperation() )->TranslateDXDYDZCopy( myObjects[i], dx, dy, dz ); + anObj = GEOM::GEOM_ITransformOperations::_narrow( getOperation() )-> + TranslateDXDYDZCopy( myObjects[i], dx, dy, dz ); if ( !anObj->_is_nil() ) objects.push_back( anObj._retn() ); } @@ -502,7 +509,8 @@ bool TransformationGUI_TranslationDlg::execute( ObjectList& objects ) else { for ( int i = 0; i < myObjects.length(); i++ ) { myCurrObject = myObjects[i]; - anObj = GEOM::GEOM_ITransformOperations::_narrow( getOperation() )->TranslateDXDYDZ( myObjects[i], dx, dy, dz ); + anObj = GEOM::GEOM_ITransformOperations::_narrow( getOperation() )-> + TranslateDXDYDZ( myObjects[i], dx, dy, dz ); if ( !anObj->_is_nil() ) objects.push_back( anObj._retn() ); } @@ -515,7 +523,8 @@ bool TransformationGUI_TranslationDlg::execute( ObjectList& objects ) if ( toCreateCopy ) { for ( int i = 0; i < myObjects.length(); i++ ) { myCurrObject = myObjects[i]; - anObj = GEOM::GEOM_ITransformOperations::_narrow( getOperation() )->TranslateTwoPointsCopy( myObjects[i], myPoint1, myPoint2 ); + anObj = GEOM::GEOM_ITransformOperations::_narrow( getOperation() )-> + TranslateTwoPointsCopy( myObjects[i], myPoint1, myPoint2 ); if ( !anObj->_is_nil() ) objects.push_back( anObj._retn() ); } @@ -523,7 +532,8 @@ bool TransformationGUI_TranslationDlg::execute( ObjectList& objects ) else { for ( int i = 0; i < myObjects.length(); i++ ) { myCurrObject = myObjects[i]; - anObj = GEOM::GEOM_ITransformOperations::_narrow( getOperation() )->TranslateTwoPoints( myObjects[i], myPoint1, myPoint2 ); + anObj = GEOM::GEOM_ITransformOperations::_narrow( getOperation() )-> + TranslateTwoPoints( myObjects[i], myPoint1, myPoint2 ); if ( !anObj->_is_nil() ) objects.push_back( anObj._retn() ); } -- 2.39.2