The search/replace/changes cleanup [lyxfind.C attached separately]

Comments?

Alfredo
/**
 * \file lyxfind.C
 * This file is part of LyX, the document processor.
 * Licence details can be found in the file COPYING.
 *
 * \author Lars Gullik Bj�nnes
 * \author John Levon
 * \author J�rgen Vigna
 * \author Alfredo Braunstein
 *
 * Full author contact details are available in file CREDITS.
 */

#include <config.h>

#include "lyxfind.h"

#include "buffer.h"
#include "BufferView.h"
#include "debug.h"
#include "iterators.h"
#include "gettext.h"
#include "lyxtext.h"
#include "paragraph.h"
#include "PosIterator.h"
#include "undo.h"

#include "frontends/Alert.h"

#include "insets/insettext.h"

#include "support/textutils.h"

using lyx::support::lowercase;
using lyx::support::uppercase;
using bv_funcs::put_selection_at;

using std::string;

namespace lyx {
namespace find {


namespace {

class MatchString
{
public:
	MatchString(string const & str, bool cs, bool mw)
		: str(str), cs(cs), mw(mw) {};
// returns true if the specified string is at the specified position
	bool operator()(Paragraph const & par, pos_type pos) const
	{			
		string::size_type size = str.length();
		pos_type i = 0;
		pos_type parsize = par.size();
		while ((pos + i < parsize)
		       && (string::size_type(i) < size)
		       && (cs ? (str[i] == par.getChar(pos + i))
			   : (uppercase(str[i]) == uppercase(par.getChar(pos + i))))) {
			++i;
		}
		if (size == string::size_type(i)) {
			// if necessary, check whether string matches word
			if (!mw)
				return true;
			if ((pos <= 0 || !IsLetterCharOrDigit(par.getChar(pos - 1)))
			    && (pos + pos_type(size) >= parsize
				|| !IsLetterCharOrDigit(par.getChar(pos + size)))) {
				return true;
			}
		}
		return false;
	}
	
private:
	string str;
	bool cs;
	bool mw;
};



} //namespace anon





namespace {




bool findForward(PosIterator & cur, PosIterator const & end,
		 MatchString & match)
{
	for (; cur != end && !match(*cur.pit(), cur.pos()); ++cur)
		;

	return cur != end;
}


bool findBackwards(PosIterator & cur, PosIterator const & beg,
		   MatchString & match)
{
	if (beg == cur)
		return false;
	do {
		--cur;
		if (match(*cur.pit(), cur.pos()))
			break;
	} while (cur != beg);

	return match(*cur.pit(), cur.pos());
}


bool findChange(PosIterator & cur, PosIterator const & end)
{
	for (; cur != end; ++cur) {
		if ((!cur.pit()->size() || !cur.at_end())
		    && cur.pit()->lookupChange(cur.pos()) != Change::UNCHANGED)
			break;
	}
	
	return cur != end;
}


bool searchAllowed(BufferView * bv, string const & str)
{
	if (str.empty()) {
		Alert::error(_("Search error"), _("Search string is empty"));
		return false;
	}
	if (!bv->available())
		return false;
	return true;
	    
}

} // namespace anon


bool find(BufferView * bv, string const & searchstr,
	  bool cs, bool mw, bool fw)
{
	if (!searchAllowed(bv, searchstr))
		return false;

	PosIterator cur = PosIterator(*bv);

	MatchString match(searchstr, cs, mw);
	
	bool found;

	if (fw) {
		PosIterator const end = bv->buffer()->pos_iterator_end();
		found = findForward(cur, end, match);
	} else {
		PosIterator const beg = bv->buffer()->pos_iterator_begin();
		found = findBackwards(cur, beg, match);
	}
	
	if (found)
		put_selection_at(bv, cur, searchstr.length(), !fw);

	return found;
}

namespace {
	


 
} //namespace anon


int replaceAll(BufferView * bv,
	       string const & searchstr, string const & replacestr,
	       bool cs, bool mw)
{
	Buffer & buf = *bv->buffer();

	if (!searchAllowed(bv, searchstr) || buf.isReadonly())
		return 0;
	
	recordUndo(Undo::ATOMIC, bv->text, 0,
		   buf.paragraphs().size() - 1);
	
	PosIterator cur = buf.pos_iterator_begin();
	PosIterator const end = buf.pos_iterator_end();
	MatchString match(searchstr, cs, mw);
	int num = 0;

	int const rsize = replacestr.size();
	int const ssize = searchstr.size();
	while (findForward(cur, end, match)) {
		pos_type pos = cur.pos();
		LyXFont const font
			= cur.pit()->getFontSettings(buf.params(), pos);
		int striked = ssize - cur.pit()->erase(pos, pos + ssize);
		cur.pit()->insert(pos, replacestr, font);
		advance(cur, rsize + striked);
		++num;
	}
	PosIterator beg = buf.pos_iterator_begin();
	bv->text->init(bv);
	put_selection_at(bv, beg, 0, false);
	return num;
}


int replace(BufferView * bv,
	    string const & searchstr, string const & replacestr,
	    bool cs, bool mw, bool fw)
{
	if (!searchAllowed(bv, searchstr) || bv->buffer()->isReadonly())
		return 0;
	
	{
		LyXText * text = bv->getLyXText();
		// if nothing selected or selection does not equal search
		// string search and select next occurance and return
		string const str1 = searchstr;
		string const str2 = text->selectionAsString(*bv->buffer(),
							    false);
		if ((cs && str1 != str2)
		    || lowercase(str1) != lowercase(str2)) {
			find(bv, searchstr, cs, mw, fw);
			return 0;
		}
	}

	LyXText * text = bv->getLyXText();
	// We have to do this check only because mathed insets don't
	// return their own LyXText but the LyXText of it's parent!
	if (!bv->theLockingInset() ||
	    ((text != bv->text) &&
	     (text->inset_owner == text->inset_owner->getLockingInset()))) {
		text->replaceSelectionWithString(replacestr);
		text->setSelectionRange(replacestr.length());
		text->cursor = fw ? text->selection.end
			: text->selection.start;
	}

	// FIXME: should be called via an LFUN
	bv->buffer()->markDirty();

	find(bv, searchstr, cs, mw, fw);
	bv->update();
	
	return 1;
}


bool findNextChange(BufferView * bv)
{
	if (!bv->available())
		return false;

	PosIterator cur = PosIterator(*bv);
	PosIterator const endit = bv->buffer()->pos_iterator_end();

	if (!findChange(cur, endit))
		return false;
	
	
	ParagraphList::iterator pit = cur.pit();
	pos_type pos = cur.pos();
	
	Change orig_change = pit->lookupChangeFull(pos);
	pos_type parsize = pit->size();
	pos_type end = pos;

	for (; end != parsize; ++end) {
		Change change = pit->lookupChangeFull(end);
		if (change != orig_change) {
			// slight UI optimisation: for replacements, we get
			// text like : _old_new. Consider that as one change.
			if (!(orig_change.type == Change::DELETED &&
				change.type == Change::INSERTED))
				break;
		}
	}
	pos_type length = end - pos;
	bv->text->init(bv);
	put_selection_at(bv, cur, length, true);
	return true;
}

} // find namespace
} // lyx namespace
Index: lyxfind.h
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/lyxfind.h,v
retrieving revision 1.16
diff -u -p -u -r1.16 lyxfind.h
--- lyxfind.h	7 Oct 2003 06:45:24 -0000	1.16
+++ lyxfind.h	4 Nov 2003 00:37:38 -0000
@@ -7,6 +7,7 @@
  * \author Lars Gullik Bj�nnes
  * \author John Levon
  * \author J�rgen Vigna
