Several RFT plot adjustments

* #9923 Call loadDataAndUpdate() after visibility of curves is updated
This will ensure that all zoom ranges are recalculated based on visible curves.

* #9923 Put new segment plots in RFT Plot collection
* #9923 Add "Create Rft Sement Plot" to RFT plot collection
* #9923 Make sure the main window is displayed when required
Make sure the main window is opened and views updated when a grid model is opened from a summary case.

* #9923 Make sure fieldChanged is triggered when required
Exclude field having the target state. If these fields are included, the one and only call to setValueWithFieldChanged() can contain a field with the target state value. When setting a value to a field with the same value, nothing happens and the UI will get an inconsistent state (some curves toggled off are still visible in a plot).
This commit is contained in:
Magne Sjaastad
2023-03-08 07:35:27 +01:00
committed by GitHub
parent 51331facac
commit e2e239fd07
12 changed files with 122 additions and 25 deletions

View File

@@ -542,6 +542,8 @@ caf::CmdFeatureMenuBuilder RimContextCommandBuilder::commandsFromSelection()
else if ( dynamic_cast<RimRftPlotCollection*>( firstUiItem ) )
{
menuBuilder << "RicNewRftPlotFeature";
menuBuilder << "RicNewMultiPhaseRftSegmentPlotFeature";
menuBuilder << "RicNewRftSegmentWellLogPlotFeature";
}
else if ( dynamic_cast<RimPltPlotCollection*>( firstUiItem ) )
{

View File

@@ -204,8 +204,13 @@ const std::vector<RimWellRftPlot*> RimRftPlotCollection::rftPlots() const
std::vector<RimWellRftPlot*> plots;
for ( const auto& plot : m_rftPlots )
{
plots.push_back( plot );
auto wellRftPlot = dynamic_cast<RimWellRftPlot*>( plot.p() );
if ( wellRftPlot )
{
plots.push_back( wellRftPlot );
}
}
return plots;
}
@@ -231,7 +236,7 @@ size_t RimRftPlotCollection::plotCount() const
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimRftPlotCollection::addPlot( gsl::not_null<RimWellRftPlot*> newPlot )
void RimRftPlotCollection::addPlot( gsl::not_null<RimWellLogPlot*> newPlot )
{
m_rftPlots.push_back( newPlot );
}
@@ -239,7 +244,7 @@ void RimRftPlotCollection::addPlot( gsl::not_null<RimWellRftPlot*> newPlot )
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimRftPlotCollection::removePlot( gsl::not_null<RimWellRftPlot*> plot )
void RimRftPlotCollection::removePlot( gsl::not_null<RimWellLogPlot*> plot )
{
m_rftPlots.removeChild( plot );
updateAllRequiredEditors();

View File

@@ -66,14 +66,14 @@ public:
void deleteAllExtractors();
const std::vector<RimWellRftPlot*> rftPlots() const;
void addPlot( gsl::not_null<RimWellRftPlot*> newPlot );
void removePlot( gsl::not_null<RimWellRftPlot*> plot );
void addPlot( gsl::not_null<RimWellLogPlot*> newPlot );
void removePlot( gsl::not_null<RimWellLogPlot*> plot );
void deleteAllPlots() override;
void loadDataAndUpdateAllPlots() override;
size_t plotCount() const override;
private:
caf::PdmChildArrayField<RimWellRftPlot*> m_rftPlots;
caf::PdmChildArrayField<RimWellLogPlot*> m_rftPlots;
cvf::Collection<RigEclipseWellLogExtractor> m_extractors;
cvf::Collection<RigGeoMechWellLogExtractor> m_geomExtractors;
};

View File

@@ -712,10 +712,16 @@ void RimWellLogCurveCommonDataSource::applyDataSourceChanges()
this->applyDataSourceChanges( curves, tracks );
// plot->loadDataAndUpdate() has been called in applyDataSourceChanges(), and this is required before the visibility of tracks and
// curves can be updated. However, if the visibility of curves changes, another loadDataAndUpdate() is required to calculate zoom
// based on visible curves.
for ( auto& track : tracks )
{
track->updateCheckStateBasedOnCurveData();
}
parentPlot->loadDataAndUpdate();
}
}