26#if defined (HAVE_CONFIG_H)
32#include <QDialogButtonBox>
33#include <QDirIterator>
57 :
QDialog (p), m_octave_qobj (oct_qobj)
61 setWindowTitle (tr (
"Find Files"));
62 setWindowIcon (rmgr.
icon (
"edit-find"));
67 connect (
m_timer, &QTimer::timeout,
83 QDir::currentPath ()).toString ());
94 m_recurse_dirs_check->setToolTip (tr (
"Search recursively through directories for matching files"));
122 m_file_list->setSelectionBehavior (QAbstractItemView::SelectRows);
123 m_file_list->setSelectionMode (QAbstractItemView::SingleSelection);
128 m_file_list->horizontalHeader ()->setSortIndicatorShown (
true);
129 m_file_list->horizontalHeader ()->setSectionsClickable (
true);
130 m_file_list->horizontalHeader ()->setStretchLastSection (
true);
132 static_cast<Qt::SortOrder
>
144 m_find_button->setToolTip (tr (
"Start search for matching files"));
155 QDialogButtonBox *button_box =
new QDialogButtonBox (Qt::Vertical);
156 button_box->addButton (
m_find_button, QDialogButtonBox::ActionRole);
157 button_box->addButton (
m_stop_button, QDialogButtonBox::ActionRole);
161 connect (button_box, &QDialogButtonBox::rejected,
162 this, &find_files_dialog::close);
165 QGroupBox *name_group =
new QGroupBox (tr (
"Filename/location"));
166 QGridLayout *name_layout =
new QGridLayout;
167 name_group->setLayout (name_layout);
169 name_layout->addWidget (file_name_label, 1, 1, 1, 1);
172 name_layout->addWidget (start_dir_label, 2, 1);
175 name_layout->setColumnStretch (2, 1);
182 QGroupBox *content_group =
new QGroupBox (tr (
"File contents"));
183 QGridLayout *content_layout =
new QGridLayout;
184 content_group->setLayout (content_layout);
187 content_layout->setColumnStretch (2, 1);
190 QGridLayout *main_layout =
new QGridLayout;
191 main_layout->setSizeConstraint (QLayout::SetFixedSize);
192 main_layout->addWidget (name_group, 0, 0);
193 main_layout->addWidget (content_group, 1, 0);
194 main_layout->addWidget (button_box, 0, 1, 3, 1);
196 main_layout->setRowStretch (2, 1);
199 setLayout (main_layout);
201 connect (
this, &find_files_dialog::finished,
218 int sort_column =
m_file_list->horizontalHeader ()->sortIndicatorSection ();
219 Qt::SortOrder sort_order
220 =
m_file_list->horizontalHeader ()->sortIndicatorOrder ();
253 QDirIterator::IteratorFlags flags = QDirIterator::NoIteratorFlags;
255 flags |= QDirIterator::Subdirectories;
257 QDir::Filters filters = QDir::Dirs | QDir::NoDotAndDotDot | QDir::Files;
259 filters |= QDir::CaseSensitive;
261 QStringList nameFilters;
306 QString res_str = QString (tr (
"%1 match (es)")).arg (m->
rowCount ());
318 opts = QFileDialog::DontUseNativeDialog;
321 QFileDialog::getExistingDirectory (
this, tr (
"Set search directory"),
323 QFileDialog::Option (opts));
325 if (! dir.isEmpty ())
335 if (idx.column () == 1)
389 QFile file (info.absoluteFilePath ());
390 if (file.open (QIODevice::ReadOnly))
392 QTextStream
stream (&file);
398 ? Qt::CaseInsensitive
403 line =
stream.readLine ();
404 match = line.contains (match_str, cs);
406 while (! line.isNull () && match ==
false);
Base class for Octave interfaces that use Qt.
resource_manager & get_resource_manager(void)
QCheckBox * m_name_case_check
void file_selected(const QString &fileName)
QPushButton * m_stop_button
QStatusBar * m_status_bar
virtual ~find_files_dialog(void)
QPushButton * m_browse_button
QLineEdit * m_file_name_edit
QPushButton * m_close_button
QCheckBox * m_content_case_check
QCheckBox * m_recurse_dirs_check
void set_search_dir(const QString &dir)
void dir_selected(const QString &fileName)
base_qobject & m_octave_qobj
void item_double_clicked(const QModelIndex &)
QCheckBox * m_contains_text_check
QDirIterator * m_dir_iterator
QCheckBox * m_include_dirs_check
bool is_match(const QFileInfo &info)
void look_for_files(void)
find_files_dialog(QWidget *parent, base_qobject &oct_qobj)
QPushButton * m_find_button
QLineEdit * m_start_dir_edit
void browse_folders(void)
QLineEdit * m_contains_text_edit
QFileInfo fileInfo(const QModelIndex &p) const
void addFile(const QFileInfo &info)
int rowCount(const QModelIndex &p=QModelIndex()) const
gui_settings * get_settings(void) const
QIcon icon(const QString &icon_name, bool fallback=true)
const gui_pref ff_include_dirs("findfiles/include_dirs", QVariant(false))
const gui_pref ff_start_dir("findfiles/start_dir", QVariant(""))
const gui_pref ff_check_text("findfiles/check_text", QVariant(false))
const gui_pref ff_file_name("findfiles/file_name", QVariant("*"))
const gui_pref ff_recurse_dirs("findfiles/recurse_dirs", QVariant(false))
const gui_pref ff_content_case("findfiles/content_case", QVariant(false))
const gui_pref ff_sort_files_by_order("findfiles/sort_files_by_order", QVariant(Qt::AscendingOrder))
const gui_pref ff_column_state("findfiles/column_state", QVariant())
const gui_pref ff_sort_files_by_column("findfiles/sort_files_by_column", QVariant(0))
const gui_pref ff_name_case("findfiles/name_case", QVariant(false))
const gui_pref ff_contains_text("findfiles/contains_text", QVariant(""))
const gui_pref global_use_native_dialogs("use_native_file_dialogs", QVariant(true))