X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROGUI%2FHYDROGUI_ProfileInterpolateOp.cxx;h=3bfb229203d426a8ee7b993b66ac36ad8f7fd463;hb=7bc13643f345b813472c30c65307ea78c12df428;hp=7caefc3b9a22c621b75f3b40431c67b9bb0df118;hpb=d8b6bd16c744f2704c01fc83f9426aea1849f659;p=modules%2Fhydro.git diff --git a/src/HYDROGUI/HYDROGUI_ProfileInterpolateOp.cxx b/src/HYDROGUI/HYDROGUI_ProfileInterpolateOp.cxx index 7caefc3b..3bfb2292 100644 --- a/src/HYDROGUI/HYDROGUI_ProfileInterpolateOp.cxx +++ b/src/HYDROGUI/HYDROGUI_ProfileInterpolateOp.cxx @@ -1,8 +1,4 @@ -// Copyright (C) 2007-2015 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// +// Copyright (C) 2014-2015 EDF-R&D // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either @@ -42,8 +38,9 @@ #include #include -#include +#include #include +#include #include #include @@ -68,11 +65,14 @@ void HYDROGUI_ProfileInterpolateOp::startOperation() { HYDROGUI_Operation::startOperation(); - HYDROGUI_ProfileInterpolateDlg* aPanel = ::qobject_cast( inputPanel() ); - if ( aPanel ) + if ( isApplyAndClose() ) { + HYDROGUI_ProfileInterpolateDlg* aPanel = ::qobject_cast( inputPanel() ); + if ( aPanel ) + { aPanel->reset(); aPanel->setInterpolators( interpolators() ); + } } } @@ -141,12 +141,12 @@ bool HYDROGUI_ProfileInterpolateOp::processApply( int& theUpdateFlags, QString& commitDocOperation(); else { - errMessage = tr( "CALCULATE_ERROR" ), QString( anIterp->GetErrorMessage().c_str() ); + errMessage = tr( "CALCULATE_ERROR" ), QString( HYDROGUI_Tool::ToQString( anIterp->GetErrorMessage() ) ); abortDocOperation(); } } else - errMessage = tr( "CANT_GET_RIVER_OBJECT" ).arg( aDlg->river() ); + errMessage = tr( "CANT_GET_STREAM_OBJECT" ).arg( aDlg->river() ); if ( !errMessage.isEmpty() ) QMessageBox::critical( aDlg->topLevelWidget(), tr( "INTERPOLATION_ERROR" ), errMessage, QMessageBox::Ok ); @@ -154,7 +154,12 @@ bool HYDROGUI_ProfileInterpolateOp::processApply( int& theUpdateFlags, QString& commit(); } - return errMessage.isEmpty(); + bool res = errMessage.isEmpty(); + + if ( res ) + theUpdateFlags = UF_Model | UF_OCCViewer | UF_OCC_Forced | UF_VTKViewer; + + return res; } void HYDROGUI_ProfileInterpolateOp::updatePreview() @@ -184,7 +189,7 @@ void HYDROGUI_ProfileInterpolateOp::updatePreview() { myPreview = new AIS_Shape( aShape ); myPreview->SetColor( Quantity_NOC_RED ); - aCtx->Display( myPreview, 0, -1, false ); + aCtx->Display( myPreview, 1, -1, false ); } } } @@ -202,24 +207,19 @@ void HYDROGUI_ProfileInterpolateOp::updateInterpolator( HYDROData_IProfilesInter theInt->SetResultProfilesNumber( aDlg->profileNumber() ); theInt->SetProfiles( profile( aDlg->profileStart() ), profile( aDlg->profileFinish() ) ); ParamsList aParams = parameters( aDlg->interpolatorParameters() ); - for ( ParamsList::Iterator it = aParams.begin(); it != aParams.end(); ++it ) - theInt->SetParameter( (*it).first.toStdString(), (*it).second.toStdString() ); + for ( ParamsList::Iterator it = aParams.begin(); it != aParams.end(); ++it ) { + theInt->SetParameter( HYDROGUI_Tool::ToAsciiString( (*it).first ), + HYDROGUI_Tool::ToAsciiString( (*it).second ) ); + } } -std::vector HYDROGUI_ProfileInterpolateOp::profile( const QString& theName ) const +HYDROData_Profile::ProfilePoints HYDROGUI_ProfileInterpolateOp::profile( const QString& theName ) const { - std::vector aPoints; + HYDROData_Profile::ProfilePoints aPoints; Handle(HYDROData_Profile) aProf = Handle(HYDROData_Profile)::DownCast( HYDROGUI_Tool::FindObjectByName( module(), theName, KIND_PROFILE ) ); if ( !aProf.IsNull() ) { - HYDROData_Profile::ProfilePoints aPntList = aProf->GetProfilePoints(); - for ( int i = aPntList.Lower(); i <= aPntList.Upper(); i++ ) - { - HYDROData_Profile::ProfilePoint aPnt = aPntList.Value( i ); - aPoints.push_back( aPnt.X() ); - aPoints.push_back( aPnt.Y() ); - aPoints.push_back( aPnt.Z() ); - } + aPoints = aProf->GetProfilePoints(); } return aPoints; } @@ -264,9 +264,11 @@ QStringList HYDROGUI_ProfileInterpolateOp::interpolators() const QStringList aNames; if ( anIFactory ) { - std::vector iNames = anIFactory->GetInterpolatorNames(); - for ( std::vector::iterator it = iNames.begin(); it != iNames.end(); ++it ) - aNames.append( (*it).c_str() ); + NCollection_Sequence iNames = anIFactory->GetInterpolatorNames(); + for ( int i = 1, n = iNames.Size(); i <= n; ++i ) { + const TCollection_AsciiString& anInterpName = iNames.Value( i ); + aNames.append( HYDROGUI_Tool::ToQString( anInterpName ) ); + } } return aNames; @@ -281,7 +283,7 @@ HYDROData_IProfilesInterpolator* HYDROGUI_ProfileInterpolateOp::interpolator( co HYDROData_IProfilesInterpolator* aRes = 0; if ( anIFactory ) - aRes = anIFactory->GetInterpolator( theName.toStdString() ); + aRes = anIFactory->GetInterpolator( HYDROGUI_Tool::ToAsciiString( theName ) ); return aRes; } @@ -294,10 +296,8 @@ TopoDS_Shape HYDROGUI_ProfileInterpolateOp::previewShape( HYDROData_IProfilesInt aBuilder.MakeCompound( aPreviewShape ); for ( int i = 0; i < theInterp->GetCalculatedProfilesNumber(); i++ ) { - NCollection_Sequence pointSeq; - std::vector aPoints = theInterp->GetResultProfile( i ); - for ( int i = 0; i < (int) aPoints.size(); i += 3 ) - pointSeq.Append( gp_XYZ( aPoints[i], aPoints[i+1], aPoints[i+2] ) ); + NCollection_Sequence pointSeq = theInterp->GetResultProfilePoints( i ); + TopoDS_Shape aWire = HYDROData_PolylineXY::BuildWire( HYDROData_IPolyline::SECTION_SPLINE, false, pointSeq ); if ( !aWire.IsNull() ) aBuilder.Add( aPreviewShape, aWire ); @@ -314,7 +314,7 @@ void HYDROGUI_ProfileInterpolateOp::onInterpolatorChanged( const QString& theInt if ( !aPanel || !anInterp ) return; - aPanel->setInterpolatorDescription( QString( anInterp->GetDescription().c_str() ) ); + aPanel->setInterpolatorDescription( HYDROGUI_Tool::ToQString( anInterp->GetDescription() ) ); updatePreview(); } @@ -349,7 +349,22 @@ void HYDROGUI_ProfileInterpolateOp::onRiverChanged( const QString& theRiver ) Handle(AIS_Shape) aPrs = new AIS_Shape( aProfile->GetShape3D() ); aPrs->SetOwner( aProfile ); aPrs->SetColor( Quantity_NOC_BLACK ); - aCtx->Display( aPrs, 0, 0, false ); + aCtx->Display( aPrs, 1, 0, false ); + } + } + OCCViewer_ViewManager* vm = aDlg->viewManager(); + if ( vm ) + { + QVector winList = vm->getViews(); + for ( QVector::iterator it = winList.begin(); it != winList.end(); ++it ) + { + OCCViewer_ViewWindow* occWin = ::qobject_cast( *it ); + if ( occWin ) + { + OCCViewer_ViewPort3d* vp = occWin->getViewPort(); + if ( vp ) + vp->fitAll(); + } } } }