]> git.lyx.org Git - lyx.git/blobdiff - src/Text.h
Cleanup: Replace a bunch of Cursor arguments with DocIterators.
[lyx.git] / src / Text.h
index df19ca7ae2dc71c20621bb692c9a4f4a9d274ae8..a0c94dab07856130645d0023551ec46dcc97a33b 100644 (file)
@@ -19,8 +19,6 @@
 
 namespace lyx {
 
-class Buffer;
-class BufferParams;
 class BufferView;
 class CompletionList;
 class CursorSlice;
@@ -41,23 +39,26 @@ class Spacing;
 class Text {
 public:
        /// constructor
-       explicit Text();
+       explicit Text(InsetText * owner)
+               : autoBreakRows_(false), owner_(owner)
+       {}
 
        /// \return true if there's no content at all.
        /// \warning a non standard layout on an empty paragraph doesn't
        // count as empty.
        bool empty() const;
+       /// Access to owner InsetText.
+       InsetText const & inset() const;
 
        ///
-       FontInfo layoutFont(Buffer const & buffer, pit_type pit) const;
+       FontInfo layoutFont(pit_type pit) const;
        ///
-       FontInfo labelFont(Buffer const & buffer,
-               Paragraph const & par) const;
+       FontInfo labelFont(Paragraph const & par) const;
        /** Set font of character at position \p pos in paragraph \p pit.
         *  Must not be called if \p pos denotes an inset with text contents,
         *  and the inset is not allowed inside a font change (see below).
         */
-       void setCharFont(Buffer const & buffer, pit_type pit, pos_type pos,
+       void setCharFont(pit_type pit, pos_type pos,
                Font const & font, Font const & display_font);
 
        /** Needed to propagate font changes to all text cells of insets
@@ -74,7 +75,7 @@ public:
        void breakParagraph(Cursor & cur, bool inverse_logic = false);
 
        /// set layout over selection
-       void setLayout(Buffer const & buffer, pit_type start, pit_type end,
+       void setLayout(pit_type start, pit_type end,
                docstring const & layout);
        /// Set given layout to current cursor position.
        /// FIXME: replace Cursor with DocIterator.
@@ -162,9 +163,9 @@ public:
        /// accept or reject the selected change
        void acceptOrRejectChanges(Cursor & cur, ChangeOp op);
        /// accept the changes within the complete Text
-       void acceptChanges(BufferParams const & bparams);
+       void acceptChanges();
        /// reject the changes within the complete Text
-       void rejectChanges(BufferParams const & bparams);
+       void rejectChanges();
 
        /// returns true if par was empty and was removed
        bool setCursor(Cursor & cur, pit_type par, pos_type pos,
@@ -251,25 +252,25 @@ public:
        /* these things are for search and replace */
 
        /// needed to insert the selection
-       /// FIXME: replace Cursor with DocIterator.
-       void insertStringAsLines(Cursor & cur, docstring const & str);
+       void insertStringAsLines(DocIterator const & dit, docstring const & str,
+               Font const & font);
        /// needed to insert the selection
-       /// FIXME: replace Cursor with DocIterator.
-       void insertStringAsParagraphs(Cursor & cur, docstring const & str);
+       void insertStringAsParagraphs(DocIterator const & dit, docstring const & str,
+               Font const & font);
 
        /// access to our paragraphs
        ParagraphList const & paragraphs() const { return pars_; }
        ParagraphList & paragraphs() { return pars_; }
        /// return true if this is the main text
-       bool isMainText(Buffer const &) const;
+       bool isMainText() const;
 
        ///
-       double spacing(Buffer const & buffer, Paragraph const & par) const;
+       double spacing(Paragraph const & par) const;
        /// make a suggestion for a label
        /// FIXME: replace Cursor with DocIterator.
        docstring getPossibleLabel(Cursor const & cur) const;
        /// is this paragraph right-to-left?
-       bool isRTL(Buffer const &, Paragraph const & par) const;
+       bool isRTL(Paragraph const & par) const;
 
        ///
        bool checkAndActivateInset(Cursor & cur, bool front);
@@ -277,10 +278,10 @@ public:
        bool checkAndActivateInsetVisual(Cursor & cur, bool movingForward, bool movingLeft);
 
        ///
-       void write(Buffer const & buf, std::ostream & os) const;
+       void write(std::ostream & os) const;
        /// returns true if \end_document has not been read
        /// insetPtr is the containing Inset
-       bool read(Buffer const & buf, Lexer & lex, ErrorList & errorList, 
+       bool read(Lexer & lex, ErrorList & errorList, 
                  InsetText * insetPtr);
 
        /// delete double spaces, leading spaces, and empty paragraphs around old cursor.
@@ -311,13 +312,10 @@ public:
        ///
        docstring completionPrefix(Cursor const & cur) const;
 
-public:
-       ///
-       ParagraphList pars_;
-
-       ///
-       bool autoBreakRows_;
 private:
+       /// The InsetText owner shall have access to everything.
+       friend class InsetText;
+
        /// return past-the-last paragraph influenced by a layout
        /// change on pit
        pit_type undoSpan(pit_type pit);
@@ -343,7 +341,18 @@ private:
        /// \param asParagraphs whether to paste as paragraphs or as lines
        void pasteString(Cursor & cur, docstring const & str,
                        bool asParagraphs);
+       ///
+       void readParToken(Paragraph & par, Lexer & lex, std::string const & token,
+               Font & font, Change & change, ErrorList & errorList);
+       ///
+       void readParagraph(Paragraph & par, Lexer & lex, ErrorList & errorList);
 
+       /// Owner Inset.
+       InsetText * owner_;
+       ///
+       ParagraphList pars_;
+       ///
+       bool autoBreakRows_;
        /// position of the text in the buffer.
        DocIterator macrocontext_position_;
 };