#include "RicfCloneView.h" #include "RiaApplication.h" #include "RiaLogging.h" #include "RicfCreateView.h" #include "Rim3dView.h" #include "RimEclipseCase.h" #include "RimEclipseView.h" #include "RimGeoMechCase.h" #include "RimGeoMechView.h" #include "RimProject.h" #include "Riu3DMainWindowTools.h" #include "cafSelectionManager.h" #include CAF_PDM_SOURCE_INIT( RicfCloneView, "cloneView" ); //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- RicfCloneView::RicfCloneView() { RICF_InitField( &m_viewId, "viewId", -1, "View Id", "", "", "" ); } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- RicfCommandResponse RicfCloneView::execute() { RimProject* project = RiaApplication::instance()->project(); std::vector allViews; project->descendantsIncludingThisOfType( allViews ); for ( Rim3dView* view : allViews ) { if ( view->id() == m_viewId() ) { const RimEclipseView* eclipseView = dynamic_cast( view ); const RimGeoMechView* geoMechView = dynamic_cast( view ); int newViewId = -1; if ( eclipseView ) { RimEclipseCase* eclipseCase = eclipseView->eclipseCase(); RimEclipseView* newEclipseView = eclipseCase->createCopyAndAddView( eclipseView ); newViewId = newEclipseView->id(); newEclipseView->loadDataAndUpdate(); eclipseCase->updateConnectedEditors(); Riu3DMainWindowTools::setExpanded( newEclipseView ); } else if ( geoMechView ) { RimGeoMechCase* geoMechCase = geoMechView->geoMechCase(); RimGeoMechView* newGeoMechView = geoMechCase->createCopyAndAddView( geoMechView ); newViewId = newGeoMechView->id(); view->loadDataAndUpdate(); geoMechCase->updateConnectedEditors(); Riu3DMainWindowTools::setExpanded( view ); } if ( newViewId >= 0 ) { RicfCommandResponse response; response.setResult( new RicfCreateViewResult( newViewId ) ); return response; } } } QString error = QString( "cloneView: Could not clone view with id %1" ).arg( m_viewId() ); RiaLogging::error( error ); return RicfCommandResponse( RicfCommandResponse::COMMAND_ERROR, error ); }