+ * \author Alfredo Braunstein
  *
  * Full author contact details are available in file CREDITS.
  */
@@ -24,48 +25,49 @@ class LyXText;
 namespace lyx {
 namespace find {
 
-enum SearchResult {
-	//
-	SR_NOT_FOUND = 0,
-	//
-	SR_FOUND,
-	//
-	SR_FOUND_NOUPDATE
-};
-
+/**
+ * This function replaces an ocurrence of \param search with the
+ * string \param replace
+ *
+ *  \param bv the BufferView in which the search is to be performed,
+ *         starting at the current cursor position.
+ *  \param search the string we're looking for.
+ *  \param replace if \c search is found, replace it with this.
+ *  \param cs perform a case-sensitive search for \c search.
+ *  \param mw match whole words only.
+ *  \param fw search forward from the current cursor position.
+ */
 
 int replace(BufferView * bv,
-	       std::string const &, std::string const &,
-	       bool, bool = true, bool = false,
-	       bool = false, bool = false);
-
+	    std::string const & search, std::string const & replace,
+	    bool cs, bool mw, bool fw);
 /**
- * This function is called as a general interface to find some
- * text from the actual cursor position in whatever direction
- * we want to go. This does also update the screen.
+ * This function replaces all ocurrences of \param search with
+ * the string \param replace
+ *
+ *  \param bv the BufferView in which the search is to be performed,
+ *         starting at the current cursor position.
+ *  \param search the string we're looking for.
+ *  \param replace if \c search is found, replace it with this.
+ *  \param cs perform a case-sensitive search for \c search.
+ *  \param mw match whole words only.
  */
-bool find(BufferView *,
-	     std::string const & searchstr, bool forward,
-	     bool casesens = true, bool matchwrd = false);
+
+int replaceAll(BufferView * bv,
+	       std::string const & search, std::string const & replace,
+	       bool cs, bool mw);
 
 /**
- * This function does search from the cursor position inside the
- * passed LyXText parameter and regards this LyXText as the root
- * LyXText. It will NOT update any screen stuff. It will however
- * set the cursor to the new position inside LyXText, before
- * returning to the calling function.
+ * This function is called as a general interface to find some text
+ * from the actual cursor position in whatever direction we want to
+ * go. This does also update the screen.
  */
+bool find(BufferView *, std::string const & search, 
+	  bool cs, bool mw, bool fw);
 
-SearchResult find(BufferView *, LyXText * text,
-		     std::string const & searchstr, bool forward,
-		     bool casesens = true, bool matchwrd = false);
 
 /// find the next change in the buffer
 bool findNextChange(BufferView * bv);
-
-SearchResult findNextChange(BufferView * bv, LyXText * text, lyx::pos_type & length);
-
-SearchResult nextChange(BufferView * bv, LyXText * text, lyx::pos_type & length);
 
 } // namespace find
 } // namespace lyx
