]> git.lyx.org Git - lyx.git/blobdiff - src/paragraph.h
add missing 'else'
[lyx.git] / src / paragraph.h
index 4f49050a4d28baa83893901f96822c7b1cfa0eee..caedbaf9faac92a879ba5d93d329934878d624d4 100644 (file)
@@ -9,10 +9,6 @@
 #ifndef PARAGRAPH_H
 #define PARAGRAPH_H
 
-#ifdef __GNUG__
-#pragma interface
-#endif
-
 #include "lyxlayout_ptr_fwd.h"
 #include "lyxfont.h" // Just for LyXFont::FONT_SIZE
 #include "InsetList.h"
 #include "insets/inset.h" // Just for Inset::Code
 
 #include "support/types.h"
+#include "changes.h"
 
 #include "LString.h"
 
 class BufferParams;
 class BufferView;
 class Counters;
-class InsetBibKey;
+class InsetBibitem;
 class Language;
 class LaTeXFeatures;
 class ParagraphParameters;
@@ -93,11 +90,6 @@ public:
        ///
        void read();
 
-       ///
-       Paragraph * TeXOnePar(Buffer const *, BufferParams const &,
-                                std::ostream &, TexRow & texrow,
-                                bool moving_arg);
-
        ///
        int startTeXParParams(BufferParams const &, std::ostream &, bool) const;
 
@@ -110,9 +102,6 @@ public:
                             std::ostream &, TexRow & texrow, bool moving_arg);
 
        ///
-       Paragraph * TeXEnvironment(Buffer const *, BufferParams const &,
-                                     std::ostream &, TexRow & texrow);
-       ///
        bool hasSameLayout(Paragraph const * par) const;
 
        ///
@@ -154,7 +143,7 @@ public:
        char itemdepth;
 
        ///
-       InsetBibKey * bibkey;  // ale970302
+       InsetBibitem * bibitem();  // ale970302
 
 #ifndef NO_NEXT
        ///
@@ -165,6 +154,36 @@ public:
        ///
        Paragraph const * next() const;
 
+       /// initialise tracking for this par
+       void trackChanges(Change::Type = Change::UNCHANGED);
+
+       /// stop tracking
+       void untrackChanges();
+
+       /// set entire paragraph to new text for change tracking
+       void cleanChanges();
+
+       /// look up change type at given pos
+       Change::Type lookupChange(lyx::pos_type pos) const;
+
+       /// look up change at given pos
+       Change const lookupChangeFull(lyx::pos_type pos) const;
+
+       /// is there a change within the given range ?
+       bool isChanged(lyx::pos_type start, lyx::pos_type end) const;
+
+       /// is there a non-addition in this range ?
+       bool isChangeEdited(lyx::pos_type start, lyx::pos_type end) const;
+
+       /// accept change
+       void acceptChange(lyx::pos_type start, lyx::pos_type end);
+
+       /// reject change
+       void rejectChange(lyx::pos_type start, lyx::pos_type end);
+
+       /// mark whole par as erased
+       void markErased();
+
        ///
        void previous(Paragraph *);
        ///
@@ -197,9 +216,13 @@ public:
        depth_type getMaxDepthAfter() const;
        ///
        void applyLayout(LyXLayout_ptr const & new_layout);
-       ///
+
+       /// erase the char at the given position
        void erase(lyx::pos_type pos);
-       /** Get unistantiated font setting. Returns the difference
+       /// erase the given range. Returns true if actually erased.
+       bool erase(lyx::pos_type start, lyx::pos_type end);
+
+       /** Get uninstantiated font setting. Returns the difference
            between the characters font and the layoutfont.
            This is what is stored in the fonttable
        */
@@ -234,13 +257,13 @@ public:
        ///
        void insertChar(lyx::pos_type pos, value_type c);
        ///
-       void insertChar(lyx::pos_type pos, value_type c, LyXFont const &);
+       void insertChar(lyx::pos_type pos, value_type c, LyXFont const &, Change change = Change(Change::INSERTED));
        ///
        bool checkInsertChar(LyXFont &);
        ///
        void insertInset(lyx::pos_type pos, Inset * inset);
        ///
-       void insertInset(lyx::pos_type pos, Inset * inset, LyXFont const &);
+       void insertInset(lyx::pos_type pos, Inset * inset, LyXFont const &, Change change = Change(Change::INSERTED));
        ///
        bool insetAllowed(Inset::Code code);
        ///
@@ -276,9 +299,6 @@ public:
        /// returns -1 if inset not found
        int getPositionOfInset(Inset const * inset) const;
 
-       /// some good comment here John?
-       Paragraph * getParFromID(int id) const;
-
        ///
        int stripLeadingSpaces();
 
@@ -294,6 +314,9 @@ public:
        ///
        //Counters & counters();
 
+       friend void breakParagraph(BufferParams const & bparams,
+                   Paragraph * par, lyx::pos_type pos, int flag);
+
 private:
        ///
        LyXLayout_ptr layout_;
@@ -312,4 +335,16 @@ private:
        Pimpl * pimpl_;
 };
 
-#endif
+
+inline bool isInsertedText(Paragraph const & par, lyx::pos_type pos)
+{
+       return par.lookupChange(pos) == Change::INSERTED;
+}
+
+
+inline bool isDeletedText(Paragraph const & par, lyx::pos_type pos)
+{
+       return par.lookupChange(pos) == Change::DELETED;
+}
+
+#endif // PARAGRAPH_H