#8033 Ensemble Search Dialog : Allow edit of file extensions

Ensemble Search Dialog: Improve UI layout
This commit is contained in:
Magne Sjaastad 2021-09-24 08:14:03 +02:00
parent cb6180b118
commit 17c5f473be
2 changed files with 93 additions and 36 deletions

View File

@ -77,7 +77,7 @@ RicRecursiveFileSearchDialogResult RicRecursiveFileSearchDialog::runRecursiveSea
const QString useRealizationStarRegistryKey = "RecursiveFileSearchDialog_use_realization";
QSettings settings;
RicRecursiveFileSearchDialog dialog( parent );
RicRecursiveFileSearchDialog dialog( parent, fileExtensions );
{
QSignalBlocker signalBlocker( dialog.m_pathFilterField );
@ -89,6 +89,14 @@ RicRecursiveFileSearchDialogResult RicRecursiveFileSearchDialog::runRecursiveSea
dialog.m_fileFilterField->addItem( fileNameFilter );
dialog.m_pathFilterField->addItem( QDir::toNativeSeparators( pathFilterText ) );
for ( const auto& s : fileExtensions )
{
QString joined = fileExtensions.join( '|' );
dialog.m_fileExtensionsField->setText( joined );
}
dialog.m_fileFilterField->addItem( fileNameFilter );
populateComboBoxHistoryFromRegistry( dialog.m_pathFilterField, filePathRegistryKey );
populateComboBoxHistoryFromRegistry( dialog.m_fileFilterField, fileFilterRegistryKey );
@ -140,8 +148,9 @@ RicRecursiveFileSearchDialogResult RicRecursiveFileSearchDialog::runRecursiveSea
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RicRecursiveFileSearchDialog::RicRecursiveFileSearchDialog( QWidget* parent )
RicRecursiveFileSearchDialog::RicRecursiveFileSearchDialog( QWidget* parent, const QStringList& fileExtensions )
: QDialog( parent, RiuTools::defaultDialogFlags() )
, m_incomingFileExtensions( fileExtensions )
{
// Create widgets
m_browseButton = new QPushButton();
@ -156,6 +165,8 @@ RicRecursiveFileSearchDialog::RicRecursiveFileSearchDialog( QWidget* parent )
m_pathFilterField = new QComboBox();
m_fileFilterLabel = new QLabel();
m_fileFilterField = new QComboBox();
m_fileExtensionsLabel = new QLabel();
m_fileExtensionsField = new QLineEdit();
m_effectiveFilterLabel = new QLabel();
m_effectiveFilterContentLabel = new QLabel();
m_searchRootLabel = new QLabel();
@ -184,6 +195,8 @@ RicRecursiveFileSearchDialog::RicRecursiveFileSearchDialog( QWidget* parent )
this,
SLOT( slotFileFilterChanged( const QString& ) ) );
connect( m_fileExtensionsField, SIGNAL( editingFinished() ), this, SLOT( slotFileExtensionsChanged() ) );
connect( m_fileListWidget,
SIGNAL( customContextMenuRequested( const QPoint& ) ),
this,
@ -199,6 +212,7 @@ RicRecursiveFileSearchDialog::RicRecursiveFileSearchDialog( QWidget* parent )
// Set widget properties
m_pathFilterLabel->setText( "Path pattern" );
m_fileFilterLabel->setText( "File pattern" );
m_fileExtensionsLabel->setText( "File Extensions" );
m_effectiveFilterLabel->setText( "Effective filter" );
m_searchRootLabel->setText( "Root" );
m_searchRootLabel->setVisible( false );
@ -224,16 +238,31 @@ RicRecursiveFileSearchDialog::RicRecursiveFileSearchDialog( QWidget* parent )
QGroupBox* inputGroup = new QGroupBox( "Filter" );
QGridLayout* inputGridLayout = new QGridLayout();
inputGridLayout->addWidget( m_pathFilterLabel, 0, 0 );
inputGridLayout->addWidget( m_pathFilterField, 0, 1, 1, 2 );
inputGridLayout->addWidget( m_browseButton, 0, 3 );
inputGridLayout->addWidget( m_fileFilterLabel, 1, 0 );
inputGridLayout->addWidget( m_fileFilterField, 1, 1, 1, 2 );
inputGridLayout->addWidget( m_useRealizationStarCheckBox, 2, 1 );
inputGridLayout->addWidget( m_groupByEnsembleCheckBox, 3, 1 );
inputGridLayout->addWidget( m_effectiveFilterLabel, 4, 0 );
inputGridLayout->addWidget( m_effectiveFilterContentLabel, 4, 1 );
inputGridLayout->addWidget( m_findOrCancelButton, 4, 2, 1, 2 );
int row = 0;
inputGridLayout->addWidget( m_pathFilterLabel, row, 0 );
inputGridLayout->addWidget( m_pathFilterField, row, 1, 1, 2 );
inputGridLayout->addWidget( m_browseButton, row, 3 );
row++;
inputGridLayout->addWidget( m_fileFilterLabel, row, 0 );
inputGridLayout->addWidget( m_fileFilterField, row, 1, 1, 2 );
row++;
inputGridLayout->addWidget( m_fileExtensionsLabel, row, 0 );
inputGridLayout->addWidget( m_fileExtensionsField, row, 1, 1, 2 );
row++;
{
QHBoxLayout* horizontalLayout = new QHBoxLayout;
horizontalLayout->addWidget( m_useRealizationStarCheckBox );
horizontalLayout->addWidget( m_groupByEnsembleCheckBox );
inputGridLayout->addLayout( horizontalLayout, row, 1 );
}
row++;
inputGridLayout->addWidget( m_effectiveFilterLabel, row, 0 );
inputGridLayout->addWidget( m_effectiveFilterContentLabel, row, 1 );
inputGridLayout->addWidget( m_findOrCancelButton, row, 2 );
inputGroup->setLayout( inputGridLayout );
@ -252,33 +281,44 @@ RicRecursiveFileSearchDialog::RicRecursiveFileSearchDialog( QWidget* parent )
setLayout( dialogLayout );
QString pathFilterHelpText =
"The path filter uses normal wildcard file globbing, like in any unix shell. \n"
"When the filter ends with a single \"*\" (eg. \"/home/*\"), however, ResInsight will \n"
"search recursively in all subdirectories from that point.\n"
"This is indicated by \"...\" in the Effective Filter label below.\n"
"\n"
"An asterix \"*\" matches any number of any characters, except the path separator.\n"
"A question mark \"?\" matches any single character, except the path separator.\n"
"Square brackets \"[]\" encloses a list of characters and matches one of the enclosed characters.\n"
"they are also used to escape the characters *,? and []";
{
QString text =
"The path filter uses normal wildcard file globbing, like in any unix shell. \n"
"When the filter ends with a single \"*\" (eg. \"/home/*\"), however, ResInsight will \n"
"search recursively in all subdirectories from that point.\n"
"This is indicated by \"...\" in the Effective Filter label below.\n"
"\n"
"An asterix \"*\" matches any number of any characters, except the path separator.\n"
"A question mark \"?\" matches any single character, except the path separator.\n"
"Square brackets \"[]\" encloses a list of characters and matches one of the enclosed characters.\n"
"they are also used to escape the characters *,? and []";
// https://doc.qt.io/qt-5/qregularexpression.html#wildcardToRegularExpression
// https://doc.qt.io/qt-5/qregularexpression.html#wildcardToRegularExpression
m_pathFilterLabel->setToolTip( pathFilterHelpText );
m_pathFilterField->setToolTip( pathFilterHelpText );
m_pathFilterLabel->setToolTip( text );
m_pathFilterField->setToolTip( text );
}
QString fileFilterHelpText =
"The file filter uses normal wildcards, but is not allowed to contain path separators. ";
{
QString text = "Define the extension using \".EGRID|.GRDECL\"";
m_fileExtensionsLabel->setToolTip( text );
m_fileExtensionsField->setToolTip( text );
}
m_fileFilterLabel->setToolTip( fileFilterHelpText );
m_fileFilterField->setToolTip( fileFilterHelpText );
{
QString text = "The file filter uses normal wild cards, but is not allowed to contain path separators. ";
QString effectiveFilterHelpText = "This label displays the complete filter that is being applied. \n"
"The possible \"...\" indicates a complete recursive directory search.";
m_fileFilterLabel->setToolTip( text );
m_fileFilterField->setToolTip( text );
}
m_effectiveFilterLabel->setToolTip( effectiveFilterHelpText );
m_effectiveFilterContentLabel->setToolTip( effectiveFilterHelpText );
{
QString text = "This label displays the complete filter that is being applied. \n"
"The possible \"...\" indicates a complete recursive directory search.";
m_effectiveFilterLabel->setToolTip( text );
m_effectiveFilterContentLabel->setToolTip( text );
}
}
//--------------------------------------------------------------------------------------------------
@ -689,6 +729,18 @@ void RicRecursiveFileSearchDialog::slotFileFilterChanged( const QString& text )
m_findOrCancelButton->setDefault( true );
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RicRecursiveFileSearchDialog::slotFileExtensionsChanged()
{
QStringList items = m_fileExtensionsField->text().split( '|' );
m_fileExtensions = trimLeftStrings( items, "." );
updateEffectiveFilter();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------

View File

@ -60,7 +60,7 @@ public:
const QStringList& fileExtensions = QStringList() );
private:
RicRecursiveFileSearchDialog( QWidget* parent );
RicRecursiveFileSearchDialog( QWidget* parent, const QStringList& fileExtensions );
~RicRecursiveFileSearchDialog() override;
QString cleanTextFromPathFilterField() const;
@ -96,6 +96,7 @@ private:
private slots:
void slotPathFilterChanged( const QString& text );
void slotFileFilterChanged( const QString& text );
void slotFileExtensionsChanged();
void slotBrowseButtonClicked();
void slotUseRealizationStarClicked();
void slotFindOrCancelButtonClicked();
@ -119,6 +120,9 @@ private:
QLabel* m_fileFilterLabel;
QComboBox* m_fileFilterField;
QLabel* m_fileExtensionsLabel;
QLineEdit* m_fileExtensionsField;
QLabel* m_effectiveFilterLabel;
QLabel* m_effectiveFilterContentLabel;
QPushButton* m_findOrCancelButton;
@ -130,8 +134,9 @@ private:
QDialogButtonBox* m_buttons;
QStringList m_foundFiles;
QStringList m_fileExtensions;
QStringList m_foundFiles;
const QStringList m_incomingFileExtensions;
QStringList m_fileExtensions;
bool m_isCancelPressed;