X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROGUI%2FHYDROGUI_DeleteOp.cxx;h=704fa4e34d8b55b88748fa0e440cb34c39cf03f4;hb=5cae7e874afd2fc1b6f61023e8ebd33a933db3c7;hp=46eb2fb52288939184e71af49f5afc1203555b1c;hpb=35a75ba275261aff7c8c48c0d16842dafd455007;p=modules%2Fhydro.git diff --git a/src/HYDROGUI/HYDROGUI_DeleteOp.cxx b/src/HYDROGUI/HYDROGUI_DeleteOp.cxx index 46eb2fb5..704fa4e3 100644 --- a/src/HYDROGUI/HYDROGUI_DeleteOp.cxx +++ b/src/HYDROGUI/HYDROGUI_DeleteOp.cxx @@ -47,12 +47,40 @@ void HYDROGUI_DeleteOp::startOperation() { HYDROGUI_Operation::startOperation(); + HYDROData_SequenceOfObjects aFullSeq; // selected objects with their back-references + QStringList aFullNames; + HYDROData_SequenceOfObjects aSeq = HYDROGUI_Tool::GetSelectedObjects( module() ); if( !aSeq.IsEmpty() ) { + for( Standard_Integer anIndex = 1, aLength = aSeq.Length(); anIndex <= aLength; anIndex++ ) + { + Handle(HYDROData_Entity) anObject = aSeq.Value( anIndex ); + if( !anObject.IsNull() ) + { + aFullSeq.Append( anObject ); + aFullNames.append( anObject->GetName() ); + + // collect the back-references + ObjectKind aKind = anObject->GetKind(); + if( aKind == KIND_IMAGE || aKind == KIND_POLYLINE ) + { + HYDROData_SequenceOfObjects anObjects; + QStringList aNames; + HYDROGUI_Tool::GetObjectBackReferences( module(), anObject, anObjects, aNames ); + aFullSeq.Append( anObjects ); + aFullNames.append( aNames ); + } + } + } + + aFullNames.removeDuplicates(); + aFullNames.sort(); + + QString aList = aFullNames.join( "\n" ); int anAnswer = SUIT_MessageBox::question( module()->getApp()->desktop(), tr( "DELETE_OBJECTS" ), - tr( "CONFIRM_DELETION" ), + tr( "CONFIRM_DELETION" ).arg( aList ), QMessageBox::Yes | QMessageBox::No, QMessageBox::No ); if( anAnswer == QMessageBox::No ) @@ -63,14 +91,14 @@ void HYDROGUI_DeleteOp::startOperation() } startDocOperation(); - for( Standard_Integer anIndex = 1, aLength = aSeq.Length(); anIndex <= aLength; anIndex++ ) + for( Standard_Integer anIndex = 1, aLength = aFullSeq.Length(); anIndex <= aLength; anIndex++ ) { - Handle(HYDROData_Object) anObject = aSeq.Value( anIndex ); - if( !anObject.IsNull() ) + Handle(HYDROData_Entity) anObject = aFullSeq.Value( anIndex ); + if( !anObject.IsNull() && !anObject->IsRemoved() ) anObject->Remove(); } commitDocOperation(); - module()->update( UF_Model | UF_Viewer ); + module()->update( UF_Model | UF_Viewer | UF_OCCViewer ); commit(); }