mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#7965 Add check box for choosing grouping by iteration.
This commit is contained in:
parent
7ca424f6df
commit
c6f04a6ad6
@ -55,14 +55,21 @@ bool RicImportEnsembleFractureStatisticsFeature::isCommandEnabled()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RicImportEnsembleFractureStatisticsFeature::onActionTriggered( bool isChecked )
|
||||
{
|
||||
RiaGuiApplication* app = RiaGuiApplication::instance();
|
||||
QString pathCacheName = "INPUT_FILES";
|
||||
QStringList fileNames = runRecursiveFileSearchDialog( "Import StimPlan Fractures", pathCacheName );
|
||||
RiaGuiApplication* app = RiaGuiApplication::instance();
|
||||
QString pathCacheName = "INPUT_FILES";
|
||||
auto [fileNames, groupByIteration] = runRecursiveFileSearchDialog( "Import StimPlan Fractures", pathCacheName );
|
||||
|
||||
std::vector<QStringList> groupedByEnsemble = RiaEnsembleNameTools::groupFilesByEnsemble( fileNames );
|
||||
for ( const QStringList& groupedFileNames : groupedByEnsemble )
|
||||
if ( groupByIteration )
|
||||
{
|
||||
importSingleEnsembleFractureStatistics( groupedFileNames );
|
||||
std::vector<QStringList> groupedByEnsemble = RiaEnsembleNameTools::groupFilesByEnsemble( fileNames );
|
||||
for ( const QStringList& groupedFileNames : groupedByEnsemble )
|
||||
{
|
||||
importSingleEnsembleFractureStatistics( groupedFileNames );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
importSingleEnsembleFractureStatistics( fileNames );
|
||||
}
|
||||
}
|
||||
|
||||
@ -117,8 +124,9 @@ void RicImportEnsembleFractureStatisticsFeature::setupActionLook( QAction* actio
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
QStringList RicImportEnsembleFractureStatisticsFeature::runRecursiveFileSearchDialog( const QString& dialogTitle,
|
||||
const QString& pathCacheName )
|
||||
std::pair<QStringList, bool>
|
||||
RicImportEnsembleFractureStatisticsFeature::runRecursiveFileSearchDialog( const QString& dialogTitle,
|
||||
const QString& pathCacheName )
|
||||
{
|
||||
RiaApplication* app = RiaApplication::instance();
|
||||
QString defaultDir = app->lastUsedDialogDirectory( pathCacheName );
|
||||
@ -135,10 +143,10 @@ QStringList RicImportEnsembleFractureStatisticsFeature::runRecursiveFileSearchDi
|
||||
m_pathFilter = result.pathFilter;
|
||||
m_fileNameFilter = result.fileNameFilter;
|
||||
|
||||
if ( !result.ok ) return QStringList();
|
||||
if ( !result.ok ) return std::make_pair( QStringList(), false );
|
||||
|
||||
// Remember the path to next time
|
||||
app->setLastUsedDialogDirectory( pathCacheName, QFileInfo( result.rootDir ).absoluteFilePath() );
|
||||
|
||||
return result.files;
|
||||
return std::make_pair( result.files, result.groupByIteration );
|
||||
}
|
||||
|
@ -32,7 +32,8 @@ class RicImportEnsembleFractureStatisticsFeature : public caf::CmdFeature
|
||||
public:
|
||||
RicImportEnsembleFractureStatisticsFeature() {}
|
||||
|
||||
static QStringList runRecursiveFileSearchDialog( const QString& dialogTitle, const QString& pathCacheName );
|
||||
static std::pair<QStringList, bool> runRecursiveFileSearchDialog( const QString& dialogTitle,
|
||||
const QString& pathCacheName );
|
||||
|
||||
protected:
|
||||
static void importSingleEnsembleFractureStatistics( const QStringList& fileNames );
|
||||
|
@ -52,6 +52,7 @@
|
||||
#include <QFileInfo>
|
||||
#include <QInputDialog>
|
||||
#include <QRegularExpression>
|
||||
#include <QStringList>
|
||||
|
||||
#include <set>
|
||||
|
||||
@ -70,16 +71,24 @@ bool RicImportEnsembleFeature::isCommandEnabled()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RicImportEnsembleFeature::onActionTriggered( bool isChecked )
|
||||
{
|
||||
QString pathCacheName = "ENSEMBLE_FILES";
|
||||
QStringList fileNames =
|
||||
RicImportSummaryCasesFeature::runRecursiveSummaryCaseFileSearchDialog( "Import Ensemble", pathCacheName );
|
||||
QString pathCacheName = "ENSEMBLE_FILES";
|
||||
auto [fileNames, groupByIteration] =
|
||||
RicImportSummaryCasesFeature::runRecursiveSummaryCaseFileSearchDialogWithGrouping( "Import Ensemble",
|
||||
pathCacheName );
|
||||
|
||||
if ( fileNames.isEmpty() ) return;
|
||||
|
||||
std::vector<QStringList> groupedByEnsemble = RiaEnsembleNameTools::groupFilesByEnsemble( fileNames );
|
||||
for ( const QStringList& groupedFileNames : groupedByEnsemble )
|
||||
if ( groupByIteration )
|
||||
{
|
||||
importSingleEnsemble( groupedFileNames );
|
||||
std::vector<QStringList> groupedByEnsemble = RiaEnsembleNameTools::groupFilesByEnsemble( fileNames );
|
||||
for ( const QStringList& groupedFileNames : groupedByEnsemble )
|
||||
{
|
||||
importSingleEnsemble( groupedFileNames );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
importSingleEnsemble( fileNames );
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -62,11 +62,14 @@ bool RicImportEnsembleSurfaceFeature::isCommandEnabled()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RicImportEnsembleSurfaceFeature::onActionTriggered( bool isChecked )
|
||||
{
|
||||
RiaApplication* app = RiaApplication::instance();
|
||||
QString pathCacheName = "ENSEMBLE_SURFACE_FILES";
|
||||
QStringList fileNames = runRecursiveFileSearchDialog( "Import Ensemble Surface", pathCacheName );
|
||||
RiaApplication* app = RiaApplication::instance();
|
||||
QString pathCacheName = "ENSEMBLE_SURFACE_FILES";
|
||||
auto [fileNames, groupByIteration] = runRecursiveFileSearchDialog( "Import Ensemble Surface", pathCacheName );
|
||||
|
||||
importEnsembleSurfaceFromFiles( fileNames );
|
||||
if ( groupByIteration )
|
||||
importEnsembleSurfaceFromFiles( fileNames );
|
||||
else
|
||||
importSingleEnsembleSurfaceFromFiles( fileNames );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -182,8 +185,8 @@ void RicImportEnsembleSurfaceFeature::setupActionLook( QAction* actionToSetup )
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
QStringList RicImportEnsembleSurfaceFeature::runRecursiveFileSearchDialog( const QString& dialogTitle,
|
||||
const QString& pathCacheName )
|
||||
std::pair<QStringList, bool> RicImportEnsembleSurfaceFeature::runRecursiveFileSearchDialog( const QString& dialogTitle,
|
||||
const QString& pathCacheName )
|
||||
{
|
||||
RiaApplication* app = RiaApplication::instance();
|
||||
QString defaultDir = app->lastUsedDialogDirectory( pathCacheName );
|
||||
@ -201,10 +204,10 @@ QStringList RicImportEnsembleSurfaceFeature::runRecursiveFileSearchDialog( const
|
||||
m_pathFilter = result.pathFilter;
|
||||
m_fileNameFilter = result.fileNameFilter;
|
||||
|
||||
if ( !result.ok ) return QStringList();
|
||||
if ( !result.ok ) return std::pair( QStringList(), false );
|
||||
|
||||
// Remember the path to next time
|
||||
app->setLastUsedDialogDirectory( pathCacheName, QFileInfo( result.rootDir ).absoluteFilePath() );
|
||||
|
||||
return result.files;
|
||||
return std::pair( result.files, result.groupByIteration );
|
||||
}
|
||||
|
@ -40,7 +40,7 @@ protected:
|
||||
void onActionTriggered( bool isChecked ) override;
|
||||
void setupActionLook( QAction* actionToSetup ) override;
|
||||
|
||||
QStringList runRecursiveFileSearchDialog( const QString& dialogTitle, const QString& pathCacheName );
|
||||
std::pair<QStringList, bool> runRecursiveFileSearchDialog( const QString& dialogTitle, const QString& pathCacheName );
|
||||
|
||||
static void importSingleEnsembleSurfaceFromFiles( const QStringList& fileNames );
|
||||
|
||||
|
@ -58,12 +58,15 @@ bool RicImportEnsembleWellLogsFeature::isCommandEnabled()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RicImportEnsembleWellLogsFeature::onActionTriggered( bool isChecked )
|
||||
{
|
||||
RiaApplication* app = RiaApplication::instance();
|
||||
QString pathCacheName = "ENSEMBLE_WELL_LOGS_FILES";
|
||||
QStringList fileNames = runRecursiveFileSearchDialog( "Import Ensemble Well Logs", pathCacheName );
|
||||
RiaApplication* app = RiaApplication::instance();
|
||||
QString pathCacheName = "ENSEMBLE_WELL_LOGS_FILES";
|
||||
auto [fileNames, groupByIteration] = runRecursiveFileSearchDialog( "Import Ensemble Well Logs", pathCacheName );
|
||||
if ( fileNames.isEmpty() ) return;
|
||||
|
||||
createEnsembleWellLogsFromFiles( fileNames );
|
||||
if ( groupByIteration )
|
||||
createEnsembleWellLogsFromFiles( fileNames );
|
||||
else
|
||||
createSingleEnsembleWellLogsFromFiles( fileNames );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -130,8 +133,8 @@ void RicImportEnsembleWellLogsFeature::setupActionLook( QAction* actionToSetup )
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
QStringList RicImportEnsembleWellLogsFeature::runRecursiveFileSearchDialog( const QString& dialogTitle,
|
||||
const QString& pathCacheName )
|
||||
std::pair<QStringList, bool> RicImportEnsembleWellLogsFeature::runRecursiveFileSearchDialog( const QString& dialogTitle,
|
||||
const QString& pathCacheName )
|
||||
{
|
||||
RiaApplication* app = RiaApplication::instance();
|
||||
QString defaultDir = app->lastUsedDialogDirectory( pathCacheName );
|
||||
@ -149,10 +152,10 @@ QStringList RicImportEnsembleWellLogsFeature::runRecursiveFileSearchDialog( cons
|
||||
m_pathFilter = result.pathFilter;
|
||||
m_fileNameFilter = result.fileNameFilter;
|
||||
|
||||
if ( !result.ok ) return QStringList();
|
||||
if ( !result.ok ) return std::make_pair( QStringList(), false );
|
||||
|
||||
// Remember the path to next time
|
||||
app->setLastUsedDialogDirectory( pathCacheName, QFileInfo( result.rootDir ).absoluteFilePath() );
|
||||
|
||||
return result.files;
|
||||
return std::make_pair( result.files, result.groupByIteration );
|
||||
}
|
||||
|
@ -43,7 +43,7 @@ protected:
|
||||
void onActionTriggered( bool isChecked ) override;
|
||||
void setupActionLook( QAction* actionToSetup ) override;
|
||||
|
||||
QStringList runRecursiveFileSearchDialog( const QString& dialogTitle, const QString& pathCacheName );
|
||||
std::pair<QStringList, bool> runRecursiveFileSearchDialog( const QString& dialogTitle, const QString& pathCacheName );
|
||||
|
||||
private:
|
||||
QString m_pathFilter;
|
||||
|
@ -251,8 +251,9 @@ void RicImportSummaryCasesFeature::addCasesToGroupIfRelevant( const std::vector<
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
QStringList RicImportSummaryCasesFeature::runRecursiveSummaryCaseFileSearchDialog( const QString& dialogTitle,
|
||||
const QString& pathCacheName )
|
||||
std::pair<QStringList, bool>
|
||||
RicImportSummaryCasesFeature::runRecursiveSummaryCaseFileSearchDialogWithGrouping( const QString& dialogTitle,
|
||||
const QString& pathCacheName )
|
||||
{
|
||||
RiaApplication* app = RiaApplication::instance();
|
||||
QString defaultDir = app->lastUsedDialogDirectory( pathCacheName );
|
||||
@ -269,10 +270,20 @@ QStringList RicImportSummaryCasesFeature::runRecursiveSummaryCaseFileSearchDialo
|
||||
m_pathFilter = result.pathFilter;
|
||||
m_fileNameFilter = result.fileNameFilter;
|
||||
|
||||
if ( !result.ok ) return QStringList();
|
||||
if ( !result.ok ) return std::make_pair( QStringList(), false );
|
||||
|
||||
// Remember the path to next time
|
||||
app->setLastUsedDialogDirectory( pathCacheName, QFileInfo( result.rootDir ).absoluteFilePath() );
|
||||
|
||||
return result.files;
|
||||
return std::make_pair( result.files, result.groupByIteration );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
QStringList RicImportSummaryCasesFeature::runRecursiveSummaryCaseFileSearchDialog( const QString& dialogTitle,
|
||||
const QString& pathCacheName )
|
||||
{
|
||||
std::pair<QStringList, bool> result = runRecursiveSummaryCaseFileSearchDialogWithGrouping( dialogTitle, pathCacheName );
|
||||
return result.first;
|
||||
}
|
||||
|
@ -48,6 +48,9 @@ public:
|
||||
|
||||
static QStringList runRecursiveSummaryCaseFileSearchDialog( const QString& dialogTitle, const QString& pathCacheName );
|
||||
|
||||
static std::pair<QStringList, bool>
|
||||
runRecursiveSummaryCaseFileSearchDialogWithGrouping( const QString& dialogTitle, const QString& pathCacheName );
|
||||
|
||||
protected:
|
||||
// Overrides
|
||||
bool isCommandEnabled() override;
|
||||
|
@ -18,6 +18,7 @@
|
||||
|
||||
#include "RicRecursiveFileSearchDialog.h"
|
||||
|
||||
#include "RiaEnsembleNameTools.h"
|
||||
#include "RiaFilePathTools.h"
|
||||
#include "RiaGuiApplication.h"
|
||||
#include "RiaStringListSerializer.h"
|
||||
@ -132,7 +133,8 @@ RicRecursiveFileSearchDialogResult RicRecursiveFileSearchDialog::runRecursiveSea
|
||||
dialog.m_foundFiles,
|
||||
dialog.rootDirWithEndSeparator(),
|
||||
dialog.pathFilterWithoutStartSeparator(),
|
||||
dialog.fileNameFilter() );
|
||||
dialog.fileNameFilter(),
|
||||
dialog.groupByIteration() );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -147,6 +149,9 @@ RicRecursiveFileSearchDialog::RicRecursiveFileSearchDialog( QWidget* parent )
|
||||
m_useRealizationStarCheckBox = new QCheckBox( "Use 'realization-*' in filter" );
|
||||
connect( m_useRealizationStarCheckBox, SIGNAL( clicked() ), this, SLOT( slotUseRealizationStarClicked() ) );
|
||||
|
||||
m_groupByIterationCheckBox = new QCheckBox( "Group by iteration" );
|
||||
m_groupByIterationCheckBox->setChecked( true );
|
||||
|
||||
m_pathFilterLabel = new QLabel();
|
||||
m_pathFilterField = new QComboBox();
|
||||
m_fileFilterLabel = new QLabel();
|
||||
@ -225,9 +230,10 @@ RicRecursiveFileSearchDialog::RicRecursiveFileSearchDialog( QWidget* parent )
|
||||
inputGridLayout->addWidget( m_fileFilterLabel, 1, 0 );
|
||||
inputGridLayout->addWidget( m_fileFilterField, 1, 1, 1, 2 );
|
||||
inputGridLayout->addWidget( m_useRealizationStarCheckBox, 2, 1 );
|
||||
inputGridLayout->addWidget( m_effectiveFilterLabel, 3, 0 );
|
||||
inputGridLayout->addWidget( m_effectiveFilterContentLabel, 3, 1 );
|
||||
inputGridLayout->addWidget( m_findOrCancelButton, 3, 2, 1, 2 );
|
||||
inputGridLayout->addWidget( m_groupByIterationCheckBox, 3, 1 );
|
||||
inputGridLayout->addWidget( m_effectiveFilterLabel, 4, 0 );
|
||||
inputGridLayout->addWidget( m_effectiveFilterContentLabel, 4, 1 );
|
||||
inputGridLayout->addWidget( m_findOrCancelButton, 4, 2, 1, 2 );
|
||||
|
||||
inputGroup->setLayout( inputGridLayout );
|
||||
|
||||
@ -369,9 +375,30 @@ void RicRecursiveFileSearchDialog::updateFileListWidget()
|
||||
{
|
||||
m_fileListWidget->clear();
|
||||
|
||||
if ( m_groupByIterationCheckBox->isChecked() )
|
||||
{
|
||||
std::vector<QStringList> groupedByEnsemble = RiaEnsembleNameTools::groupFilesByEnsemble( m_foundFiles );
|
||||
for ( const QStringList& groupedFileNames : groupedByEnsemble )
|
||||
{
|
||||
QString iterationName = RiaEnsembleNameTools::findSuitableEnsembleName( groupedFileNames );
|
||||
QListWidgetItem* item = new QListWidgetItem( QDir::toNativeSeparators( iterationName ), m_fileListWidget );
|
||||
addToFileListWidget( groupedFileNames );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
addToFileListWidget( m_foundFiles );
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RicRecursiveFileSearchDialog::addToFileListWidget( const QStringList& fileNames )
|
||||
{
|
||||
int rootSearchPathLength = rootDirWithEndSeparator().size();
|
||||
|
||||
for ( const auto& fileName : m_foundFiles )
|
||||
for ( const auto& fileName : fileNames )
|
||||
{
|
||||
QString itemText = fileName;
|
||||
itemText.remove( 0, rootSearchPathLength );
|
||||
@ -855,6 +882,14 @@ void RicRecursiveFileSearchDialog::slotUseRealizationStarClicked()
|
||||
updateEffectiveFilter();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
bool RicRecursiveFileSearchDialog::groupByIteration() const
|
||||
{
|
||||
return m_groupByIterationCheckBox->isChecked();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
/// Internal functions
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
@ -70,6 +70,7 @@ private:
|
||||
|
||||
QStringList fileExtensions() const;
|
||||
QString extensionFromFileNameFilter() const;
|
||||
bool groupByIteration() const;
|
||||
|
||||
void setOkButtonEnabled( bool enabled );
|
||||
void warningIfInvalidCharacters();
|
||||
@ -78,6 +79,7 @@ private:
|
||||
|
||||
void updateFileListWidget();
|
||||
void clearFileList();
|
||||
void addToFileListWidget( const QStringList& fileNames );
|
||||
|
||||
// File search methods
|
||||
|
||||
@ -112,6 +114,7 @@ private:
|
||||
QComboBox* m_pathFilterField;
|
||||
QPushButton* m_browseButton;
|
||||
QCheckBox* m_useRealizationStarCheckBox;
|
||||
QCheckBox* m_groupByIterationCheckBox;
|
||||
|
||||
QLabel* m_fileFilterLabel;
|
||||
QComboBox* m_fileFilterField;
|
||||
@ -147,12 +150,14 @@ public:
|
||||
const QStringList& files,
|
||||
const QString& rootDir,
|
||||
const QString& pathFilter,
|
||||
const QString& fileNameFilter )
|
||||
const QString& fileNameFilter,
|
||||
bool groupByIteration )
|
||||
: ok( ok )
|
||||
, files( files )
|
||||
, rootDir( rootDir )
|
||||
, pathFilter( pathFilter )
|
||||
, fileNameFilter( fileNameFilter )
|
||||
, groupByIteration( groupByIteration )
|
||||
{
|
||||
}
|
||||
|
||||
@ -161,4 +166,5 @@ public:
|
||||
QString rootDir;
|
||||
QString pathFilter;
|
||||
QString fileNameFilter;
|
||||
bool groupByIteration;
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user