mirror of
https://github.com/OPM/ResInsight.git
synced 2026-10-25 06:38:13 -05:00
#12614 Histogram: make it easier to create histograms.
This commit is contained in:
1 parent
f6ca88f54b
commit
35a77b9778
7 files changed
+95
-26
No files matched your search
@@ -45,7 +45,9 @@ void RicNewDefaultHistogramPlotFeature::onActionTriggered( bool isChecked )
|
||||
RimHistogramMultiPlot* multiPlot = dynamic_cast<RimHistogramMultiPlot*>( caf::SelectionManager::instance()->selectedItem() );
|
||||
if ( multiPlot )
|
||||
{
|
||||
RicHistogramPlotTools::addNewHistogramPlot( multiPlot );
|
||||
auto dataSourceType = caf::AppEnum<RicHistogramPlotTools::DataSourceType>::fromText( userData().toString() );
|
||||
auto plot = RicHistogramPlotTools::addNewHistogramPlot( multiPlot );
|
||||
RicHistogramPlotTools::createDefaultHistogramCurve( plot, dataSourceType );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -52,25 +52,11 @@ bool RicNewHistogramCurveFeature::isCommandEnabled() const
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RicNewHistogramCurveFeature::onActionTriggered( bool isChecked )
|
||||
{
|
||||
auto getDataSourceFromString = []( const QString& dataSourceType ) -> RimHistogramDataSource*
|
||||
{
|
||||
if ( dataSourceType == "Ensemble Parameter" )
|
||||
return new RimEnsembleParameterHistogramDataSource();
|
||||
else if ( dataSourceType == "Grid Statistics" )
|
||||
return new RimGridStatisticsHistogramDataSource();
|
||||
else if ( dataSourceType == "Summary Vector" )
|
||||
return new RimEnsembleSummaryVectorHistogramDataSource();
|
||||
else if ( dataSourceType == "Ensemble Fracture Statistics" )
|
||||
return new RimEnsembleFractureHistogramDataSource();
|
||||
return nullptr;
|
||||
};
|
||||
|
||||
RimHistogramPlot* plot = selectedHistogramPlot();
|
||||
if ( plot )
|
||||
{
|
||||
RimHistogramDataSource* dataSource = getDataSourceFromString( userData().toString() );
|
||||
dataSource->setDefaults();
|
||||
RicHistogramPlotTools::createHistogramCurve( plot, dataSource );
|
||||
auto dataSourceType = caf::AppEnum<RicHistogramPlotTools::DataSourceType>::fromText( userData().toString() );
|
||||
RicHistogramPlotTools::createDefaultHistogramCurve( plot, dataSourceType );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -50,7 +50,10 @@ void RicNewHistogramMultiPlotFeature::onActionTriggered( bool isChecked )
|
||||
|
||||
if ( RimHistogramMultiPlotCollection* coll = selectedItems[0] )
|
||||
{
|
||||
RicHistogramPlotTools::addNewHistogramMultiplot( coll );
|
||||
auto dataSourceType = caf::AppEnum<RicHistogramPlotTools::DataSourceType>::fromText( userData().toString() );
|
||||
auto multiplot = RicHistogramPlotTools::addNewHistogramMultiplot( coll );
|
||||
auto plot = RicHistogramPlotTools::addNewHistogramPlot( multiplot );
|
||||
RicHistogramPlotTools::createDefaultHistogramCurve( plot, dataSourceType );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -18,6 +18,10 @@
|
||||
|
||||
#include "RicHistogramPlotTools.h"
|
||||
|
||||
#include "Histogram/RimEnsembleFractureHistogramDataSource.h"
|
||||
#include "Histogram/RimEnsembleParameterHistogramDataSource.h"
|
||||
#include "Histogram/RimEnsembleSummaryVectorHistogramDataSource.h"
|
||||
#include "Histogram/RimGridStatisticsHistogramDataSource.h"
|
||||
#include "Histogram/RimHistogramCurve.h"
|
||||
#include "Histogram/RimHistogramDataSource.h"
|
||||
#include "Histogram/RimHistogramMultiPlot.h"
|
||||
@@ -32,6 +36,53 @@
|
||||
#include "RiuPlotMainWindow.h"
|
||||
#include "RiuPlotMainWindowTools.h"
|
||||
|
||||
namespace caf
|
||||
{
|
||||
template <>
|
||||
void caf::AppEnum<RicHistogramPlotTools::DataSourceType>::setUp()
|
||||
{
|
||||
addItem( RicHistogramPlotTools::DataSourceType::ENSEMBLE_PARAMETER, "ENSEMBLE_PARAMETER", "Ensemble Parameter" );
|
||||
addItem( RicHistogramPlotTools::DataSourceType::GRID_STATISTICS, "GRID_STATISTICS", "Grid Statistics" );
|
||||
addItem( RicHistogramPlotTools::DataSourceType::SUMMARY_VECTOR, "SUMMARY_VECTOR", "Summary Vector" );
|
||||
addItem( RicHistogramPlotTools::DataSourceType::ENSEMBLE_FRACTURE_STATISTICS, "ENSEMBLE_FRACTURE_STATISTICS", "Ensemble Fracture Statistics" );
|
||||
setDefault( RicHistogramPlotTools::DataSourceType::SUMMARY_VECTOR );
|
||||
}
|
||||
}; // namespace caf
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
std::vector<RicHistogramPlotTools::DataSourceType> RicHistogramPlotTools::allDataSourceTypes()
|
||||
{
|
||||
return { RicHistogramPlotTools::DataSourceType::ENSEMBLE_PARAMETER,
|
||||
RicHistogramPlotTools::DataSourceType::GRID_STATISTICS,
|
||||
RicHistogramPlotTools::DataSourceType::SUMMARY_VECTOR,
|
||||
RicHistogramPlotTools::DataSourceType::ENSEMBLE_FRACTURE_STATISTICS };
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RicHistogramPlotTools::createDefaultHistogramCurve( RimHistogramPlot* plot, RicHistogramPlotTools::DataSourceType dataSourceType )
|
||||
{
|
||||
auto getDataSourceFromType = []( DataSourceType dataSourceType ) -> RimHistogramDataSource*
|
||||
{
|
||||
if ( dataSourceType == DataSourceType::ENSEMBLE_PARAMETER )
|
||||
return new RimEnsembleParameterHistogramDataSource();
|
||||
else if ( dataSourceType == DataSourceType::GRID_STATISTICS )
|
||||
return new RimGridStatisticsHistogramDataSource();
|
||||
else if ( dataSourceType == DataSourceType::SUMMARY_VECTOR )
|
||||
return new RimEnsembleSummaryVectorHistogramDataSource();
|
||||
else if ( dataSourceType == DataSourceType::ENSEMBLE_FRACTURE_STATISTICS )
|
||||
return new RimEnsembleFractureHistogramDataSource();
|
||||
return nullptr;
|
||||
};
|
||||
|
||||
RimHistogramDataSource* dataSource = getDataSourceFromType( dataSourceType );
|
||||
dataSource->setDefaults();
|
||||
return createHistogramCurve( plot, dataSource );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
||||
@@ -18,6 +18,8 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <vector>
|
||||
|
||||
class RimHistogramDataSource;
|
||||
class RimHistogramPlot;
|
||||
class RimHistogramMultiPlot;
|
||||
@@ -29,6 +31,17 @@ class RimHistogramMultiPlotCollection;
|
||||
class RicHistogramPlotTools
|
||||
{
|
||||
public:
|
||||
enum class DataSourceType
|
||||
{
|
||||
ENSEMBLE_PARAMETER,
|
||||
GRID_STATISTICS,
|
||||
SUMMARY_VECTOR,
|
||||
ENSEMBLE_FRACTURE_STATISTICS
|
||||
};
|
||||
|
||||
static std::vector<DataSourceType> allDataSourceTypes();
|
||||
|
||||
static void createDefaultHistogramCurve( RimHistogramPlot* plot, DataSourceType dataSourceType );
|
||||
static void createHistogramCurve( RimHistogramPlot* plot, RimHistogramDataSource* dataSource );
|
||||
|
||||
static RimHistogramMultiPlot* addNewHistogramMultiplot();
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
|
||||
#include "RimHistogramMultiPlotCollection.h"
|
||||
|
||||
#include "RicHistogramPlotTools.h"
|
||||
#include "RimHistogramMultiPlot.h"
|
||||
#include "RimMainPlotCollection.h"
|
||||
#include "RimProject.h"
|
||||
@@ -94,5 +95,12 @@ size_t RimHistogramMultiPlotCollection::plotCount() const
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimHistogramMultiPlotCollection::appendMenuItems( caf::CmdFeatureMenuBuilder& menuBuilder ) const
|
||||
{
|
||||
menuBuilder.addCmdFeature( "RicNewHistogramMultiPlotFeature", "New Histogram Plot" );
|
||||
menuBuilder.subMenuStart( "New Histogram Plot" );
|
||||
|
||||
for ( RicHistogramPlotTools::DataSourceType dataSourceType : RicHistogramPlotTools::allDataSourceTypes() )
|
||||
{
|
||||
caf::AppEnum<RicHistogramPlotTools::DataSourceType> dstEnum( dataSourceType );
|
||||
menuBuilder.addCmdFeatureWithUserData( "RicNewHistogramMultiPlotFeature", dstEnum.uiText(), QVariant( dstEnum.text() ) );
|
||||
}
|
||||
menuBuilder.subMenuEnd();
|
||||
}
|
||||
@@ -163,6 +163,7 @@
|
||||
#include "RiuMainWindow.h"
|
||||
|
||||
#include "OctaveScriptCommands/RicExecuteScriptForCasesFeature.h"
|
||||
#include "RicHistogramPlotTools.h"
|
||||
#include "ToggleCommands/RicToggleItemsFeatureImpl.h"
|
||||
|
||||
#include "cafCmdFeature.h"
|
||||
@@ -979,19 +980,24 @@ caf::CmdFeatureMenuBuilder RimContextCommandBuilder::commandsFromSelection()
|
||||
}
|
||||
else if ( dynamic_cast<RimHistogramMultiPlot*>( firstUiItem ) )
|
||||
{
|
||||
menuBuilder << "RicNewDefaultHistogramPlotFeature";
|
||||
menuBuilder.subMenuStart( "New Histogram Plot" );
|
||||
|
||||
for ( RicHistogramPlotTools::DataSourceType dataSourceType : RicHistogramPlotTools::allDataSourceTypes() )
|
||||
{
|
||||
caf::AppEnum<RicHistogramPlotTools::DataSourceType> dstEnum( dataSourceType );
|
||||
menuBuilder.addCmdFeatureWithUserData( "RicNewDefaultHistogramPlotFeature", dstEnum.uiText(), QVariant( dstEnum.text() ) );
|
||||
}
|
||||
|
||||
menuBuilder.subMenuEnd();
|
||||
}
|
||||
else if ( dynamic_cast<RimHistogramPlot*>( firstUiItem ) )
|
||||
{
|
||||
menuBuilder.subMenuStart( "New Histogram Curve" );
|
||||
|
||||
// TODO: make an enum of these?
|
||||
std::vector<QString> curveTypes = { "Ensemble Parameter", "Grid Statistics", "Summary Vector", "Ensemble Fracture Statistics" };
|
||||
|
||||
for ( const QString& curveType : curveTypes )
|
||||
for ( RicHistogramPlotTools::DataSourceType dataSourceType : RicHistogramPlotTools::allDataSourceTypes() )
|
||||
{
|
||||
QString menuText = curveType;
|
||||
menuBuilder.addCmdFeatureWithUserData( "RicNewHistogramCurveFeature", menuText, QVariant( curveType ) );
|
||||
caf::AppEnum<RicHistogramPlotTools::DataSourceType> dstEnum( dataSourceType );
|
||||
menuBuilder.addCmdFeatureWithUserData( "RicNewHistogramCurveFeature", dstEnum.uiText(), QVariant( dstEnum.text() ) );
|
||||
}
|
||||
|
||||
menuBuilder.subMenuEnd();
|
||||
|
||||
Reference in new issue
Block a user