HYDROGUI_StreamOp::HYDROGUI_StreamOp( HYDROGUI_Module* theModule, bool theIsEdit )
: HYDROGUI_Operation( theModule ),
myIsEdit( theIsEdit ),
- myViewManager( NULL ),
myPreviewPrs( NULL )
{
setName( theIsEdit ? tr( "EDIT_STREAM" ) : tr( "CREATE_STREAM" ) );
// Get/create the edited object
if( myIsEdit ) {
myEditedObject = Handle(HYDROData_Stream)::DownCast( HYDROGUI_Tool::GetSelectedObject( module() ) );
+ if ( !myEditedObject.IsNull() && myEditedObject->IsMustBeUpdated() ) {
+ myEditedObject->Update();
+ }
} else {
myEditedObject = Handle(HYDROData_Stream)::DownCast( doc()->CreateObject( KIND_STREAM ) );
}
module()->setObjectVisible( HYDROGUI_Tool::GetActiveOCCViewId( module() ), myEditedObject, true );
}
+ module()->setIsToUpdate( myEditedObject );
+
// Set update flags
- theUpdateFlags = UF_Model | UF_OCCViewer | UF_OCC_Forced;
+ theUpdateFlags = UF_Model | UF_OCCViewer | UF_OCC_Forced | UF_VTKViewer;
return true;
}
}
LightApp_Application* anApp = module()->getApp();
- if ( !myViewManager ) {
- myViewManager = ::qobject_cast<OCCViewer_ViewManager*>(
- anApp->getViewManager( OCCViewer_Viewer::Type(), true ) );
- }
+ if ( !getPreviewManager() )
+ setPreviewManager( ::qobject_cast<OCCViewer_ViewManager*>(
+ anApp->getViewManager( OCCViewer_Viewer::Type(), true ) ) );
- if ( myViewManager && !myPreviewPrs ) {
- if ( OCCViewer_Viewer* aViewer = myViewManager->getOCCViewer() ) {
+ OCCViewer_ViewManager* aViewManager = getPreviewManager();
+ if ( aViewManager && !myPreviewPrs ) {
+ if ( OCCViewer_Viewer* aViewer = aViewManager->getOCCViewer() ) {
Handle(AIS_InteractiveContext) aCtx = aViewer->getAISContext();
if ( !aCtx.IsNull() ) {
- myPreviewPrs = new HYDROGUI_Shape( aCtx, myEditedObject );
+ myPreviewPrs = new HYDROGUI_Shape( aCtx, myEditedObject, getPreviewZLayer() );
}
}
}
if ( myPreviewPrs ) {
- myPreviewPrs->update();
+ myPreviewPrs->update( true );
}
}
Handle(HYDROData_Profile)::DownCast( aVerifiedProfiles.Value( i ) );
myEditedObject->AddProfile( aProfile );
}
- myEditedObject->Update();
+ myEditedObject->UpdatePrs();
// Update the panel
updatePanelData();
if ( isRemoved ) {
// Update the edited stream object
- myEditedObject->Update();
+ myEditedObject->UpdatePrs();
// Update the panel
updatePanelData();
} else {
// Set axis
myEditedObject->SetHydraulicAxis( anAxis );
- myEditedObject->Update();
+ myEditedObject->UpdatePrs();
// Update the panel
updatePanelData();
void HYDROGUI_StreamOp::updatePanelData()
{
HYDROGUI_StreamDlg* aPanel = ::qobject_cast<HYDROGUI_StreamDlg*>( inputPanel() );
- if ( !aPanel ) {
+ if ( !aPanel || myEditedObject.IsNull() ) {
return;
}