X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROGUI%2FHYDROGUI_CalculationOp.cxx;h=f43261a3465ae8571b594e530a3129d0d5d12264;hb=6d592627e88a395398a02d7b884796e85331c1c1;hp=4cb4e9c85299ce62e45aed1d1376b312114b151a;hpb=317431d65778c8a444ad012b356e1f3c2ff6c038;p=modules%2Fhydro.git diff --git a/src/HYDROGUI/HYDROGUI_CalculationOp.cxx b/src/HYDROGUI/HYDROGUI_CalculationOp.cxx index 4cb4e9c8..f43261a3 100644 --- a/src/HYDROGUI/HYDROGUI_CalculationOp.cxx +++ b/src/HYDROGUI/HYDROGUI_CalculationOp.cxx @@ -543,6 +543,35 @@ bool HYDROGUI_CalculationOp::confirmModeChange() const return isConfirmed; } +bool HYDROGUI_CalculationOp::confirmContinueWithWarning( const HYDROData_Warning& theWarning ) const +{ + HYDROData_WarningType aType = theWarning.Type; + if ( aType == WARN_OK ) { + return true; + } + + QString aTitle; + QString aMsg; + switch ( aType ) + { + case WARN_EMPTY_REGIONS: + aTitle = tr( "EMPTY_REGIONS" ); + aMsg = tr( "CONFIRM_CONTINUE_WITH_OBJECTS_NOT_INCLUDED_TO_REGION" ).arg( theWarning.Data ); + break; + default: + aTitle = tr( "WARNING" ); + aMsg = theWarning.Data; + } + + + int anAnswer = SUIT_MessageBox::warning( module()->getApp()->desktop(), + aTitle, aMsg, + QMessageBox::Yes | QMessageBox::No, + QMessageBox::No ); + + return ( anAnswer == QMessageBox::Yes ); +} + bool HYDROGUI_CalculationOp::processApply( int& theUpdateFlags, QString& theErrorMsg, QStringList& theBrowseObjectsEntries ) @@ -565,6 +594,20 @@ bool HYDROGUI_CalculationOp::processApply( int& theUpdateFlags, void HYDROGUI_CalculationOp::onApply() { + // Check warnings + HYDROData_Warning aWarning = myEditedObject->GetLastWarning(); + if ( aWarning.Type != WARN_OK ) { + if ( !confirmContinueWithWarning( aWarning ) ) { + // Go back to the first page + HYDROGUI_CalculationDlg* aPanel = + ::qobject_cast( inputPanel() ); + if ( aPanel ) { + aPanel->onFirstPage(); + } + return; + } + } + QApplication::setOverrideCursor( Qt::WaitCursor ); int anUpdateFlags = 0; @@ -632,9 +675,13 @@ void HYDROGUI_CalculationOp::onNext( const int theIndex ) // automatic names generation for regions and zones myEditedObject->SetName( aNewCaseName ); - // Set objects in the specified order + // Clear rules + myEditedObject->ClearRules(); + + // Set parameters for automatic mode int aMode = aPanel->getMode(); if ( aMode == HYDROData_CalculationCase::AUTOMATIC ) { + // Set objects in the specified order myEditedObject->RemoveGeometryObjects(); foreach ( const QString& aName, aPanel->getAllGeomObjects() ) { Handle(HYDROData_Object) anObject = Handle(HYDROData_Object)::DownCast( @@ -645,16 +692,15 @@ void HYDROGUI_CalculationOp::onNext( const int theIndex ) myEditedObject->AddGeometryObject( anObject ); } - } - aPanel->setMoveZonesEnabled( aMode == HYDROData_CalculationCase::MANUAL ); - // Set priority rules - myEditedObject->ClearRules(); - foreach ( const HYDROData_CustomRule& aRule, aPanel->getRules() ) { - myEditedObject->AddRule( aRule.Object1, aRule.Priority, - aRule.Object2, aRule.MergeType ); + // Set priority rules + foreach ( const HYDROData_CustomRule& aRule, aPanel->getRules() ) { + myEditedObject->AddRule( aRule.Object1, aRule.Priority, + aRule.Object2, aRule.MergeType ); + } } - + aPanel->setMoveZonesEnabled( aMode == HYDROData_CalculationCase::MANUAL ); + if ( myEditedObject->IsMustBeUpdated() ) { myShowZones = true;