OSDN Git Service

Update license.
[qt-creator-jp/qt-creator-jp.git] / src / plugins / find / basetextfind.h
1 /**************************************************************************
2 **
3 ** This file is part of Qt Creator
4 **
5 ** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies).
6 **
7 ** Contact: Nokia Corporation (info@qt.nokia.com)
8 **
9 **
10 ** GNU Lesser General Public License Usage
11 **
12 ** This file may be used under the terms of the GNU Lesser General Public
13 ** License version 2.1 as published by the Free Software Foundation and
14 ** appearing in the file LICENSE.LGPL included in the packaging of this file.
15 ** Please review the following information to ensure the GNU Lesser General
16 ** Public License version 2.1 requirements will be met:
17 ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
18 **
19 ** In addition, as a special exception, Nokia gives you certain additional
20 ** rights. These rights are described in the Nokia Qt LGPL Exception
21 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
22 **
23 ** Other Usage
24 **
25 ** Alternatively, this file may be used in accordance with the terms and
26 ** conditions contained in a signed written agreement between you and Nokia.
27 **
28 ** If you have questions regarding the use of this file, please contact
29 ** Nokia at qt-info@nokia.com.
30 **
31 **************************************************************************/
32
33 #ifndef BASETEXTFIND_H
34 #define BASETEXTFIND_H
35
36 #include "find_global.h"
37 #include "ifindsupport.h"
38
39 #include <QtCore/QScopedPointer>
40
41 QT_BEGIN_NAMESPACE
42 class QPlainTextEdit;
43 class QTextEdit;
44 class QTextCursor;
45 QT_END_NAMESPACE
46
47 namespace Find {
48 struct BaseTextFindPrivate;
49
50 class FIND_EXPORT BaseTextFind : public Find::IFindSupport
51 {
52     Q_OBJECT
53
54 public:
55     explicit BaseTextFind(QPlainTextEdit *editor);
56     explicit BaseTextFind(QTextEdit *editor);
57     virtual ~BaseTextFind();
58
59     bool supportsReplace() const;
60     Find::FindFlags supportedFindFlags() const;
61     void resetIncrementalSearch();
62     void clearResults();
63     QString currentFindString() const;
64     QString completedFindString() const;
65
66     Result findIncremental(const QString &txt, Find::FindFlags findFlags);
67     Result findStep(const QString &txt, Find::FindFlags findFlags);
68     void replace(const QString &before, const QString &after,
69         Find::FindFlags findFlags);
70     bool replaceStep(const QString &before, const QString &after,
71         Find::FindFlags findFlags);
72     int replaceAll(const QString &before, const QString &after,
73         Find::FindFlags findFlags);
74
75     void defineFindScope();
76     void clearFindScope();
77
78 signals:
79     void highlightAll(const QString &txt, Find::FindFlags findFlags);
80     void findScopeChanged(const QTextCursor &start, const QTextCursor &end,
81                           int verticalBlockSelectionFirstColumn,
82                           int verticalBlockSelectionLastColumn);
83
84 private:
85     bool find(const QString &txt,
86               Find::FindFlags findFlags,
87               QTextCursor start,
88               bool *wrapped);
89     QTextCursor replaceInternal(const QString &before, const QString &after,
90                                 Find::FindFlags findFlags);
91
92     QTextCursor textCursor() const;
93     void setTextCursor(const QTextCursor&);
94     QTextDocument *document() const;
95     bool isReadOnly() const;
96     bool inScope(int startPosition, int endPosition) const;
97     QTextCursor findOne(const QRegExp &expr, const QTextCursor &from, QTextDocument::FindFlags options) const;
98
99     QScopedPointer<BaseTextFindPrivate> d;
100 };
101
102 } // namespace Find
103
104 #endif // BASETEXTFIND_H