X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FParagraph.h;h=0336ffead27a425628b4e7acf32a0c5fd85a36bb;hb=882e2eeb7bcea230c24eaa69cd6a3e274369adde;hp=267fc8de60f6a8cec363a0e0cb8f6277b1932724;hpb=cfbe5dd9e1da55cba9499bee0220c2fdab65c3c0;p=lyx.git diff --git a/src/Paragraph.h b/src/Paragraph.h index 267fc8de60..0336ffead2 100644 --- a/src/Paragraph.h +++ b/src/Paragraph.h @@ -5,10 +5,10 @@ * Licence details can be found in the file COPYING. * * \author Asger Alstrup - * \author Lars Gullik Bjønnes + * \author Lars Gullik Bjønnes * \author John Levon - * \author André Pönitz - * \author Jürgen Vigna + * \author André Pönitz + * \author Jürgen Vigna * * Full author contact details are available in file CREDITS. */ @@ -33,6 +33,8 @@ class Change; class Counters; class Cursor; class CursorSlice; +class DocIterator; +class docstring_list; class DocumentClass; class Inset; class InsetBibitem; @@ -47,7 +49,8 @@ class OutputParams; class PainterInfo; class ParagraphParameters; class TexRow; - +class Toc; +class WordLangTuple; class FontSpan { public: @@ -77,7 +80,8 @@ enum AsStringParameter { AS_STR_NONE = 0, ///< No option, only printable characters. AS_STR_LABEL = 1, ///< Prefix with paragraph label. - AS_STR_INSETS = 2 ///< Go into insets. + AS_STR_INSETS = 2, ///< Go into insets. + AS_STR_NEWLINES = 4 ///< Get also newline characters. }; @@ -89,6 +93,9 @@ public: Paragraph(); /// Paragraph(Paragraph const &); + /// Partial copy constructor. + /// Copy the Paragraph contents from \p beg to \p end (without end). + Paragraph(Paragraph const & par, pos_type beg, pos_type end); /// Paragraph & operator=(Paragraph const &); /// @@ -96,6 +103,8 @@ public: /// int id() const; + /// + void addChangesToToc(DocIterator const & cdit, Buffer const & buf) const; /// Language const * getParLanguage(BufferParams const &) const; /// @@ -117,6 +126,10 @@ public: docstring asString(pos_type beg, pos_type end, int options = AS_STR_NONE) 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 write(std::ostream &, BufferParams const &, depth_type & depth) const; @@ -125,7 +138,8 @@ public: /// bool latex(BufferParams const &, Font const & outerfont, odocstream &, - TexRow & texrow, OutputParams const &) const; + TexRow & texrow, OutputParams const &, + int start_pos = 0, int end_pos = -1) const; /// Can we drop the standard paragraph wrapper? bool emptyTag() const; @@ -133,8 +147,11 @@ public: /// Get the id of the paragraph, usefull for docbook std::string getID(Buffer const & buf, OutputParams const & runparams) const; - /// Get the first word of a paragraph, return the position where it left - pos_type firstWord(odocstream & os, OutputParams const & runparams) const; + /// Output the first word of a paragraph, return the position where it left. + pos_type firstWordDocBook(odocstream & os, OutputParams const & runparams) const; + + /// Output the first word of a paragraph, return the position where it left. + pos_type firstWordLyXHTML(odocstream & os, OutputParams const & runparams) const; /// Writes to stream the docbook representation void simpleDocBookOnePar(Buffer const & buf, @@ -142,6 +159,13 @@ public: OutputParams const & runparams, Font const & outerfont, pos_type initial = 0) const; + /// \return any material that has had to be deferred until after the + /// paragraph has closed. + docstring simpleLyXHTMLOnePar(Buffer const & buf, + odocstream &, + OutputParams const & runparams, + Font const & outerfont, + pos_type initial = 0) const; /// bool hasSameLayout(Paragraph const & par) const; @@ -150,17 +174,13 @@ public: void makeSameLayout(Paragraph const & par); /// - void setInsetOwner(Inset * inset); - /// - Inset * inInset() const; + void setInsetOwner(Inset const * inset); /// - InsetCode ownerCode() const; - /// - bool forceEmptyLayout() const; + Inset const & inInset() const; /// bool allowParagraphCustomization() const; /// - bool useEmptyLayout() const; + bool usePlainLayout() const; /// pos_type size() const; /// @@ -171,7 +191,11 @@ public: /// Do not pass a temporary to this! void setLayout(Layout const & layout); /// - void setEmptyOrDefaultLayout(DocumentClass const & tc); + void setPlainOrDefaultLayout(DocumentClass const & tc); + /// + void setDefaultLayout(DocumentClass const & tc); + /// + void setPlainLayout(DocumentClass const & tc); /// This is the item depth, only used by enumerate and itemize signed char itemdepth; @@ -182,11 +206,13 @@ public: /// is there a change within the given range ? bool isChanged(pos_type start, pos_type end) const; /// is there an unchanged char at the given pos ? - bool isUnchanged(pos_type pos) const; + bool isChanged(pos_type pos) const; /// is there an insertion at the given pos ? bool isInserted(pos_type pos) const; /// is there a deletion at the given pos ? bool isDeleted(pos_type pos) const; + /// is the whole paragraph deleted ? + bool isDeleted(pos_type start, pos_type end) const; /// will the paragraph be physically merged with the next /// one if the imaginary end-of-par character is logically deleted? @@ -199,10 +225,10 @@ public: void setChange(pos_type pos, Change const & change); /// accept changes within the given range - void acceptChanges(BufferParams const & bparams, pos_type start, pos_type end); + void acceptChanges(pos_type start, pos_type end); /// reject changes within the given range - void rejectChanges(BufferParams const & bparams, pos_type start, pos_type end); + void rejectChanges(pos_type start, pos_type end); /// Paragraphs can contain "manual labels", for example, Description /// environment. The text for this user-editable label is stored in @@ -220,9 +246,6 @@ public: docstring const getLabelWidthString() const; /// Set label width string. void setLabelWidthString(docstring const & s); - /// translate \p label to the paragraph language if possible. - docstring const translateIfPossible(docstring const & label, - BufferParams const & bparams) const; /// Expand the counters for the labelstring of \c layout docstring expandLabel(Layout const &, BufferParams const &, bool process_appendix = true) const; @@ -247,10 +270,10 @@ public: between the characters font and the layoutfont. This is what is stored in the fonttable */ - Font const + Font const & getFontSettings(BufferParams const &, pos_type pos) const; /// - Font const getFirstFontSettings(BufferParams const &) const; + Font const & getFirstFontSettings(BufferParams const &) const; /** Get fully instantiated font. If pos == -1, use the layout font attached to this paragraph. @@ -298,14 +321,15 @@ public: /// void insertChar(pos_type pos, char_type c, Font const &, Change const & change); - /// - void insertInset(pos_type pos, Inset * inset, + /// 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); - /// - void insertInset(pos_type pos, Inset * inset, - Font const &, Change const & change); - /// - bool insetAllowed(InsetCode code); + /// Insert \p inset at position \p pos with \p change traking status and + /// \p font. + /// \return true if successful. + bool insertInset(pos_type pos, Inset * inset, + Font const & font, Change const & change); /// Inset * getInset(pos_type pos); /// @@ -319,6 +343,8 @@ public: /// InsetList const & insetList() const; + /// + void setBuffer(Buffer &); /// bool isHfill(pos_type pos) const; @@ -331,11 +357,13 @@ public: bool isSeparator(pos_type pos) const; /// bool isLineSeparator(pos_type pos) const; - /// True if the character/inset at this point can be part of a word. - /// Note that digits in particular are considered as letters - bool isLetter(pos_type pos) const; + /// True if the character/inset at this point is a word separator. + /// Note that digits in particular are not considered as word separator. + bool isWordSeparator(pos_type pos) const; /// True if the element at this point is a character that is not a letter. bool isChar(pos_type pos) const; + /// True if the element at this point is a space + bool isSpace(pos_type pos) const; /// returns true if at least one line break or line separator has been deleted /// at the beginning of the paragraph (either physically or logically) @@ -380,14 +408,26 @@ public: pos_type pos, ///< start from here. bool del = true) const; + void locateWord(pos_type & from, pos_type & to, + word_location const loc) const; /// - void updateWords(CursorSlice const & sl); + void updateWords(); + + /// Spellcheck word at position \p from and fill in found misspelled word + /// and \p suggestions if \p do_suggestion is true. + /// \return true if pointed word is misspelled. + bool spellCheck(pos_type & from, pos_type & to, WordLangTuple & wl, + docstring_list & suggestions, bool do_suggestion = true) const; + + /// Spellcheck word at position \p pos. + /// \return true if pointed word is misspelled. + bool isMisspelled(pos_type pos) const; private: /// void deregisterWords(); /// - void collectWords(CursorSlice const & sl); + void collectWords(); /// void registerWords();