mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#8354 RFT file open : Inconsistent data might lead to crash
Use try/catch to avoid crash from RFT file reader. Avoid reading data when considering if menu items should be visible.
This commit is contained in:
@@ -73,7 +73,30 @@ RimSimWellInView* RicWellLogTools::selectedSimulationWell( int* branchIndex )
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
bool RicWellLogTools::wellHasRftData( const QString& wellName )
|
||||
bool RicWellLogTools::hasRftData()
|
||||
{
|
||||
RimEclipseResultCase* resultCase;
|
||||
std::vector<RimCase*> cases;
|
||||
RimProject::current()->allCases( cases );
|
||||
|
||||
for ( RimCase* rimCase : cases )
|
||||
{
|
||||
if ( ( resultCase = dynamic_cast<RimEclipseResultCase*>( rimCase ) ) )
|
||||
{
|
||||
if ( resultCase->rftReader() )
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
bool RicWellLogTools::hasRftDataForWell( const QString& wellName )
|
||||
{
|
||||
RimEclipseResultCase* resultCase;
|
||||
std::vector<RimCase*> cases;
|
||||
|
||||
@@ -42,7 +42,8 @@ class RicWellLogTools
|
||||
{
|
||||
public:
|
||||
static RimSimWellInView* selectedSimulationWell( int* branchIndex );
|
||||
static bool wellHasRftData( const QString& wellName );
|
||||
static bool hasRftData();
|
||||
static bool hasRftDataForWell( const QString& wellName );
|
||||
static bool isWellPathOrSimWellSelectedInView();
|
||||
static void addWellLogChannelsToPlotTrack( RimWellLogTrack* plotTrack,
|
||||
const std::vector<RimWellLogFileChannel*>& wellLogFileChannels );
|
||||
|
||||
@@ -44,7 +44,7 @@ bool RicAdd3dWellLogRftCurveFeature::isCommandEnabled()
|
||||
RimWellPath* wellPath = caf::SelectionManager::instance()->selectedItemAncestorOfType<RimWellPath>();
|
||||
if ( wellPath )
|
||||
{
|
||||
return RicWellLogTools::wellHasRftData( wellPath->name() );
|
||||
return RicWellLogTools::hasRftData();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@@ -57,6 +57,8 @@ void RicAdd3dWellLogRftCurveFeature::onActionTriggered( bool isChecked )
|
||||
RimWellPath* selectedWellPath = caf::SelectionManager::instance()->selectedItemAncestorOfType<RimWellPath>();
|
||||
if ( !selectedWellPath ) return;
|
||||
|
||||
if ( !RicWellLogTools::hasRftDataForWell( selectedWellPath->name() ) ) return;
|
||||
|
||||
Rim3dWellLogRftCurve* rim3dWellLogRftCurve = new Rim3dWellLogRftCurve();
|
||||
selectedWellPath->add3dWellLogCurve( rim3dWellLogRftCurve );
|
||||
|
||||
|
||||
@@ -59,7 +59,7 @@ bool RicNewWellLogRftCurveFeature::isCommandEnabled()
|
||||
|
||||
if ( simulationWell != nullptr )
|
||||
{
|
||||
return RicWellLogTools::wellHasRftData( simulationWell->name() );
|
||||
return RicWellLogTools::hasRftData();
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
Reference in New Issue
Block a user