Index: lyxfunc.C
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/lyxfunc.C,v
retrieving revision 1.531
diff -u -p -u -r1.531 lyxfunc.C
--- lyxfunc.C	3 Nov 2003 19:52:41 -0000	1.531
+++ lyxfunc.C	4 Nov 2003 00:37:41 -0000
@@ -1087,7 +1087,8 @@ void LyXFunc::dispatch(FuncRequest const
 		}
 		bool fw = (action == LFUN_WORDFINDFORWARD);
 		if (!searched_string.empty())
-			lyx::find::find(view(), searched_string, fw);
+			lyx::find::find(view(), searched_string,
+					true, false, fw);
 		break;
 	}
 
Index: paragraph.C
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/paragraph.C,v
retrieving revision 1.341
diff -u -p -u -r1.341 paragraph.C
--- paragraph.C	3 Nov 2003 17:47:22 -0000	1.341
+++ paragraph.C	4 Nov 2003 00:37:43 -0000
@@ -257,6 +257,15 @@ int Paragraph::erase(pos_type start, pos
 }
 
 
+void Paragraph::insert(pos_type start, string const & str,
+		       LyXFont const & font)
+{
+	int size = str.size();
+	for (int i = 0 ; i < size ; ++i)
+		insertChar(start + i, str[i], font);
+}
+
+
 bool Paragraph::checkInsertChar(LyXFont & font)
 {
 	if (pimpl_->inset_owner)
Index: paragraph.h
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/paragraph.h,v
retrieving revision 1.118
diff -u -p -u -r1.118 paragraph.h
--- paragraph.h	3 Nov 2003 17:47:24 -0000	1.118
+++ paragraph.h	4 Nov 2003 00:37:44 -0000
@@ -271,6 +271,9 @@ public:
 					lyx::pos_type endpos,
 					LyXFont_size def_size) const;
 	///
