Adds ensemble curve template file selection

Adds a file path selection field to the preferences
to allow users to specify a template file for
ensemble curve properties. Changes the ensemble curve
creation logic to utilize this template, logging a warning
and falling back to defaults if loading fails.
This commit is contained in:
Magne Sjaastad committed 2025-08-29 08:51:17 +02:00
1 parent d48aef7881
commit d805b28149
5 files changed
+32 -13

No files matched your search

@@ -28,6 +28,7 @@
#include "cafPdmUiCheckBoxEditor.h"
#include "cafPdmUiComboBoxEditor.h"
#include "cafPdmUiFilePathEditor.h"
#include "cafPdmUiListEditor.h"
#include "cafPdmUiPushButtonEditor.h"
@@ -202,7 +203,11 @@ RiaPreferencesSummary::RiaPreferencesSummary()
RiaColorTables::historyCurveContrastColor(),
"History Curve Color" );
CAF_PDM_InitFieldNoDefault( &m_ensembleCurveSetTemplateFilePath, "ensembleCurveSetTemplateFilePath", "Curve Set Template" );
CAF_PDM_InitFieldNoDefault( &m_ensembleCurveTemplateFilePath,
"ensembleCurveTemplateFilePath",
"Ensemble Curve Template",
"",
"Select a template for ensemble curve properties." );
}
//--------------------------------------------------------------------------------------------------
@@ -302,7 +307,7 @@ void RiaPreferencesSummary::appendItemsToPlottingGroup( caf::PdmUiOrdering& uiOr
}
uiOrdering.add( &m_crossPlotAddressCombinations );
uiOrdering.add( &m_ensembleCurveSetTemplateFilePath );
uiOrdering.add( &m_ensembleCurveTemplateFilePath );
auto historyCurveGroup = uiOrdering.addNewGroup( "History Vectors" );
@@ -476,6 +481,13 @@ void RiaPreferencesSummary::defineEditorAttribute( const caf::PdmFieldHandle* fi
attrib->heightHint = 30;
}
}
else if ( field == &m_ensembleCurveTemplateFilePath )
{
if ( auto myAttr = dynamic_cast<caf::PdmUiFilePathEditorAttribute*>( attribute ) )
{
myAttr->m_fileSelectionFilter = "Templates (*.erpt);;All files (*.*)";
}
}
}
//--------------------------------------------------------------------------------------------------
@@ -571,9 +583,9 @@ cvf::Color3f RiaPreferencesSummary::historyCurveContrastColor() const
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QString RiaPreferencesSummary::ensembleCurveSetTemplateFilePath() const
QString RiaPreferencesSummary::ensembleCurveTemplateFilePath() const
{
return m_ensembleCurveSetTemplateFilePath().path().trimmed();
return m_ensembleCurveTemplateFilePath().path().trimmed();
}
//--------------------------------------------------------------------------------------------------
@@ -117,7 +117,7 @@ public:
cvf::Color3f historyCurveContrastColor() const;
QString ensembleCurveSetTemplateFilePath() const;
QString ensembleCurveTemplateFilePath() const;
void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override;
void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override;
@@ -142,7 +142,7 @@ private:
caf::PdmField<bool> m_curveColorByPhase;
caf::PdmField<bool> m_appendHistoryVectors;
caf::PdmField<caf::FilePath> m_ensembleCurveSetTemplateFilePath;
caf::PdmField<caf::FilePath> m_ensembleCurveTemplateFilePath;
caf::PdmField<bool> m_showSummaryTimeAsLongString;
caf::PdmField<bool> m_useMultipleThreadsWhenLoadingSummaryCases;
@@ -267,13 +267,12 @@ QStringList getMatchingFiles( const QString& basePath, const QString& regexPatte
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RimEnsembleCurveSet* createEnsembleCurveSet( const QString& templateFilePath )
std::expected<RimEnsembleCurveSet*, QString> createEnsembleCurveSet( const QString& templateFilePath )
{
QFile importFile( templateFilePath );
if ( !importFile.open( QIODevice::ReadOnly | QIODevice::Text ) )
{
RiaLogging::error( QString( "Create Plot from Template : Could not open the file: %1" ).arg( templateFilePath ) );
return nullptr;
return std::unexpected( QString( "Create Plot from Template : Could not open the file: %1" ).arg( templateFilePath ) );
}
QTextStream stream( &importFile );
@@ -305,7 +304,7 @@ RimEnsembleCurveSet* createEnsembleCurveSet( const QString& templateFilePath )
}
}
return nullptr;
return std::unexpected( QString( "Create Plot from Template : No ensemble curve sets found in : %1" ).arg( templateFilePath ) );
}
//--------------------------------------------------------------------------------------------------
@@ -22,6 +22,8 @@
#include <QStringList>
#include <expected>
class RimSummaryCase;
class RimEnsembleCurveSet;
@@ -45,6 +47,6 @@ QStringList createPathsBySearchingFileSystem_obsolete( const QString& pathPatter
QStringList createPathsBySearchingFileSystem( const QString& pathPattern, const QString& extension, const QString& placeholderString );
QStringList getMatchingFiles( const QString& basePath, const QString& regexPattern );
RimEnsembleCurveSet* createEnsembleCurveSet( const QString& templateFilePath );
std::expected<RimEnsembleCurveSet*, QString> createEnsembleCurveSet( const QString& templateFilePath );
} // namespace RiaEnsembleImportTools
@@ -22,6 +22,7 @@
#include "RiaColorTools.h"
#include "RiaGuiApplication.h"
#include "RiaHashTools.h"
#include "RiaLogging.h"
#include "RiaPreferences.h"
#include "RiaPreferencesSummary.h"
#include "RiaQDateTimeTools.h"
@@ -301,12 +302,17 @@ RimEnsembleCurveSet::~RimEnsembleCurveSet()
//--------------------------------------------------------------------------------------------------
RimEnsembleCurveSet* RimEnsembleCurveSet::createObject()
{
auto filePath = RiaPreferencesSummary::current()->ensembleCurveSetTemplateFilePath();
auto filePath = RiaPreferencesSummary::current()->ensembleCurveTemplateFilePath();
if ( !filePath.isEmpty() )
{
if ( auto obj = RiaEnsembleImportTools::createEnsembleCurveSet( filePath ) )
{
return obj;
return obj.value();
}
else
{
auto txt = obj.error() + " Default ensemble curve properties are used";
RiaLogging::warning( txt );
}
}