Files
ResInsight/ApplicationLibCode/CommandFileInterface/RicfCreateView.cpp
T
Kristian Bendiksen bdef98203b #14772 Python: Add Case.create_view as object method and forward createView to it
RimCase_createView creates a 3D view in an Eclipse or GeoMech case and
returns it. RicfCreateView forwards to it and wraps the view id in the
legacy createViewResult. The hand-written Python create_view() wrapper
is removed since the generated method has the same name and signature.
2026-09-22 14:19:23 +02:00

54 lines
1.9 KiB
C++

#include "RicfCreateView.h"
#include "RicfCommandForwarding.h"
#include "Rim3dView.h"
#include "RimCase.h"
#include "RimcCase.h"
#include "cafPdmFieldScriptingCapability.h"
CAF_PDM_SOURCE_INIT( RicfCreateViewResult, "createViewResult" );
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RicfCreateViewResult::RicfCreateViewResult( int viewId /*= -1*/ )
{
CAF_PDM_InitObject( "view_result" );
CAF_PDM_InitField( &this->viewId, "viewId", viewId, "" );
}
CAF_PDM_SOURCE_INIT( RicfCreateView, "createView" );
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RicfCreateView::RicfCreateView()
{
CAF_PDM_InitScriptableField( &m_caseId, "caseId", -1, "Case Id" );
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
caf::PdmScriptResponse RicfCreateView::execute()
{
const QString commandName = classKeyword();
auto rimCase = RicfForwarding::findCase( m_caseId() );
if ( !rimCase ) return RicfForwarding::errorResponse( rimCase.error(), commandName );
RimCase_createView method( rimCase.value() );
auto result = method.execute();
if ( !result ) return RicfForwarding::errorResponse( result.error(), commandName );
auto* view = dynamic_cast<Rim3dView*>( result.value() );
if ( !view ) return RicfForwarding::errorResponse( "Created object is not a view", commandName );
caf::PdmScriptResponse response;
response.setResult( new RicfCreateViewResult( view->id() ) );
return response;
}