+	void insert(lyx::pos_type pos, std::string const & str,
+		    LyXFont const & font);
+	///
 	void insertChar(lyx::pos_type pos, value_type c);
 	///
 	void insertChar(lyx::pos_type pos, value_type c, LyXFont const &, Change change = Change(Change::INSERTED));
Index: frontends/controllers/ControlSearch.C
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/frontends/controllers/ControlSearch.C,v
retrieving revision 1.27
diff -u -p -u -r1.27 ControlSearch.C
--- frontends/controllers/ControlSearch.C	6 Oct 2003 15:42:46 -0000	1.27
+++ frontends/controllers/ControlSearch.C	4 Nov 2003 00:37:44 -0000
@@ -32,8 +32,8 @@ void ControlSearch::find(string const & 
 			 bool casesensitive, bool matchword, bool forward)
 {
 	bool const found = lyx::find::find(bufferview(), search,
-					    forward, casesensitive,
-					    matchword);
+					   casesensitive, matchword,
+					   forward);
 
 	if (!found)
 		lv_.message(_("String not found!"));
@@ -41,16 +41,17 @@ void ControlSearch::find(string const & 
 
 
 void ControlSearch::replace(string const & search, string const & replace,
-			    bool casesensitive, bool matchword, bool all)
+			    bool casesensitive, bool matchword,
+			    bool forward, bool all)
 {
 	// If not replacing all instances of the word, then do not
 	// move on to the next instance once the present instance has been
 	// changed
-	bool const once = !all;
-	int const replace_count =
-		lyx::find::replace(bufferview(),
-				    search, replace, true, casesensitive,
-				    matchword, all, once);
+	int const replace_count = all ?
+		lyx::find::replaceAll(bufferview(), search, replace,
+				      casesensitive, matchword)
+		: lyx::find::replace(bufferview(), search, replace,
+				     casesensitive, matchword, forward);
 
 	if (replace_count == 0) {
 		lv_.message(_("String not found!"));
Index: frontends/controllers/ControlSearch.h
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/frontends/controllers/ControlSearch.h,v
retrieving revision 1.15
diff -u -p -u -r1.15 ControlSearch.h
--- frontends/controllers/ControlSearch.h	6 Oct 2003 15:42:46 -0000	1.15
+++ frontends/controllers/ControlSearch.h	4 Nov 2003 00:37:44 -0000
@@ -28,7 +28,8 @@ public:
 
 	/// Replaces occurence of string
 	void replace(std::string const & search, std::string const & replace,
-		     bool casesensitive, bool matchword, bool all);
+		     bool casesensitive, bool matchword,
+		     bool forward, bool all);
 private:
 	/// not needed.
 	virtual void apply() {}
Index: frontends/controllers/ControlThesaurus.C
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/frontends/controllers/ControlThesaurus.C,v
retrieving revision 1.18
diff -u -p -u -r1.18 ControlThesaurus.C
--- frontends/controllers/ControlThesaurus.C	6 Oct 2003 15:42:47 -0000	1.18
+++ frontends/controllers/ControlThesaurus.C	4 Nov 2003 00:37:45 -0000
@@ -48,7 +48,7 @@ void ControlThesaurus::replace(string co
 	 */
 	int const replace_count =
 		lyx::find::replace(kernel().bufferview(), oldstr_, newstr,
-				    true, true, true, false, true);
+				   true /*cs*/, true /*mw*/, true /*fw*/);
 
 	oldstr_ = newstr;
 
Index: frontends/qt2/QSearch.C
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/frontends/qt2/QSearch.C,v
retrieving revision 1.19
diff -u -p -u -r1.19 QSearch.C
--- frontends/qt2/QSearch.C	6 Oct 2003 15:42:51 -0000	1.19
+++ frontends/qt2/QSearch.C	4 Nov 2003 00:37:45 -0000
@@ -54,7 +54,8 @@ void QSearch::find(string const & str, b
 
 
 void QSearch::replace(string const & findstr, string const & replacestr,
-	bool casesens, bool words, bool all)
+	bool casesens, bool words, bool backwards, bool all)
 {
-	controller().replace(findstr, replacestr, casesens, words, all);
+	controller().replace(findstr, replacestr, casesens, words,
+			     !backwards, all);
 }
Index: frontends/qt2/QSearch.h
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/frontends/qt2/QSearch.h,v
retrieving revision 1.10
diff -u -p -u -r1.10 QSearch.h
--- frontends/qt2/QSearch.h	6 Oct 2003 15:42:51 -0000	1.10
+++ frontends/qt2/QSearch.h	4 Nov 2003 00:37:45 -0000
@@ -39,8 +39,9 @@ private:
 	void find(std::string const & str, bool casesens,
 		  bool words, bool backwards);
 
-	void replace(std::string const & findstr, std::string const & replacestr,
-		bool casesens, bool words, bool all);
+	void replace(std::string const & findstr,
+		     std::string const & replacestr,
+		     bool casesens, bool words, bool backwards, bool all);
 };
 
 #endif // QSEARCH_H
