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
00027 #include <kdialogbase.h>
00028
00029 #include <qstring.h>
00030 #include <qregexp.h>
00031 #include <qstringlist.h>
00032 #include <qvaluelist.h>
00033
00034 class KateView;
00035 class KateDocument;
00036 class KateSuperRangeList;
00037
00038 class KActionCollection;
00039
00040 class KateSearch : public QObject
00041 {
00042 Q_OBJECT
00043
00044 friend class KateDocument;
00045
00046 private:
00047 class SearchFlags
00048 {
00049 public:
00050 bool caseSensitive :1;
00051 bool wholeWords :1;
00052 bool fromBeginning :1;
00053 bool backward :1;
00054 bool selected :1;
00055 bool prompt :1;
00056 bool replace :1;
00057 bool finished :1;
00058 bool regExp :1;
00059 };
00060
00061 class SConfig
00062 {
00063 public:
00064 SearchFlags flags;
00065 KateTextCursor cursor;
00066 KateTextCursor wrappedEnd;
00067 bool wrapped;
00068 uint matchedLength;
00069 KateTextCursor selBegin;
00070 KateTextCursor selEnd;
00071 };
00072
00073 public:
00074 enum Dialog_results {
00075 srCancel = KDialogBase::Cancel,
00076 srAll = KDialogBase::User1,
00077 srLast = KDialogBase::User2,
00078 srNo = KDialogBase::User3,
00079 srYes = KDialogBase::Ok
00080 };
00081
00082 public:
00083 KateSearch( KateView* );
00084 ~KateSearch();
00085
00086 void createActions( KActionCollection* );
00087
00088 public slots:
00089 void find();
00090 void replace();
00091 void findAgain( bool back );
00092
00093 private slots:
00094 void replaceSlot();
00095 void slotFindNext() { findAgain( false ); }
00096 void slotFindPrev() { findAgain( true ); }
00097
00098 private:
00099 static void addToList( QStringList&, const QString& );
00100 static void addToSearchList( const QString& s ) { addToList( s_searchList, s ); }
00101 static void addToReplaceList( const QString& s ) { addToList( s_replaceList, s ); }
00102 static QStringList s_searchList;
00103 static QStringList s_replaceList;
00104
00105 void search( SearchFlags flags );
00106 void wrapSearch();
00107 bool askContinue();
00108
00109 void findAgain();
00110 void promptReplace();
00111 void replaceAll();
00112 void replaceOne();
00113 void skipOne();
00114
00115 QString getSearchText();
00116 KateTextCursor getCursor();
00117 bool doSearch( const QString& text );
00118 void exposeFound( KateTextCursor &cursor, int slen );
00119
00120 inline KateView* view() { return m_view; }
00121 inline KateDocument* doc() { return m_doc; }
00122
00123 KateView* m_view;
00124 KateDocument* m_doc;
00125
00126 KateSuperRangeList* m_arbitraryHLList;
00127
00128 SConfig s;
00129
00130 QValueList<SConfig> m_searchResults;
00131 int m_resultIndex;
00132
00133 int replaces;
00134 QDialog* replacePrompt;
00135 QString m_replacement;
00136 QRegExp m_re;
00137 };
00138
00142 class KateReplacePrompt : public KDialogBase
00143 {
00144 Q_OBJECT
00145
00146 public:
00151 KateReplacePrompt(QWidget *parent);
00152
00153 signals:
00157 void clicked();
00158
00159 protected slots:
00163 void slotOk ();
00164
00168 void slotClose ();
00169
00173 void slotUser1 ();
00174
00178 void slotUser2 ();
00179
00183 void slotUser3 ();
00184
00189 void done (int result);
00190 };
00191
00192 #endif
00193
00194
This file is part of the documentation for kate Library Version 3.3.90.