summaryrefslogtreecommitdiffstats
path: root/kutils/kreplace.h
diff options
context:
space:
mode:
Diffstat (limited to 'kutils/kreplace.h')
-rw-r--r--kutils/kreplace.h269
1 files changed, 0 insertions, 269 deletions
diff --git a/kutils/kreplace.h b/kutils/kreplace.h
deleted file mode 100644
index ea385189b..000000000
--- a/kutils/kreplace.h
+++ /dev/null
@@ -1,269 +0,0 @@
-/*
- Copyright (C) 2001, S.R.Haque <srhaque@iee.org>.
- Copyright (C) 2002, David Faure <david@mandrakesoft.com>
- This file is part of the KDE project
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Library General Public
- License version 2, as published by the Free Software Foundation.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public License
- along with this library; see the file COPYING.LIB. If not, write to
- the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- Boston, MA 02110-1301, USA.
-*/
-
-#ifndef KREPLACE_H
-#define KREPLACE_H
-
-#include "kfind.h"
-
-class KReplaceNextDialog;
-
-/**
- * @ingroup main
- * @ingroup findreplace
- * @brief A generic implementation of the "replace" function.
- *
- * @author S.R.Haque <srhaque@iee.org>, David Faure <faure@kde.org>
- *
- * \b Detail:
- *
- * This class includes prompt handling etc. Also provides some
- * static functions which can be used to create custom behavior
- * instead of using the class directly.
- *
- * \b Example:
- *
- * To use the class to implement a complete replace feature:
- *
- * In the slot connect to the replace action, after using KReplaceDialog:
- * \code
- *
- * // This creates a replace-on-prompt dialog if needed.
- * m_replace = new KReplace(pattern, replacement, options, this);
- *
- * // Connect signals to code which handles highlighting
- * // of found text, and on-the-fly replacement.
- * connect( m_replace, TQT_SIGNAL( highlight( const TQString &, int, int ) ),
- * this, TQT_SLOT( slotHighlight( const TQString &, int, int ) ) );
- * // Connect findNext signal - called when pressing the button in the dialog
- * connect( m_replace, TQT_SIGNAL( findNext() ),
- * this, TQT_SLOT( slotReplaceNext() ) );
- * // Connect replace signal - called when doing a replacement
- * connect( m_replace, TQT_SIGNAL( replace(const TQString &, int, int, int) ),
- * this, TQT_SLOT( slotReplace(const TQString &, int, int, int) ) );
- * \endcode
- * Then initialize the variables determining the "current position"
- * (to the cursor, if the option FromCursor is set,
- * to the beginning of the selection if the option SelectedText is set,
- * and to the beginning of the document otherwise).
- * Initialize the "end of search" variables as well (end of doc or end of selection).
- * Swap begin and end if FindBackwards.
- * Finally, call slotReplaceNext();
- *
- * \code
- * void slotReplaceNext()
- * {
- * KFind::Result res = KFind::NoMatch;
- * while ( res == KFind::NoMatch && <position not at end> ) {
- * if ( m_replace->needData() )
- * m_replace->setData( <current text fragment> );
- *
- * // Let KReplace inspect the text fragment, and display a dialog if a match is found
- * res = m_replace->replace();
- *
- * if ( res == KFind::NoMatch ) {
- * <Move to the next text fragment, honoring the FindBackwards setting for the direction>
- * }
- * }
- *
- * if ( res == KFind::NoMatch ) // i.e. at end
- * <Call either m_replace->displayFinalDialog(); delete m_replace; m_replace = 0L;
- * or if ( m_replace->shouldRestart() ) { reinit (w/o FromCursor) and call slotReplaceNext(); }
- * else { m_replace->closeReplaceNextDialog(); }>
- * }
- * \endcode
- *
- * Don't forget delete m_find in the destructor of your class,
- * unless you gave it a parent widget on construction.
- *
- */
-class KUTILS_EXPORT KReplace :
- public KFind
-{
- Q_OBJECT
-
-public:
-
- /**
- * Only use this constructor if you don't use KFindDialog, or if
- * you use it as a modal dialog.
- * @param pattern The pattern to look for.
- * @param replacement The replacement string.
- * @param options Options for the find dialog. @see KFindDialog and KReplaceDialog.
- * @param parent The parent widget.
- */
- KReplace(const TQString &pattern, const TQString &replacement, long options, TQWidget *parent = 0);
- /**
- * This is the recommended constructor if you also use KReplaceDialog (non-modal).
- * You should pass the pointer to it here, so that when a message box
- * appears it has the right parent. Don't worry about deletion, KReplace
- * will notice if the find dialog is closed.
- * @param pattern The pattern to look for.
- * @param replacement The replacement string.
- * @param options Options for the find dialog. @see KFindDialog and KReplaceDialog.
- * @param parent The parent widget.
- * @param replaceDialog A pointer to the KReplaceDialog object.
- */
- KReplace(const TQString &pattern, const TQString &replacement, long options, TQWidget *parent, TQWidget* replaceDialog);
-
- /**
- * Destructor.
- */
- virtual ~KReplace();
-
- /**
- * Return the number of replacements made (i.e. the number of times
- * the replace signal was emitted).
- * Can be used in a dialog box to tell the user how many replacements were made.
- * The final dialog does so already, unless you used setDisplayFinalDialog(false).
- * @return The number of replacements.
- */
- int numReplacements() const { return m_replacements; }
-
- /**
- * Call this to reset the numMatches & numReplacements counts.
- * Can be useful if reusing the same KReplace for different operations,
- * or when restarting from the beginning of the document.
- */
- virtual void resetCounts();
-
- /**
- * Walk the text fragment (e.g. kwrite line, kspread cell) looking for matches.
- * For each match, if prompt-on-replace is specified, emits the highlight() signal
- * and displays the prompt-for-replace dialog before doing the replace.
- * @return Whether or not there has been a match.
- */
- Result replace();
-
- /**
- * Return (or create) the dialog that shows the "find next?" prompt.
- * Usually you don't need to call this.
- * One case where it can be useful, is when the user selects the "Find"
- * menu item while a find operation is under way. In that case, the
- * program may want to call setActiveWindow() on that dialog.
- * @return The replace next dialog.
- */
- KDialogBase* replaceNextDialog( bool create = false );
-
- /**
- * Close the "replace next?" dialog. The application should do this when
- * the last match was hit. If the application deletes the KReplace, then
- * "find previous" won't be possible anymore.
- */
- void closeReplaceNextDialog();
-
- /**
- * Searches the given string, replaces with the given replacement string,
- * and returns whether a match was found. If one is,
- * the replacement string length is also returned.
- *
- * A performance optimised version of the function is provided for use
- * with regular expressions.
- *
- * @param text The string to search.
- * @param pattern The pattern to look for.
- * @param replacement The replacement string to insert into the text.
- * @param index The starting index into the string.
- * @param options The options to use.
- * @param replacedLength Output parameter, contains the length of the replaced string.
- * Not always the same as replacement.length(), when backreferences are used.
- * @return The index at which a match was found, or -1 if no match was found.
- */
- static int replace( TQString &text, const TQString &pattern, const TQString &replacement, int index, long options, int *replacedLength );
-
- /**
- * Searches the given regular expression, replaces with the given replacement string,
- * and returns whether a match was found. If one is,
- * the replacement string length is also returned.
- *
- * Another version of the function is provided for use with strings.
- *
- * @param text The string to search.
- * @param pattern The regular expression pattern to look for.
- * @param replacement The replacement string to insert into the text.
- * @param index The starting index into the string.
- * @param options The options to use.
- * @param replacedLength Output parameter, contains the length of the replaced string.
- * Not always the same as replacement.length(), when backreferences are used.
- * @return The index at which a match was found, or -1 if no match was found.
- */
- static int replace( TQString &text, const TQRegExp &pattern, const TQString &replacement, int index, long options, int *replacedLength );
-
- /**
- * Returns @c true if we should restart the search from scratch.
- * Can ask the user, or return @c false (if we already searched/replaced the
- * whole document without the PromptOnReplace option).
- *
- * @param forceAsking set to @c true if the user modified the document during the
- * search. In that case it makes sense to restart the search again.
- *
- * @param showNumMatches set to @c true if the dialog should show the number of
- * matches. Set to @c false if the application provides a "find previous" action,
- * in which case the match count will be erroneous when hitting the end,
- * and we could even be hitting the beginning of the document (so not all
- * matches have even been seen).
- *
- * @return @c true, if the search should be restarted.
- */
- virtual bool shouldRestart( bool forceAsking = false, bool showNumMatches = true ) const;
-
- /**
- * Displays the final dialog telling the user how many replacements were made.
- * Call either this or shouldRestart().
- */
- virtual void displayFinalDialog() const;
-
-signals:
-
- /**
- * Connect to this slot to implement updating of replaced text during the replace
- * operation.
- *
- * Extra care must be taken to properly implement the "no prompt-on-replace" case.
- * For instance highlight isn't emitted in that case (some code might rely on it),
- * and for performance reasons one should repaint after replace() ONLY if
- * prompt-on-replace was selected.
- *
- * @param text The text, in which the replacement has already been done.
- * @param replacementIndex Starting index of the matched substring
- * @param replacedLength Length of the replacement string
- * @param matchedLength Length of the matched string
- */
- void replace(const TQString &text, int replacementIndex, int replacedLength, int matchedLength);
-
-protected slots:
-
- void slotSkip();
- void slotReplace();
- void slotReplaceAll();
-
-private:
- KReplaceNextDialog* dialog();
- void doReplace();
- static int replace( TQString &text, const TQString &replacement, int index, long options, int length );
-
- TQString m_replacement;
- unsigned m_replacements;
-
- // Binary compatible extensibility.
- class KReplacePrivate;
- KReplacePrivate *d;
-};
-#endif