Index: frontends/qt2/QSearchDialog.C
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/frontends/qt2/QSearchDialog.C,v
retrieving revision 1.14
diff -u -p -u -r1.14 QSearchDialog.C
--- frontends/qt2/QSearchDialog.C	6 Oct 2003 15:42:51 -0000	1.14
+++ frontends/qt2/QSearchDialog.C	4 Nov 2003 00:37:45 -0000
@@ -94,7 +94,7 @@ void QSearchDialog::replaceClicked()
 	form_->replace(find, replace,
 		caseCB->isChecked(),
 		wordsCB->isChecked(),
-		false);
+		backwardsCB->isChecked(), false);
 	uniqueInsert(findCO, findCO->currentText());
 	uniqueInsert(replaceCO, replaceCO->currentText());
 }
@@ -106,7 +106,7 @@ void QSearchDialog::replaceallClicked()
 		fromqstr(replaceCO->currentText()),
 		caseCB->isChecked(),
 		wordsCB->isChecked(),
-		true);
+		false, true);
 	uniqueInsert(findCO, findCO->currentText());
 	uniqueInsert(replaceCO, replaceCO->currentText());
 }
Index: frontends/xforms/FormSearch.C
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/frontends/xforms/FormSearch.C,v
retrieving revision 1.27
diff -u -p -u -r1.27 FormSearch.C
--- frontends/xforms/FormSearch.C	6 Oct 2003 15:42:57 -0000	1.27
+++ frontends/xforms/FormSearch.C	4 Nov 2003 00:37:46 -0000
@@ -85,6 +85,7 @@ ButtonPolicy::SMInput FormSearch::input(
 				     getString(dialog_->input_replace),
 				     fl_get_button(dialog_->check_casesensitive),
 				     fl_get_button(dialog_->check_matchword),
+				     !fl_get_button(dialog_->check_searchbackwards),				     
 				     all);
 	}
 
Index: insets/insetcollapsable.C
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/insets/insetcollapsable.C,v
retrieving revision 1.192
diff -u -p -u -r1.192 insetcollapsable.C
--- insets/insetcollapsable.C	3 Nov 2003 19:52:43 -0000	1.192
+++ insets/insetcollapsable.C	4 Nov 2003 00:37:48 -0000
@@ -528,42 +528,6 @@ void InsetCollapsable::markErased()
 }
 
 
