From e6fd3d0318d0f53c51cf4cc87ccdc8f9741957e7 Mon Sep 17 00:00:00 2001 From: Robert Bieber Date: Fri, 23 Jul 2010 07:31:53 +0000 Subject: Theme Editor: Switched back to Lorenzo Bettini's find/replace dialog (with some modifications) as he changed the license to LGPL v2.1 git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27528 a1c6a512-1295-4272-9138-f99709370657 --- .../qtfindreplacedialog/findreplaceform.h | 149 +++++++++++++++++++++ 1 file changed, 149 insertions(+) create mode 100644 utils/themeeditor/qtfindreplacedialog/findreplaceform.h (limited to 'utils/themeeditor/qtfindreplacedialog/findreplaceform.h') diff --git a/utils/themeeditor/qtfindreplacedialog/findreplaceform.h b/utils/themeeditor/qtfindreplacedialog/findreplaceform.h new file mode 100644 index 0000000000..5ed85a7d60 --- /dev/null +++ b/utils/themeeditor/qtfindreplacedialog/findreplaceform.h @@ -0,0 +1,149 @@ +/* + * Copyright (C) 2009 Lorenzo Bettini + * See COPYING file that comes with this distribution + */ + +#ifndef FINDREPLACEFORM_H +#define FINDREPLACEFORM_H + +#include +#include + +#include "findreplace_global.h" + +namespace Ui { + class FindReplaceForm; +} + +class QTextEdit; +class QPlainTextEdit; +class QSettings; +class VariantEditor; + +/** + * The form for the find/replace dialog. The form presents the typical + * widgets you find in standard find/replace dialogs, and it acts on a QTextEdit. + * + * \image html Screenshot-FindReplace.png + * + * You need to set the QTextEdit explicitly, using the method setTextEdit(QTextEdit *textEdit). + * + * For instance + * \code + * m_findReplaceDialog = new FindReplaceDialog(this); + * m_findReplaceDialog->setModal(false); + * m_findReplaceDialog->setTextEdit(ui->textEdit); + * \endcode + * + * The find functionalities is available even if the find dialog is not shown: if something + * to search for was already specified, the application can call the methods findNext() and + * findPrev() (e.g., by connecting them to menu items). + * + * In case a regular expression is used as the search term, the form also checks whether the + * expression is a valid regular expression (You may want to take a look at the syntax of regular expressions: + * http://doc.trolltech.com/qregexp.html). + * + * The form provides also functionalities to save and restore its state using a QSettings object (i.e., + * the last word searched for, the options of the form, etc.) via the methods writeSettings() + * and readSettings(). + * + * You can take a look at the \ref examples page. + */ +class FINDREPLACESHARED_EXPORT FindReplaceForm : public QWidget { + Q_OBJECT +public: + FindReplaceForm(QWidget *parent = 0); + virtual ~FindReplaceForm(); + + /** + * Associates the text editor where to perform the search + * @param textEdit_ + */ + void setTextEdit(QTextEdit *textEdit_); + + /** + * Associates the text editor where to perform the search + * @param textEdit_ + */ + void setTextEdit(QPlainTextEdit *textEdit_); + + /// hides replace widgets from the form + void hideReplaceWidgets(); + + /** + * Writes the state of the form to the passed settings. + * @param settings + * @param prefix the prefix to insert in the settings + */ + virtual void writeSettings(QSettings &settings, const QString &prefix = "FindReplaceDialog"); + + /** + * Reads the state of the form from the passed settings. + * @param settings + * @param prefix the prefix to look for in the settings + */ + virtual void readSettings(QSettings &settings, const QString &prefix = "FindReplaceDialog"); + +public slots: + /** + * performs the find task + * @param down whether to find the next or the previous + * occurrence + */ + void find(bool down); + + /** + * Finds the next occurrence + */ + void find(); + + /** + * Finds the next occurrence + */ + void findNext() { find(true); } + + /** + * Finds the previous occurrence + */ + void findPrev() { find(false); } + + /** + * Replaces the found occurrences and goes to the next occurrence + */ + void replace(); + + /** + * Replaces all the found occurrences + */ + void replaceAll(); + +protected: + void changeEvent(QEvent *e); + + /// shows an error in the dialog + void showError(const QString &error); + + /// shows a message in the dialog + void showMessage(const QString &message); + +protected slots: + /// when the text edit contents changed + void textToFindChanged(); + + /// checks whether the passed text is a valid regexp + void validateRegExp(const QString &text); + + /// the regexp checkbox was selected + void regexpSelected(bool sel); + +protected: + Ui::FindReplaceForm *ui; + + /// for searching into the text + QTextCursor textCursor; + + /// the text editor (possibly) associated with this form + VariantEditor *textEdit; +}; + +#endif // FINDREPLACEFORM_H -- cgit v1.2.3