From e1c067a9a1ea0afc22ef8d752c9cbbcdc0374396 Mon Sep 17 00:00:00 2001 From: twanvl Date: Tue, 24 Apr 2007 20:53:19 +0000 Subject: [PATCH] Forgot to add find_replace.hpp git-svn-id: svn://svn.code.sf.net/p/magicseteditor/code/trunk@301 0fc631ac-6414-0410-93d0-97cfa31319b6 --- src/gui/value/text.cpp | 3 +-- src/util/find_replace.hpp | 48 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+), 2 deletions(-) create mode 100644 src/util/find_replace.hpp diff --git a/src/gui/value/text.cpp b/src/gui/value/text.cpp index eb4cf31c..d7a8a142 100644 --- a/src/gui/value/text.cpp +++ b/src/gui/value/text.cpp @@ -702,8 +702,7 @@ bool TextValueEditor::search(FindInfo& find, bool from_start) { size_t selection_max = index_to_untagged(value().value(), max(selection_start_i, selection_end_i)); if (find.forward()) { size_t start = min(v.size(), find.searchSelection() ? selection_min : selection_max); - size_t end = max(0, (int)v.size() - (int)find.findString().size()); - for (size_t i = start ; i <= end ; ++i) { + for (size_t i = start ; i + find.findString().size()) <= v.size() ; ++i) { if (matchSubstr(v, i, find)) return true; } } else { diff --git a/src/util/find_replace.hpp b/src/util/find_replace.hpp new file mode 100644 index 00000000..7616cfef --- /dev/null +++ b/src/util/find_replace.hpp @@ -0,0 +1,48 @@ +//+----------------------------------------------------------------------------+ +//| Description: Magic Set Editor - Program to make Magic (tm) cards | +//| Copyright: (C) 2001 - 2007 Twan van Laarhoven | +//| License: GNU General Public License 2 or later (see file COPYING) | +//+----------------------------------------------------------------------------+ + +#ifndef HEADER_UTIL_FIND_REPLACE +#define HEADER_UTIL_FIND_REPLACE + +// ----------------------------------------------------------------------------- : Includes + +#include +#include + +DECLARE_POINTER_TYPE(Card); +DECLARE_POINTER_TYPE(TextValue); + +// ----------------------------------------------------------------------------- : Search/replace + +/// Information for search/replace +class FindInfo { + public: + FindInfo(wxFindReplaceData& what) : what(what) {} + virtual ~FindInfo() {} + + /// Handle that a match was found. + /** Returns true if we are done and searching should be ended. */ + virtual bool handle(const CardP& card, const TextValueP& value, size_t pos, bool was_selection) = 0; + /// Should the found text be selected? + virtual bool select() const { return true; } + /// Should the current selection also be searched? + virtual bool searchSelection() const { return false; } + + /// Searching forward? + inline bool forward() const { return what.GetFlags() & wxFR_DOWN; } + /// Match whole words? + inline bool wholeWord() const { return what.GetFlags() & wxFR_WHOLEWORD; } + /// Case sensitive? + inline bool caseSensitive() const { return what.GetFlags() & wxFR_MATCHCASE; } + /// String to look for + inline const String& findString() const { return what.GetFindString(); } + + protected: + wxFindReplaceData& what; ///< What to search for, the direction to search in +}; + +// ----------------------------------------------------------------------------- : EOF +#endif