kate Library API Documentation

katesearch.h

00001 /* This file is part of the KDE libraries 00002 Copyright (C) 2002 John Firebaugh <jfirebaugh@kde.org> 00003 Copyright (C) 2001-2004 Christoph Cullmann <cullmann@kde.org> 00004 Copyright (C) 2001 Joseph Wenninger <jowenn@kde.org> 00005 Copyright (C) 1999 Jochen Wilhelmy <digisnap@cs.tu-berlin.de> 00006 00007 This library is free software; you can redistribute it and/or 00008 modify it under the terms of the GNU Library General Public 00009 License version 2 as published by the Free Software Foundation. 00010 00011 This library is distributed in the hope that it will be useful, 00012 but WITHOUT ANY WARRANTY; without even the implied warranty of 00013 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00014 Library General Public License for more details. 00015 00016 You should have received a copy of the GNU Library General Public License 00017 along with this library; see the file COPYING.LIB. If not, write to 00018 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 00019 Boston, MA 02111-1307, USA. 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; // after wraping around, search/replace until here 00069 bool wrapped; // have we allready wrapped around ? 00070 bool showNotFound; // pop up annoying dialogs? 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 &/*cmdname*/ ); 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 // kate: space-indent on; indent-width 2; replace-tabs on;
KDE Logo
This file is part of the documentation for kate Library Version 3.4.0.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Thu Apr 14 00:46:08 2005 by doxygen 1.3.7 written by Dimitri van Heesch, © 1997-2003