X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Flyxfind.h;h=9adcae968d9c0faf26f729df98b67a7c28f1836a;hb=3d4076b598deb18660e50ec9c327efc3b15f15d0;hp=e061cadc0cda871d870b94c180d86bb6438069c4;hpb=f1cba8ff64b369792fd49f5ddf90e8126ab476ac;p=lyx.git diff --git a/src/lyxfind.h b/src/lyxfind.h index e061cadc0c..9adcae968d 100644 --- a/src/lyxfind.h +++ b/src/lyxfind.h @@ -8,6 +8,7 @@ * \author John Levon * \author Jürgen Vigna * \author Alfredo Braunstein + * \author Tommaso Cucinotta * * Full author contact details are available in file CREDITS. */ @@ -17,9 +18,16 @@ #include "support/strfwd.h" +// FIXME +#include "support/docstring.h" + namespace lyx { + + +class Buffer; class BufferView; +class DocIterator; class FuncRequest; class Text; @@ -35,29 +43,88 @@ docstring const find2string(docstring const & search, * as a string that can be dispatched to the LyX core in a FuncRequest * wrapper. */ -docstring const replace2string(docstring const & search, - docstring const & replace, +docstring const replace2string(docstring const & replace, + docstring const & search, bool casesensitive, bool matchword, bool all, - bool forward); + bool forward, + bool findnext = true); /** Parse the string encoding of the find request that is found in * \c ev.argument and act on it. * The string is encoded by \c find2string. * \return true if the string was found. */ -bool find(BufferView * bv, FuncRequest const & ev); +bool lyxfind(BufferView * bv, FuncRequest const & ev); /** Parse the string encoding of the replace request that is found in * \c ev.argument and act on it. * The string is encoded by \c replace2string. + * \return whether we did anything */ -void replace(BufferView * bv, FuncRequest const &, bool has_deleted = false); +bool lyxreplace(BufferView * bv, + FuncRequest const &, bool has_deleted = false); /// find the next change in the buffer bool findNextChange(BufferView * bv); +/// find the previous change in the buffer +bool findPreviousChange(BufferView * bv); + +class FindAndReplaceOptions { +public: + typedef enum { + S_BUFFER, + S_DOCUMENT, + S_OPEN_BUFFERS, + S_ALL_MANUALS + } SearchScope; + FindAndReplaceOptions( + docstring const & find_buf_name, + bool casesensitive, + bool matchword, + bool forward, + bool expandmacros, + bool ignoreformat, + docstring const & repl_buf_name, + bool keep_case, + SearchScope scope = S_BUFFER + ); + FindAndReplaceOptions() { } + docstring find_buf_name; + bool casesensitive; + bool matchword; + bool forward; + bool expandmacros; + bool ignoreformat; + /// This is docstring() if no replace was requested + docstring repl_buf_name; + bool keep_case; + SearchScope scope; +}; + +/// Write a FindAdvOptions instance to a stringstream +std::ostringstream & operator<<(std::ostringstream & os, lyx::FindAndReplaceOptions const & opt); + +/// Read a FindAdvOptions instance from a stringstream +std::istringstream & operator>>(std::istringstream & is, lyx::FindAndReplaceOptions & opt); + +/// Perform a FindAdv operation. +bool findAdv(BufferView * bv, FindAndReplaceOptions const & opt); + +/** Computes the simple-text or LaTeX export (depending on opt) of buf starting + ** from cur and ending len positions after cur, if len is positive, or at the + ** paragraph or innermost inset end if len is -1. + ** + ** This is useful for computing opt.search from the SearchAdvDialog controller (ControlSearchAdv). + ** Ideally, this should not be needed, and the opt.search field should become a Text const &. + **/ +docstring stringifyFromForSearch( + FindAndReplaceOptions const & opt, + DocIterator const & cur, + int len = -1); + } // namespace lyx #endif // LYXFIND_H