}
return aList;
}
+
+void HYDROGUI_Tool::GetObjectReferences( const Handle(HYDROData_Image)& theImage,
+ HYDROData_SequenceOfObjects& theRefObjects,
+ QStringList& theRefNames )
+{
+ if( theImage.IsNull() )
+ return;
+
+ for( int anIndex = 0, aNbRef = theImage->NbReferences(); anIndex < aNbRef; anIndex++ )
+ {
+ Handle(HYDROData_Object) aRefObj = theImage->Reference( anIndex );
+ if( !aRefObj.IsNull() && !aRefObj->IsRemoved() )
+ {
+ QString aName = aRefObj->GetName();
+ if( !theRefNames.contains( aName ) )
+ {
+ theRefObjects.Append( aRefObj );
+ theRefNames.append( aRefObj->GetName() );
+ if( aRefObj->GetKind() == KIND_IMAGE )
+ {
+ Handle(HYDROData_Image) aRefImage = Handle(HYDROData_Image)::DownCast( aRefObj );
+ if( !aRefImage.IsNull() )
+ GetObjectReferences( aRefImage, theRefObjects, theRefNames );
+ }
+ }
+ }
+ }
+}
+
+void HYDROGUI_Tool::GetObjectBackReferences( HYDROGUI_Module* theModule,
+ const Handle(HYDROData_Object)& theObj,
+ HYDROData_SequenceOfObjects& theBackRefObjects,
+ QStringList& theBackRefNames )
+{
+ if( theObj.IsNull() )
+ return;
+
+ Handle(HYDROData_Document) aDocument = HYDROData_Document::Document( theModule->getStudyId() );
+ if( aDocument.IsNull() )
+ return;
+
+ QString aName = theObj->GetName();
+
+ HYDROData_Iterator anIterator( aDocument, KIND_IMAGE );
+ for( ; anIterator.More(); anIterator.Next() )
+ {
+ Handle(HYDROData_Image) anImage = Handle(HYDROData_Image)::DownCast( anIterator.Current() );
+ if( !anImage.IsNull() )
+ {
+ HYDROData_SequenceOfObjects aRefObjects;
+ QStringList aRefNames;
+ GetObjectReferences( anImage, aRefObjects, aRefNames );
+ if( aRefNames.contains( aName ) )
+ {
+ theBackRefObjects.Append( anImage );
+ theBackRefNames.append( anImage->GetName() );
+ }
+ }
+ }
+}