diff options
| author | Robert Bieber <robby@bieberphoto.com> | 2010-06-26 07:59:23 +0000 |
|---|---|---|
| committer | Robert Bieber <robby@bieberphoto.com> | 2010-06-26 07:59:23 +0000 |
| commit | be70fd89be787e2b24604f9ba785b87c1f8f1d22 (patch) | |
| tree | 5b7ec98c48d2a5d2dc5078007142d2e92c09a8a2 /utils/themeeditor/findreplace/findreplaceform.h | |
| parent | 5300c7014d602c57fcae7f6619f5138d83ba33c0 (diff) | |
| download | rockbox-be70fd89be787e2b24604f9ba785b87c1f8f1d22.zip rockbox-be70fd89be787e2b24604f9ba785b87c1f8f1d22.tar.gz rockbox-be70fd89be787e2b24604f9ba785b87c1f8f1d22.tar.bz2 rockbox-be70fd89be787e2b24604f9ba785b87c1f8f1d22.tar.xz | |
Theme Editor: Added an edit menu with a find/replace function (copied from an LGPL library)
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27137 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'utils/themeeditor/findreplace/findreplaceform.h')
| -rw-r--r-- | utils/themeeditor/findreplace/findreplaceform.h | 153 |
1 files changed, 153 insertions, 0 deletions
diff --git a/utils/themeeditor/findreplace/findreplaceform.h b/utils/themeeditor/findreplace/findreplaceform.h new file mode 100644 index 0000000..f18052b --- /dev/null +++ b/utils/themeeditor/findreplace/findreplaceform.h @@ -0,0 +1,153 @@ +/*************************************************************************** + * __________ __ ___. + * Open \______ \ ____ ____ | | _\_ |__ _______ ___ + * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / + * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < + * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ + * \/ \/ \/ \/ \/ + * $Id$ + * + * This file has been copied from Lorenzo Bettini, with minor modifications + * made available under the LGPL version 3, as the original file was licensed + * + **************************************************************************** + * + * Copyright (C) 2009 Lorenzo Bettini <http://www.lorenzobettini.it> + * See COPYING file that comes with this distribution + */ + +#ifndef FINDREPLACEFORM_H +#define FINDREPLACEFORM_H + +#include <QWidget> +#include <QTextCursor> +#include <QPlainTextEdit> + +namespace Ui { + class FindReplaceForm; +} + +class QTextEdit; +class QSettings; + +/** + * 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 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(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 + QPlainTextEdit *textEdit; +}; + +#endif // FINDREPLACEFORM_H |