katesearch.h
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef __KATE_SEARCH_H__
00023 #define __KATE_SEARCH_H__
00024
00025 #include "katecursor.h"
00026 #include "../interfaces/document.h"
00027
00028 #include <kdialogbase.h>
00029
00030 #include <qstring.h>
00031 #include <qregexp.h>
00032 #include <qstringlist.h>
00033 #include <qvaluelist.h>
00034
00035 class KateView;
00036 class KateDocument;
00037 class KateSuperRangeList;
00038
00039 class KActionCollection;
00040
00041 class KateSearch : public QObject
00042 {
00043 Q_OBJECT
00044
00045 friend class KateDocument;
00046
00047 private:
00048 class SearchFlags
00049 {
00050 public:
00051 bool caseSensitive :1;
00052 bool wholeWords :1;
00053 bool fromBeginning :1;
00054 bool backward :1;
00055 bool selected :1;
00056 bool prompt :1;
00057 bool replace :1;
00058 bool finished :1;
00059 bool regExp :1;
00060 bool useBackRefs :1;
00061 };
00062
00063 class SConfig
00064 {
00065 public:
00066 SearchFlags flags;
00067 KateTextCursor cursor;
00068 KateTextCursor wrappedEnd;
00069 bool wrapped;
00070 bool showNotFound;
00071 uint matchedLength;
00072 KateTextCursor selBegin;
00073 KateTextCursor selEnd;
00074 };
00075
00076 public:
00077 enum Dialog_results {
00078 srCancel = KDialogBase::Cancel,
00079 srAll = KDialogBase::User1,
00080 srLast = KDialogBase::User2,
00081 srNo = KDialogBase::User3,
00082 srYes = KDialogBase::Ok
00083 };
00084
00085 public:
00086 KateSearch( KateView* );
00087 ~KateSearch();
00088
00089 void createActions( KActionCollection* );
00090
00091 public slots:
00092 void find();
00104 void find( const QString &pattern, long flags, bool add=true, bool shownotfound=false );
00105 void replace();
00114 void replace( const QString &pattern, const QString &replacement, long flags );
00115 void findAgain( bool back );
00116
00117 private slots:
00118 void replaceSlot();
00119 void slotFindNext() { findAgain( false ); }
00120 void slotFindPrev() { findAgain( true ); }
00121
00122 private:
00123 static void addToList( QStringList&, const QString& );
00124 static void addToSearchList( const QString& s ) { addToList( s_searchList, s ); }
00125 static void addToReplaceList( const QString& s ) { addToList( s_replaceList, s ); }
00126 static QStringList s_searchList;
00127 static QStringList s_replaceList;
00128 static QString s_pattern;
00129
00130 void search( SearchFlags flags );
00131 void wrapSearch();
00132 bool askContinue();
00133
00134 void findAgain();
00135 void promptReplace();
00136 void replaceAll();
00137 void replaceOne();
00138 void skipOne();
00139
00140 QString getSearchText();
00141 KateTextCursor getCursor();
00142 bool doSearch( const QString& text );
00143 void exposeFound( KateTextCursor &cursor, int slen );
00144
00145 inline KateView* view() { return m_view; }
00146 inline KateDocument* doc() { return m_doc; }
00147
00148 KateView* m_view;
00149 KateDocument* m_doc;
00150
00151 KateSuperRangeList* m_arbitraryHLList;
00152
00153 SConfig s;
00154
00155 QValueList<SConfig> m_searchResults;
00156 int m_resultIndex;
00157
00158 int replaces;
00159 QDialog* replacePrompt;
00160 QString m_replacement;
00161 QRegExp m_re;
00162 };
00163
00167 class KateReplacePrompt : public KDialogBase
00168 {
00169 Q_OBJECT
00170
00171 public:
00176 KateReplacePrompt(QWidget *parent);
00177
00178 signals:
00182 void clicked();
00183
00184 protected slots:
00188 void slotOk ();
00189
00193 void slotClose ();
00194
00198 void slotUser1 ();
00199
00203 void slotUser2 ();
00204
00208 void slotUser3 ();
00209
00214 void done (int result);
00215 };
00216
00217 class SearchCommand : public Kate::Command, public Kate::CommandExtension
00218 {
00219 public:
00220 SearchCommand() : m_ifindFlags(0) {;}
00221 bool exec(class Kate::View *view, const QString &cmd, QString &errorMsg);
00222 bool help(class Kate::View *, const QString &, QString &);
00223 QStringList cmds();
00224 bool wantsToProcessText( const QString & );
00225 void processText( Kate::View *, const QString& );
00226
00227 private:
00231 void ifindInit( const QString &cmd );
00235 void ifindClear();
00236
00237 long m_ifindFlags;
00238 };
00239
00240 #endif
00241
00242
This file is part of the documentation for kate Library Version 3.4.0.