X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROGUI%2FHYDROGUI_ImmersibleZoneOp.cxx;h=b6c0fd02b4ab084efd0951c861606f00be946af1;hb=81c9f5cdf82909d0aebd2c491c50fa7516cc80b7;hp=aa0e89cfa1e7dc13975d0a416a0e2400caffd5b5;hpb=8543e637cbb4ae48998c596241fce567a729eb67;p=modules%2Fhydro.git diff --git a/src/HYDROGUI/HYDROGUI_ImmersibleZoneOp.cxx b/src/HYDROGUI/HYDROGUI_ImmersibleZoneOp.cxx index aa0e89cf..b6c0fd02 100644 --- a/src/HYDROGUI/HYDROGUI_ImmersibleZoneOp.cxx +++ b/src/HYDROGUI/HYDROGUI_ImmersibleZoneOp.cxx @@ -28,6 +28,7 @@ #include "HYDROGUI_Shape.h" #include "HYDROGUI_Tool.h" #include "HYDROGUI_UpdateFlags.h" +#include "HYDROGUI_DataObject.h" #include #include @@ -39,14 +40,18 @@ #include #include +#include +#include + #include #include +#include + HYDROGUI_ImmersibleZoneOp::HYDROGUI_ImmersibleZoneOp( HYDROGUI_Module* theModule, const bool theIsEdit ) : HYDROGUI_Operation( theModule ), myIsEdit( theIsEdit ), - myViewManager( 0 ), myPreviewPrs( 0 ) { setName( theIsEdit ? tr( "EDIT_IMMERSIBLE_ZONE" ) : tr( "CREATE_IMMERSIBLE_ZONE" ) ); @@ -91,46 +96,9 @@ void HYDROGUI_ImmersibleZoneOp::startOperation() } } - // collect information about existing closed polylines - QStringList aPolylines; - - HYDROData_Iterator anIter( doc(), KIND_POLYLINEXY ); - for ( ; anIter.More(); anIter.Next() ) - { - Handle(HYDROData_PolylineXY) aPolylineObj = - Handle(HYDROData_PolylineXY)::DownCast( anIter.Current() ); - if ( aPolylineObj.IsNull() )//TODO: || !aPolylineObj->IsClosed() ) - continue; - - QString aPolylineName = aPolylineObj->GetName(); - if ( aPolylineName.isEmpty() ) - continue; - - aPolylines.append( aPolylineName ); - } - - // collect information about existing bathymetries - QStringList aBathymetries; - - anIter = HYDROData_Iterator( doc(), KIND_BATHYMETRY ); - for ( ; anIter.More(); anIter.Next() ) - { - Handle(HYDROData_Bathymetry) aBathymetryObj = - Handle(HYDROData_Bathymetry)::DownCast( anIter.Current() ); - if ( aBathymetryObj.IsNull() ) - continue; - - QString aBathymetryName = aBathymetryObj->GetName(); - if ( aBathymetryName.isEmpty() ) - continue; - - aBathymetries.append( aBathymetryName ); - } - aPanel->setObjectName( anObjectName ); - - aPanel->setPolylineNames( aPolylines ); - aPanel->setBathymetryNames( aBathymetries ); + aPanel->setPolylineNames( HYDROGUI_Tool::FindExistingObjectsNames( doc(), KIND_POLYLINEXY ) ); + aPanel->setBathymetryNames( HYDROGUI_Tool::FindExistingObjectsNames( doc(), KIND_BATHYMETRY ) ); aPanel->blockSignals( false ); @@ -161,7 +129,8 @@ HYDROGUI_InputPanel* HYDROGUI_ImmersibleZoneOp::createInputPanel() const } bool HYDROGUI_ImmersibleZoneOp::processApply( int& theUpdateFlags, - QString& theErrorMsg ) + QString& theErrorMsg, + QStringList& theBrowseObjectsEntries ) { HYDROGUI_ImmersibleZoneDlg* aPanel = ::qobject_cast( inputPanel() ); if ( !aPanel ) @@ -227,9 +196,15 @@ bool HYDROGUI_ImmersibleZoneOp::processApply( int& theUpdateFlags, closePreview(); if( !myIsEdit ) + { module()->setObjectVisible( HYDROGUI_Tool::GetActiveOCCViewId( module() ), aZoneObj, true ); + QString anEntry = HYDROGUI_DataObject::dataObjectEntry( aZoneObj ); + theBrowseObjectsEntries.append( anEntry ); + } - theUpdateFlags = UF_Model | UF_OCCViewer | UF_OCC_Forced; + module()->setIsToUpdate( aZoneObj ); + + theUpdateFlags = UF_Model | UF_OCCViewer | UF_OCC_Forced | UF_VTKViewer; return true; } @@ -240,6 +215,7 @@ void HYDROGUI_ImmersibleZoneOp::onCreatePreview( const QString& thePolylineName if ( !aPanel ) return; + QApplication::setOverrideCursor( Qt::WaitCursor ); TopoDS_Shape aZoneShape; Handle(HYDROData_PolylineXY) aPolyline = Handle(HYDROData_PolylineXY)::DownCast( @@ -247,39 +223,43 @@ void HYDROGUI_ImmersibleZoneOp::onCreatePreview( const QString& thePolylineName if ( !aPolyline.IsNull() ) { aZoneShape = HYDROData_ImmersibleZone::generateTopShape( aPolyline ); + if( aZoneShape.IsNull() ) + printErrorMessage( tr( "ZONE_OBJECT_CANNOT_BE_CREATED" ) ); } LightApp_Application* anApp = module()->getApp(); - if ( !myViewManager ) - myViewManager = ::qobject_cast( - anApp->getViewManager( OCCViewer_Viewer::Type(), true ) ); - - if ( myViewManager && !myPreviewPrs ) + if ( !getPreviewManager() ) + setPreviewManager( ::qobject_cast( + anApp->getViewManager( OCCViewer_Viewer::Type(), true ) ) ); + OCCViewer_ViewManager* aViewManager = getPreviewManager(); + if ( aViewManager && !myPreviewPrs ) { - if ( OCCViewer_Viewer* aViewer = myViewManager->getOCCViewer() ) + if ( OCCViewer_Viewer* aViewer = aViewManager->getOCCViewer() ) { Handle(AIS_InteractiveContext) aCtx = aViewer->getAISContext(); if ( !aCtx.IsNull() ) - myPreviewPrs = new HYDROGUI_Shape( aCtx, NULL ); + myPreviewPrs = new HYDROGUI_Shape( aCtx, NULL, getPreviewZLayer() ); } } - if ( !myViewManager || !myPreviewPrs ) - return; + if ( aViewManager && myPreviewPrs ) + { + QColor aFillingColor = HYDROData_ImmersibleZone::DefaultFillingColor(); + QColor aBorderColor = HYDROData_ImmersibleZone::DefaultBorderColor(); + if ( !myEditedObject.IsNull() ) { + aFillingColor = myEditedObject->GetFillingColor(); + aBorderColor = myEditedObject->GetBorderColor(); + } - QColor aFillingColor = HYDROData_ImmersibleZone::DefaultFillingColor(); - QColor aBorderColor = HYDROData_ImmersibleZone::DefaultBorderColor(); - if ( !myEditedObject.IsNull() ) { - aFillingColor = myEditedObject->GetFillingColor(); - aBorderColor = myEditedObject->GetBorderColor(); + myPreviewPrs->setFillingColor( aFillingColor, false, false ); + myPreviewPrs->setBorderColor( aBorderColor, false, false ); + TopoDS_Face aFace; + if( !aZoneShape.IsNull() ) + aFace = TopoDS::Face( aZoneShape ); + myPreviewPrs->setFace( aFace ); } - myPreviewPrs->setFillingColor( aFillingColor, false, false ); - myPreviewPrs->setBorderColor( aBorderColor, false, false ); - TopoDS_Face aFace; - if( !aZoneShape.IsNull() ) - aFace = TopoDS::Face( aZoneShape ); - myPreviewPrs->setFace( aFace ); + QApplication::restoreOverrideCursor(); } void HYDROGUI_ImmersibleZoneOp::closePreview()