-bool InsetCollapsable::nextChange(BufferView * bv, lyx::pos_type & length)
-{
-	bool found = inset.nextChange(bv, length);
-
-	if (first_after_edit && !found)
-		close(bv);
-	else if (!found)
-		first_after_edit = false;
-	return found;
-}
-
-
-bool InsetCollapsable::searchForward(BufferView * bv, string const & str,
-				     bool cs, bool mw)
-{
-	bool found = inset.searchForward(bv, str, cs, mw);
-	if (first_after_edit && !found)
-		close(bv);
-	else if (!found)
-		first_after_edit = false;
-	return found;
-}
-
-
-bool InsetCollapsable::searchBackward(BufferView * bv, string const & str,
-				      bool cs, bool mw)
-{
-	bool found = inset.searchBackward(bv, str, cs, mw);
-	if (first_after_edit && !found)
-		close(bv);
-	else if (!found)
-		first_after_edit = false;
-	return found;
-}
-
-
 WordLangTuple const
 InsetCollapsable::selectNextWordToSpellcheck(BufferView * bv, float & value) const
 {
Index: insets/insetcollapsable.h
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/insets/insetcollapsable.h,v
retrieving revision 1.138
diff -u -p -u -r1.138 insetcollapsable.h
--- insets/insetcollapsable.h	3 Nov 2003 16:46:42 -0000	1.138
+++ insets/insetcollapsable.h	4 Nov 2003 00:37:48 -0000
@@ -140,14 +140,6 @@ public:
 
 	void markErased();
 
-	bool nextChange(BufferView * bv, lyx::pos_type & length);
-
-	///
-	bool searchForward(BufferView * bv, std::string const & str,
-			   bool = true, bool = false);
-	bool searchBackward(BufferView * bv, std::string const & str,
-			    bool = true, bool = false);
-
 	///
 	void addPreview(lyx::graphics::PreviewLoader &) const;
 
Index: insets/insetert.C
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/insets/insetert.C,v
retrieving revision 1.167
diff -u -p -u -r1.167 insetert.C
--- insets/insetert.C	3 Nov 2003 19:52:44 -0000	1.167
+++ insets/insetert.C	4 Nov 2003 00:37:49 -0000
@@ -446,6 +446,8 @@ InsetERT::priv_dispatch(FuncRequest cons
 				break;
 			result = inset.dispatch(cmd);
 		} else {
+			// Is the following line correct? Ab
+			open(bv);
 			result = InsetCollapsable::priv_dispatch(cmd, idx, pos);
 		}
 		set_latex_font(bv);
Index: insets/insettabular.C
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/insets/insettabular.C,v
retrieving revision 1.364
diff -u -p -u -r1.364 insettabular.C
--- insets/insettabular.C	3 Nov 2003 19:52:45 -0000	1.364
+++ insets/insettabular.C	4 Nov 2003 00:37:52 -0000
@@ -2475,88 +2475,6 @@ void InsetTabular::markErased()
 }
 
 
