]> git.lyx.org Git - lyx.git/blobdiff - src/Paragraph.h
Warn in GUI when mixing Title and InTitle layouts
[lyx.git] / src / Paragraph.h
index 0ea959fd544804779b3589392da91b8bb86109ea..bfb43e94745410dc52091b4022c5aaef1c0b3d4b 100644 (file)
@@ -19,8 +19,6 @@
 #include "FontEnums.h"
 #include "SpellChecker.h"
 
-#include "insets/InsetCode.h"
-
 #include "support/strfwd.h"
 #include "support/types.h"
 
@@ -51,7 +49,6 @@ class MetricsInfo;
 class OutputParams;
 class PainterInfo;
 class ParagraphParameters;
-class TexRow;
 class Toc;
 class WordLangTuple;
 class XHTMLStream;
@@ -78,7 +75,7 @@ public:
                return first == s.first && last == s.last;
        }
 
-       inline bool inside(pos_type p) const
+       inline bool contains(pos_type p) const
        {
                return first <= p && p <= last;
        }
@@ -92,15 +89,15 @@ public:
        inline FontSpan intersect(FontSpan const & f) const
        {
                FontSpan result = FontSpan();
-               if (inside(f.first))
+               if (contains(f.first))
                        result.first = f.first;
-               else if (f.inside(first))
+               else if (f.contains(first))
                        result.first = first;
                else
                        return result;
-               if (inside(f.last))
+               if (contains(f.last))
                        result.last = f.last;
-               else if (f.inside(last))
+               else if (f.contains(last))
                        result.last = last;
                return result;
        }
@@ -129,7 +126,8 @@ enum AsStringParameter
        AS_STR_LABEL = 1, ///< Prefix with paragraph label.
        AS_STR_INSETS = 2, ///< Go into insets.
        AS_STR_NEWLINES = 4, ///< Get also newline characters.
-       AS_STR_SKIPDELETE = 8 ///< Skip deleted text in change tracking.
+       AS_STR_SKIPDELETE = 8, ///< Skip deleted text in change tracking.
+       AS_STR_PLAINTEXT = 16 ///< Don't export formatting when descending into insets.
 };
 
 
@@ -154,7 +152,12 @@ public:
        void setId(int id);
 
        ///
-       void addChangesToToc(DocIterator const & cdit, Buffer const & buf) const;
+       void addChangesToToc(DocIterator const & cdit, Buffer const & buf,
+               bool output_active) const;
+       /// set the buffer flag if there are changes in the paragraph
+       void addChangesToBuffer(Buffer const & buf) const;
+       ///
+       bool isChangeUpdateRequired() const;
        ///
        Language const * getParLanguage(BufferParams const &) const;
        ///
@@ -174,26 +177,26 @@ public:
        ///             asString(AS_STR_LABEL | AS_STR_INSETS)
        ///             asString(AS_STR_INSETS)
        docstring asString(int options = AS_STR_NONE) const;
-       ///
+
+       /// Convert the paragraph to a string.
+       /// \note If options includes AS_STR_PLAINTEXT, then runparams must be != 0
        docstring asString(pos_type beg, pos_type end,
-               int options = AS_STR_NONE) const;
+                          int options = AS_STR_NONE,
+                          const OutputParams *runparams = 0) const;
        ///
-       void forToc(docstring &, size_t maxlen) const;
-
-       /// Extract only the explicitly visible text (without any formatting),
-       /// descending into insets
-       docstring stringify(pos_type beg, pos_type end, int options, OutputParams & runparams) const;
+       void forOutliner(docstring &, size_t const maxlen,
+                                        bool const shorten = true) const;
 
        ///
        void write(std::ostream &, BufferParams const &,
-                  depth_type & depth) const;
+               depth_type & depth) const;
        ///
        void validate(LaTeXFeatures &) const;
 
        /// \param force means: output even if layout.inpreamble is true.
        void latex(BufferParams const &, Font const & outerfont, otexstream &,
-                  OutputParams const &, int start_pos = 0, int end_pos = -1,
-                  bool force = false) const;
+               OutputParams const &, int start_pos = 0, int end_pos = -1,
+               bool force = false) const;
 
        /// Can we drop the standard paragraph wrapper?
        bool emptyTag() const;
@@ -219,6 +222,8 @@ public:
                                 XHTMLStream & xs,
                                 OutputParams const & runparams,
                                 Font const & outerfont,
+                                bool start_paragraph = true,
+                                bool close_paragraph = true,
                                 pos_type initial = 0) const;
 
        ///
@@ -377,10 +382,6 @@ public:
        ///
        void insertChar(pos_type pos, char_type c,
                        Font const &, Change const & change);
-       /// Insert \p inset at position \p pos with \p change traking status.
-       /// \return true if successful.
-       bool insertInset(pos_type pos, Inset * inset,
-                        Change const & change);
        /// Insert \p inset at position \p pos with \p change traking status and
        /// \p font.
        /// \return true if successful.
@@ -409,6 +410,8 @@ public:
        bool isInset(pos_type pos) const;
        ///
        bool isNewline(pos_type pos) const;
+       ///
+       bool isEnvSeparator(pos_type pos) const;
        /// return true if the char is a word separator
        bool isSeparator(pos_type pos) const;
        ///
@@ -434,8 +437,6 @@ public:
        /// return true if we allow this par to stay empty
        bool allowEmpty() const;
        ///
-       char_type transformChar(char_type c, pos_type pos) const;
-       ///
        ParagraphParameters & params();
        ///
        ParagraphParameters const & params() const;
@@ -488,10 +489,9 @@ public:
        /// \return true if one of the tested positions is misspelled.
        bool isMisspelled(pos_type pos, bool check_boundary = false) const;
 
-       /// \return true if both positions are inside the same
-       /// spell range - i.e. the same word.
-       /// use it for positions inside misspelled range only.
-       bool isSameSpellRange(pos_type pos1, pos_type pos2) const;
+       /// \return the spell range (misspelled area) around position.
+       /// Range is empty if word at position is correctly spelled.
+       FontSpan const & getSpellRange(pos_type pos) const;
 
        /// spell check of whole paragraph
        /// remember results until call of requestSpellCheck()