X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROGUI%2FHYDROGUI_GeoreferencementOp.cxx;h=9c7ef5c2158b113852a2f805852a78d976b77d4d;hb=d02cf392c2c47232c9301a02365cd25e9f2fe510;hp=a3b5295ee8a85108ec46ab0aa04ebbcbd53e2a5c;hpb=fcece92742680e708f87352c32597ec2d84bfe2f;p=modules%2Fhydro.git diff --git a/src/HYDROGUI/HYDROGUI_GeoreferencementOp.cxx b/src/HYDROGUI/HYDROGUI_GeoreferencementOp.cxx index a3b5295e..9c7ef5c2 100644 --- a/src/HYDROGUI/HYDROGUI_GeoreferencementOp.cxx +++ b/src/HYDROGUI/HYDROGUI_GeoreferencementOp.cxx @@ -115,9 +115,10 @@ HYDROGUI_InputPanel* HYDROGUI_GeoreferencementOp::createInputPanel() const } bool HYDROGUI_GeoreferencementOp::processApply( int& theUpdateFlags, - QString& theErrorMsg ) + QString& theErrorMsg, + QStringList& theBrowseObjectsEntries ) { - theUpdateFlags = UF_Model | UF_OCCViewer | UF_OCC_Forced; + theUpdateFlags = UF_Model | UF_OCCViewer | UF_OCC_Forced | UF_VTKViewer | UF_VTK_Forced | UF_VTK_Init; return store( theErrorMsg ); } @@ -152,12 +153,23 @@ void HYDROGUI_GeoreferencementOp::onModeActivated( const int theActualMode ) SUIT_MessageBox::Yes) == SUIT_MessageBox::Yes; } // Store modifications if needed - if ( isToStore && !store( anErrorMsg ) ) { - anErrorMsg.append( "\n" + tr( "INPUT_VALID_DATA" ) ); - SUIT_MessageBox::critical( module()->getApp()->desktop(), - tr( "INSUFFICIENT_INPUT_DATA" ), - anErrorMsg ); - return; + if ( isToStore ) + { + startDocOperation(); + if ( !store( anErrorMsg ) ) + { + abortDocOperation(); + + anErrorMsg.append( "\n" + tr( "INPUT_VALID_DATA" ) ); + SUIT_MessageBox::critical( module()->getApp()->desktop(), + tr( "INSUFFICIENT_INPUT_DATA" ), + anErrorMsg ); + return; + } + else + { + commitDocOperation(); + } } aPanel->setMode( theActualMode ); @@ -203,6 +215,8 @@ bool HYDROGUI_GeoreferencementOp::store( QString& theErrorMsg ) { // Clear the error string theErrorMsg.clear(); + + HYDROGUI_Module* aModule = module(); // Get the panel HYDROGUI_GeoreferencementDlg* aPanel = @@ -233,18 +247,21 @@ bool HYDROGUI_GeoreferencementOp::store( QString& theErrorMsg ) HYDROGUI_Tool::FindObjectByName( module(), aGeoData.Name, KIND_PROFILE ) ); if ( !aProfile.IsNull() ) { if ( !aGeoData.isEmpty ) { - aProfile->SetLeftPoint( gp_XY( aGeoData.Xg, aGeoData.Yg ) ); - aProfile->SetRightPoint( gp_XY( aGeoData.Xd, aGeoData.Yd ) ); + if ( !aProfile->IsValid() ) // Show the profile after it became valid + aModule->setObjectVisible( HYDROGUI_Tool::GetActiveOCCViewId( aModule ), aProfile, true ); + + aProfile->SetLeftPoint( gp_XY( aGeoData.Xg, aGeoData.Yg ), false ); + aProfile->SetRightPoint( gp_XY( aGeoData.Xd, aGeoData.Yd ), false ); } else { aProfile->Invalidate(); + aModule->setObjectVisible( HYDROGUI_Tool::GetActiveOCCViewId( aModule ), aProfile, false ); } aProfile->Update(); } } - module()->update( UF_Model | UF_OCCViewer | UF_OCC_Forced ); - commitDocOperation(); // TODO: analyze the consequences + aModule->update( UF_Model | UF_OCCViewer | UF_OCC_Forced ); return true; } @@ -283,7 +300,8 @@ void HYDROGUI_GeoreferencementOp::setPanelData( HYDROGUI_GeoreferencementDlg::ProfileGeoData aGeoData( aProfile->GetName() ); gp_XY aFirstPoint, aLastPoint; - if ( aProfile->GetLeftPoint( aFirstPoint ) && aProfile->GetRightPoint( aLastPoint ) ) { + if ( aProfile->GetLeftPoint( aFirstPoint, false ) && + aProfile->GetRightPoint( aLastPoint, false ) ) { aGeoData = HYDROGUI_GeoreferencementDlg::ProfileGeoData( aGeoData.Name, aFirstPoint.X(), aFirstPoint.Y(),