-bool InsetTabular::nextChange(BufferView * bv, lyx::pos_type & length)
-{
-	if (the_locking_inset) {
-		if (the_locking_inset->nextChange(bv, length)) {
-			updateLocal(bv);
-			return true;
-		}
-		if (tabular.isLastCell(actcell))
-			return false;
-		++actcell;
-	}
-	InsetText & inset = tabular.getCellInset(actcell);
-	if (inset.nextChange(bv, length)) {
-		updateLocal(bv);
-		return true;
-	}
-	while (!tabular.isLastCell(actcell)) {
-		++actcell;
-		InsetText & inset = tabular.getCellInset(actcell);
-		if (inset.nextChange(bv, length)) {
-			updateLocal(bv);
-			return true;
-		}
-	}
-	return false;
-}
-
-
-bool InsetTabular::searchForward(BufferView * bv, string const & str,
-				 bool cs, bool mw)
-{
-	int cell = 0;
-	if (the_locking_inset) {
-		if (the_locking_inset->searchForward(bv, str, cs, mw)) {
-			updateLocal(bv);
-			return true;
-		}
-		if (tabular.isLastCell(actcell))
-			return false;
-		cell = actcell + 1;
-	}
-	InsetText & inset = tabular.getCellInset(cell);
-	if (inset.searchForward(bv, str, cs, mw)) {
-		updateLocal(bv);
-		return true;
-	}
-	while (!tabular.isLastCell(cell)) {
-		++cell;
-		InsetText & inset = tabular.getCellInset(cell);
-		if (inset.searchForward(bv, str, cs, mw)) {
-			updateLocal(bv);
-			return true;
-		}
-	}
-	return false;
-}
-
-
-bool InsetTabular::searchBackward(BufferView * bv, string const & str,
-			       bool cs, bool mw)
-{
-	int cell = tabular.getNumberOfCells();
-	if (the_locking_inset) {
-		if (the_locking_inset->searchBackward(bv, str, cs, mw)) {
-			updateLocal(bv);
-			return true;
-		}
-		cell = actcell;
-	}
-
-	while (cell) {
-		--cell;
-		InsetText & inset = tabular.getCellInset(cell);
-		if (inset.searchBackward(bv, str, cs, mw)) {
-			updateLocal(bv);
-			return true;
-		}
-	}
-	return false;
-}
-
-
 bool InsetTabular::insetAllowed(InsetOld::Code code) const
 {
 	if (the_locking_inset)
Index: insets/insettabular.h
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/insets/insettabular.h,v
retrieving revision 1.158
diff -u -p -u -r1.158 insettabular.h
--- insets/insettabular.h	3 Nov 2003 16:46:43 -0000	1.158
+++ insets/insettabular.h	4 Nov 2003 00:37:53 -0000
@@ -175,14 +175,6 @@ public:
 
 	void markErased();
 
-	/// find next change
-	bool nextChange(BufferView *, lyx::pos_type & length);
-	///
-	bool searchForward(BufferView *, std::string const &,
-			   bool = true, bool = false);
-	bool searchBackward(BufferView *, std::string const &,
-			    bool = true, bool = false);
-
 	// this should return true if we have a "normal" cell, otherwise true.
 	// "normal" means without width set!
 	bool forceDefaultParagraphs(InsetOld const * in) const;
Index: insets/insettext.C
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/insets/insettext.C,v
retrieving revision 1.524
diff -u -p -u -r1.524 insettext.C
--- insets/insettext.C	3 Nov 2003 19:52:46 -0000	1.524
+++ insets/insettext.C	4 Nov 2003 00:37:54 -0000
@@ -1474,81 +1474,6 @@ void InsetText::selectSelectedWord(Buffe
 	getLyXText(bv)->selectSelectedWord();
 	updateLocal(bv, false);
 }
-
-
-bool InsetText::nextChange(BufferView * bv, lyx::pos_type & length)
-{
-	if (the_locking_inset) {
-		if (the_locking_inset->nextChange(bv, length))
-			return true;
-		text_.cursorRight(true);
-	}
-	lyx::find::SearchResult result =
-		lyx::find::findNextChange(bv, &text_, length);
-
-	if (result == lyx::find::SR_FOUND) {
-		LyXCursor cur = text_.cursor;
-		bv->unlockInset(bv->theLockingInset());
-		if (bv->lockInset(this))
-			locked = true;
-		text_.cursor = cur;
-		text_.setSelectionRange(length);
-		updateLocal(bv, false);
-	}
-	return result != lyx::find::SR_NOT_FOUND;
-}
-
-
-bool InsetText::searchForward(BufferView * bv, string const & str,
-			      bool cs, bool mw)
-{
-	if (the_locking_inset) {
-		if (the_locking_inset->searchForward(bv, str, cs, mw))
-			return true;
-		text_.cursorRight(true);
-	}
-	lyx::find::SearchResult result =
-		lyx::find::find(bv, &text_, str, true, cs, mw);
-
-	if (result == lyx::find::SR_FOUND) {
-		LyXCursor cur = text_.cursor;
-		bv->unlockInset(bv->theLockingInset());
-		if (bv->lockInset(this))
-			locked = true;
-		text_.cursor = cur;
-		text_.setSelectionRange(str.length());
-		updateLocal(bv, false);
-	}
-	return result != lyx::find::SR_NOT_FOUND;
-}
-
-
-bool InsetText::searchBackward(BufferView * bv, string const & str,
-			       bool cs, bool mw)
-{
-	if (the_locking_inset) {
-		if (the_locking_inset->searchBackward(bv, str, cs, mw))
-			return true;
-	}
-	if (!locked) {
-		text_.setCursor(paragraphs.size() - 1, paragraphs.back().size());
-	}
-	lyx::find::SearchResult result =
-		lyx::find::find(bv, &text_, str, false, cs, mw);
-
-	if (result == lyx::find::SR_FOUND) {
-		LyXCursor cur = text_.cursor;
-		bv->unlockInset(bv->theLockingInset());
-		if (bv->lockInset(this))
-			locked = true;
-		text_.cursor = cur;
-		text_.setSelectionRange(str.length());
-		updateLocal(bv, false);
-	}
-	return result != lyx::find::SR_NOT_FOUND;
-}
-
-
 bool InsetText::checkInsertChar(LyXFont & font)
 {
 	return owner() ? owner()->checkInsertChar(font) : true;
Index: insets/insettext.h
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/insets/insettext.h,v
retrieving revision 1.220
diff -u -p -u -r1.220 insettext.h
--- insets/insettext.h	3 Nov 2003 16:46:44 -0000	1.220
+++ insets/insettext.h	4 Nov 2003 00:37:55 -0000
@@ -175,15 +175,7 @@ public:
 	 * for the (empty) paragraph contained.
 	 */
 	void markNew(bool track_changes = false);
-	/// find next change
-	bool nextChange(BufferView *, lyx::pos_type & length);
 
-	///
-	bool searchForward(BufferView *, std::string const &,
-			   bool = true, bool = false);
-	///
-	bool searchBackward(BufferView *, std::string const &,
-			    bool = true, bool = false);
 	///
 	bool checkInsertChar(LyXFont &);
 	///
Index: insets/updatableinset.C
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/insets/updatableinset.C,v
retrieving revision 1.32
diff -u -p -u -r1.32 updatableinset.C
--- insets/updatableinset.C	3 Nov 2003 19:52:46 -0000	1.32
+++ insets/updatableinset.C	4 Nov 2003 00:37:55 -0000
@@ -149,27 +149,3 @@ UpdatableInset::selectNextWordToSpellche
 }
 
 
-bool UpdatableInset::nextChange(BufferView * bv, lyx::pos_type &)
-{
-	// we have to unlock ourself in this function by default!
-	bv->unlockInset(const_cast<UpdatableInset *>(this));
-	return false;
-}
-
-
-bool UpdatableInset::searchForward(BufferView * bv, string const &,
-				   bool, bool)
-{
-	// we have to unlock ourself in this function by default!
-	bv->unlockInset(const_cast<UpdatableInset *>(this));
-	return false;
-}
-
-
-bool UpdatableInset::searchBackward(BufferView * bv, string const &,
-				    bool, bool)
-{
-	// we have to unlock ourself in this function by default!
-	bv->unlockInset(const_cast<UpdatableInset *>(this));
-	return false;
-}
Index: insets/updatableinset.h
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/insets/updatableinset.h,v
retrieving revision 1.20
diff -u -p -u -r1.20 updatableinset.h
--- insets/updatableinset.h	29 Oct 2003 10:47:19 -0000	1.20
+++ insets/updatableinset.h	4 Nov 2003 00:37:55 -0000
@@ -98,18 +98,6 @@ public:
 	///
 	virtual void toggleSelection(BufferView *, bool /*kill_selection*/) {}
 
-	/// find the next change in the inset
-	virtual bool nextChange(BufferView * bv, lyx::pos_type & length);
-
-	///
-	// needed for search/replace functionality
-	///
-	virtual bool searchForward(BufferView *, std::string const &,
-				   bool = true, bool = false);
-	///
-	virtual bool searchBackward(BufferView *, std::string const &,
-				    bool = true, bool = false);
-
 protected:
 	///  An updatable inset could handle lyx editing commands
 	virtual

Reply via email to