23 #if defined (HAVE_CONFIG_H)
27 #include <QPushButton>
28 #include <QDialogButtonBox>
29 #include <QGridLayout>
34 #include <QHeaderView>
36 #include <QFileDialog>
41 #include <QDirIterator>
42 #include <QTextStream>
52 setWindowTitle (tr (
"Find Files"));
57 _timer =
new QTimer (
this);
62 QLabel * file_name_label =
new QLabel (tr (
"Named:"));
64 _file_name_edit->setToolTip (tr (
"Enter the filename search expression"));
70 QLabel * start_dir_label =
new QLabel (tr (
"Start in:"));
74 QDir::currentPath ()).toString ());
86 tr (
"Search recursively through directories for matching files"));
92 tr (
"Include matching directories in search results"));
120 _file_list->setSelectionBehavior (QAbstractItemView::SelectRows);
121 _file_list->setSelectionMode (QAbstractItemView::SingleSelection);
123 _file_list->setToolTip (tr (
"Search results"));
125 _file_list->horizontalHeader ()->restoreState (
126 settings->value (
"findfiles/column_state").toByteArray ());
127 _file_list->horizontalHeader ()->setSortIndicatorShown (
true);
128 #if defined (HAVE_QT4)
129 _file_list->horizontalHeader ()->setClickable (
true);
131 _file_list->horizontalHeader ()->setSectionsClickable (
true);
133 _file_list->horizontalHeader ()->setStretchLastSection (
true);
135 settings->value (
"findfiles/sort_files_by_column",0).toInt (),
136 static_cast<Qt::SortOrder
>
137 (settings->value (
"findfiles/sort_files_by_order",
138 Qt::AscendingOrder).toUInt ()));
140 connect (
_file_list, SIGNAL (doubleClicked (
const QModelIndex&)),
147 _find_button->setToolTip (tr (
"Start search for matching files"));
156 QDialogButtonBox * button_box =
new QDialogButtonBox (Qt::Vertical);
157 button_box->addButton (
_find_button, QDialogButtonBox::ActionRole);
158 button_box->addButton (
_stop_button, QDialogButtonBox::ActionRole);
161 _close_button = button_box->addButton (QDialogButtonBox::Close);
162 connect (button_box, SIGNAL (rejected ()),
163 this, SLOT (close ()));
166 QGroupBox * name_group =
new QGroupBox (tr (
"Filename/location"));
167 QGridLayout * name_layout =
new QGridLayout;
168 name_group->setLayout (name_layout);
170 name_layout->addWidget (file_name_label,1,1, 1,1);
173 name_layout->addWidget (start_dir_label,2,1);
176 name_layout->setColumnStretch (2,1);
183 QGroupBox * content_group =
new QGroupBox (tr (
"File contents"));
184 QGridLayout * content_layout =
new QGridLayout;
185 content_group->setLayout (content_layout);
188 content_layout->setColumnStretch (2,1);
191 QGridLayout *main_layout =
new QGridLayout;
192 main_layout->setSizeConstraint (QLayout::SetFixedSize);
193 main_layout->addWidget (name_group, 0, 0);
194 main_layout->addWidget (content_group, 1, 0);
195 main_layout->addWidget (button_box, 0, 1,3,1);
197 main_layout->setRowStretch (2,1);
200 setLayout (main_layout);
202 connect (
this, SIGNAL (finished (
int)),
this, SLOT (
handle_done (
int)));
213 int sort_column =
_file_list->horizontalHeader ()->sortIndicatorSection ();
214 Qt::SortOrder sort_order
215 =
_file_list->horizontalHeader ()->sortIndicatorOrder ();
216 settings->setValue (
"findfiles/sort_files_by_column", sort_column);
217 settings->setValue (
"findfiles/sort_files_by_order", sort_order);
218 settings->setValue (
"findfiles/column_state",
219 _file_list->horizontalHeader ()->saveState ());
230 settings->setValue (
"findfiles/check_text",
232 settings->setValue (
"findfiles/content_case",
264 QDirIterator::IteratorFlags flags = QDirIterator::NoIteratorFlags;
266 flags |= QDirIterator::Subdirectories;
268 QDir::Filters filters = QDir::Dirs | QDir::NoDotAndDotDot | QDir::Files;
270 filters |= QDir::CaseSensitive;
272 QStringList nameFilters;
317 QString res_str = QString (tr(
"%1 match(es)")).arg (m->
rowCount ());
326 QFileDialog::getExistingDirectory (
this, tr (
"Set search directory"),
329 if (! dir.isEmpty ())
342 if (idx.column () == 1)
391 QFile
file (info.absoluteFilePath ());
392 if (
file.open (QIODevice::ReadOnly))
394 QTextStream stream (&
file);
400 Qt::CaseInsensitive : Qt::CaseSensitive;
404 line = stream.readLine ();
405 match = line.contains (match_str, cs);
407 while (! line.isNull () && match ==
false);
For example cd octave end example noindent changes the current working directory to file
QPushButton * _close_button
QPushButton * _browse_button
void set_search_dir(const QString &dir)
virtual ~find_files_dialog()
QPushButton * _find_button
void file_selected(const QString &fileName)
QCheckBox * _contains_text_check
bool is_match(const QFileInfo &info)
QPushButton * _stop_button
QLineEdit * _contains_text_edit
void item_double_clicked(const QModelIndex &)
int rowCount(const QModelIndex &p=QModelIndex()) const
nd deftypefn *octave_map m
void addFile(const QFileInfo &info)
QDirIterator * _dir_iterator
static QSettings * get_settings(void)
QCheckBox * _content_case_check
QLineEdit * _start_dir_edit
find_files_dialog(QWidget *parent=0)
QCheckBox * _recurse_dirs_check
QCheckBox * _name_case_check
QFileInfo fileInfo(const QModelIndex &p) const
static QIcon icon(const QString &icon_name, bool fallback=true)
void dir_selected(const QString &fileName)
QLineEdit * _file_name_edit
QCheckBox * _include_dirs_check