+bool HYDROGUI_ImportImageOp::isReferenceCorrect() const
+{
+ bool isCorrect = true;
+
+ if( myIsEdit && !myEditedObject.IsNull() )
+ {
+ HYDROGUI_ImportImageDlg* aPanel = (HYDROGUI_ImportImageDlg*)inputPanel();
+ Handle(HYDROData_Image) aRefImageObj = Handle(HYDROData_Image)::DownCast(
+ HYDROGUI_Tool::FindObjectByName( module(), aPanel->getRefImageName(), KIND_IMAGE ) );
+ if( !aRefImageObj.IsNull() )
+ {
+ bool isFoundEdited = false;
+ HYDROData_SequenceOfObjects aRefSeq = aRefImageObj->GetAllReferenceObjects();
+ for ( int i = 1, n = aRefSeq.Length(); i <= n && !isFoundEdited; ++i )
+ {
+ Handle(HYDROData_Entity) anObject = aRefSeq.Value( i );
+ isFoundEdited = anObject->GetName() == myEditedObject->GetName();
+ }
+ isCorrect = !isFoundEdited;
+ }
+ }
+ return isCorrect;
+}
+
+void HYDROGUI_ImportImageOp::apply()
+{
+ HYDROGUI_ImportImageDlg* aPanel = (HYDROGUI_ImportImageDlg*)inputPanel();
+
+ bool aCanApply = isReferenceCorrect();
+ if ( !aCanApply && !myEditedObject.IsNull() )
+ {
+ Handle(HYDROData_Image) aRefImageObj = Handle(HYDROData_Image)::DownCast(
+ HYDROGUI_Tool::FindObjectByName( module(), aPanel->getRefImageName(), KIND_IMAGE ) );
+ if ( !aRefImageObj.IsNull() )
+ aCanApply = SUIT_MessageBox::question( module()->getApp()->desktop(),
+ tr( "CORRECT_INPUT_DATA" ), tr( "CONFIRM_REMOVE_REFERENCE_FROM_IMAGE" ).
+ arg( aRefImageObj->GetName() ).arg( myEditedObject->GetName() ),
+ QMessageBox::Yes | QMessageBox::No, QMessageBox::No ) == QMessageBox::Yes;
+ }
+ if ( aCanApply )
+ HYDROGUI_Operation::apply();
+ else {
+ aPanel->setRefImageName( "" );
+ onRefImageActivated( aPanel->getRefImageName() );
+ }
+}
+