X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROGUI%2FHYDROGUI_ChannelOp.cxx;h=38d16ae440520b49ededb060e2939842a09b3827;hb=f34b90e9e4e02ba65419134d5d37a2e42aecfabf;hp=493cee9ba0bcb73a70727748caab6bb77633a6a8;hpb=491bfd05d834305d30f66d167f98ad147c8de441;p=modules%2Fhydro.git diff --git a/src/HYDROGUI/HYDROGUI_ChannelOp.cxx b/src/HYDROGUI/HYDROGUI_ChannelOp.cxx index 493cee9b..38d16ae4 100644 --- a/src/HYDROGUI/HYDROGUI_ChannelOp.cxx +++ b/src/HYDROGUI/HYDROGUI_ChannelOp.cxx @@ -39,6 +39,7 @@ #include #include +#include HYDROGUI_ChannelOp::HYDROGUI_ChannelOp( HYDROGUI_Module* theModule, const bool theIsEdit ) @@ -68,10 +69,7 @@ void HYDROGUI_ChannelOp::startOperation() aPanel->reset(); - if( myIsEdit ) - myEditedObject = Handle(HYDROData_Channel)::DownCast( HYDROGUI_Tool::GetSelectedObject( module() ) ); - else - myEditedObject = Handle(HYDROData_Channel)::DownCast( doc()->CreateObject( KIND_CHANNEL ) ); + myEditedObject = getObjectToEdit(); QString aSelectedGuideLine, aSelectedProfile; @@ -90,7 +88,24 @@ void HYDROGUI_ChannelOp::startOperation() } // collect information about existing 3d polylines - QStringList aGuideLines = HYDROGUI_Tool::FindExistingObjectsNames( doc(), KIND_POLYLINE ); + QStringList aGuideLines; + QStringList anAllGuideLines = HYDROGUI_Tool::FindExistingObjectsNames( doc(), KIND_POLYLINE ); + foreach( QString aGuideLine, anAllGuideLines ) + { + Handle( HYDROData_Polyline3D ) aPolyline3d = + Handle( HYDROData_Polyline3D )::DownCast( + HYDROGUI_Tool::FindObjectByName( module(), aGuideLine, KIND_POLYLINE ) ); + if( !aPolyline3d.IsNull() ) + { + TopoDS_Shape aShape = aPolyline3d->GetShape3D(); + if( aShape.ShapeType()==TopAbs_WIRE ) + { + TopoDS_Wire aWire = TopoDS::Wire( aShape ); + if( !aWire.Closed() ) + aGuideLines.append( aGuideLine ); + } + } + } // collect information about existing profiles QStringList aProfiles = HYDROGUI_Tool::FindExistingObjectsNames( doc(), KIND_PROFILE ); @@ -108,6 +123,7 @@ void HYDROGUI_ChannelOp::startOperation() onCreatePreview( true ); } + void HYDROGUI_ChannelOp::abortOperation() { erasePreview(); @@ -131,7 +147,7 @@ HYDROGUI_InputPanel* HYDROGUI_ChannelOp::createInputPanel() const } bool HYDROGUI_ChannelOp::processApply( int& theUpdateFlags, - QString& theErrorMsg ) + QString& theErrorMsg ) { HYDROGUI_ChannelDlg* aPanel = ::qobject_cast( inputPanel() ); if ( !aPanel ) @@ -160,7 +176,8 @@ bool HYDROGUI_ChannelOp::processApply( int& theUpdateFlags, myEditedObject->SetName( anObjectName ); - if ( !myIsEdit ) { + if ( !myIsEdit ) + { myEditedObject->SetFillingColor( HYDROData_Channel::DefaultFillingColor() ); myEditedObject->SetBorderColor( HYDROData_Channel::DefaultBorderColor() ); } @@ -170,11 +187,19 @@ bool HYDROGUI_ChannelOp::processApply( int& theUpdateFlags, if( !myIsEdit ) module()->setObjectVisible( HYDROGUI_Tool::GetActiveOCCViewId( module() ), myEditedObject, true ); - theUpdateFlags = UF_Model | UF_OCCViewer | UF_OCC_Forced; + module()->setIsToUpdate( myEditedObject ); + + theUpdateFlags = UF_Model | UF_OCCViewer | UF_OCC_Forced | UF_VTKViewer; return true; } +Handle(HYDROData_Channel) HYDROGUI_ChannelOp::getObjectToEdit() const +{ + return myIsEdit ? Handle(HYDROData_Channel)::DownCast( HYDROGUI_Tool::GetSelectedObject( module() ) ) : + Handle(HYDROData_Channel)::DownCast( doc()->CreateObject( KIND_CHANNEL ) ); +} + void HYDROGUI_ChannelOp::onCreatePreview( const bool theIsInit ) { HYDROGUI_ChannelDlg* aPanel = ::qobject_cast( inputPanel() ); @@ -229,7 +254,7 @@ void HYDROGUI_ChannelOp::onCreatePreview( const bool theIsInit ) if ( !myViewManager || !myPreviewPrs ) return; - myPreviewPrs->update(); + myPreviewPrs->update( true, true ); } void HYDROGUI_ChannelOp::erasePreview()