]> git.lyx.org Git - lyx.git/blobdiff - src/paragraph.h
fix keys to be unique
[lyx.git] / src / paragraph.h
index 76e8e9f7a2174ff170c35811efbb40d6778900b9..5317f010118096d93c85299593b9920a25b7453f 100644 (file)
 #pragma interface
 #endif
 
-#include "LString.h"
-
 #include "lyxlayout_ptr_fwd.h"
-#include "insets/inset.h" // Just for Inset::Code
 #include "lyxfont.h" // Just for LyXFont::FONT_SIZE
+#include "InsetList.h"
+
+#include "insets/inset.h" // Just for Inset::Code
+
 #include "support/types.h"
-#include "counters.h"
 
-class ParagraphParameters;
+#include "LString.h"
+
 class BufferParams;
-class TexRow;
-class LaTeXFeatures;
-class InsetBibKey;
 class BufferView;
+class Counters;
+class InsetBibKey;
 class Language;
-
-// After 1.2.0 is released, during 1.3.0cvs, we enable this. And after
-// a while we verify that reading of 1.2.x files work perfectly we remove
-// this code completely. (Lgb)
-#define NO_PEXTRA_REALLY 1
+class LaTeXFeatures;
+class ParagraphParameters;
+class TexRow;
 
 // Define this if you want to try out the new storage container for
-// paragraphs. std::container instead of obfuscated homegrown
-// linked list. (Lgb)
+// paragraphs. (Lgb)
 // This is non working and far from finished.
 // #define NO_NEXT 1
 
 /// A Paragraph holds all text, attributes and insets in a text paragraph
 class Paragraph  {
 public:
-#ifndef NO_PEXTRA_REALLY
-       ///
-       enum PEXTRA_TYPE {
-               ///
-               PEXTRA_NONE,
-               ///
-               PEXTRA_INDENT,
-               ///
-               PEXTRA_MINIPAGE,
-               ///
-               PEXTRA_FLOATFLT
-       };
-       ///
-       enum MINIPAGE_ALIGNMENT {
-               ///
-               MINIPAGE_ALIGN_TOP,
-               ///
-               MINIPAGE_ALIGN_MIDDLE,
-               ///
-               MINIPAGE_ALIGN_BOTTOM
-       };
-#endif
        ///
        enum META_KIND {
                ///
@@ -81,9 +56,11 @@ public:
 
        ///
        Paragraph();
+#ifndef NO_NEXT
        /// this constructor inserts the new paragraph in a list
        explicit
        Paragraph(Paragraph * par);
+#endif
        ///
        Paragraph(Paragraph const &, bool same_ids);
        /// the destructor removes the new paragraph from the list
@@ -106,16 +83,14 @@ public:
                              bool label);
 
        ///
-       void writeFile(Buffer const *, std::ostream &, BufferParams const &,
-                      depth_type) const;
+       void write(Buffer const *, std::ostream &, BufferParams const &,
+                      depth_type & depth) const;
        ///
        void validate(LaTeXFeatures &) const;
 
-       ///
+       /// return the unique ID of this paragraph
        int id() const;
        ///
-       void id(int id_arg);
-       ///
        void read();
 
        ///
@@ -161,6 +136,8 @@ public:
        ///
        lyx::pos_type size() const;
        ///
+       bool empty() const;
+       ///
        void setContentsFromPar(Paragraph * par);
        ///
        void clearContents();
@@ -179,6 +156,7 @@ public:
        ///
        InsetBibKey * bibkey;  // ale970302
 
+#ifndef NO_NEXT
        ///
        void next(Paragraph *);
        /** these function are able to hide closed footnotes
@@ -193,7 +171,7 @@ public:
        Paragraph * previous();
        ///
        Paragraph const * previous() const;
-
+#endif
        /// for the environments
        Paragraph * depthHook(depth_type depth);
        /// for the environments
@@ -220,14 +198,7 @@ public:
        ///
        void applyLayout(LyXLayout_ptr const & new_layout);
        ///
-       int getFirstCounter(int i) const;
-       ///
        void erase(lyx::pos_type pos);
-       /** the flag determines wether the layout should be copied
-        */
-       void breakParagraph(BufferParams const &, lyx::pos_type pos, int flag);
-       ///
-       void breakParagraphConservative(BufferParams const &, lyx::pos_type pos);
        /** Get unistantiated font setting. Returns the difference
            between the characters font and the layoutfont.
            This is what is stored in the fonttable
@@ -256,9 +227,10 @@ public:
        /// pos <= size() (there is a dummy font change at the end of each par)
        void setFont(lyx::pos_type pos, LyXFont const & font);
        /// Returns the height of the highest font in range
-       LyXFont::FONT_SIZE highestFontInRange(lyx::pos_type startpos,
-                                             lyx::pos_type endpos,
-                                             LyXFont::FONT_SIZE const def_size) const;
+       LyXFont::FONT_SIZE
+       highestFontInRange(lyx::pos_type startpos,
+                          lyx::pos_type endpos,
+                          LyXFont::FONT_SIZE const def_size) const;
        ///
        void insertChar(lyx::pos_type pos, value_type c);
        ///
@@ -301,11 +273,6 @@ public:
        ///
        bool isWord(lyx::pos_type pos) const;
 
-       /** paste this paragraph with the next one
-           be carefull, this doesent make any check at all
-       */
-       void pasteParagraph(BufferParams const &);
-
        /// returns -1 if inset not found
        int getPositionOfInset(Inset const * inset) const;
 
@@ -315,97 +282,29 @@ public:
        ///
        int stripLeadingSpaces();
 
-#ifndef NO_PEXTRA_REALLY
-       /* If I set a PExtra Indent on one paragraph of a ENV_LIST-TYPE
-          I have to set it on each of it's elements */
-       ///
-       void setPExtraType(BufferParams const &, int type,
-                          string const & width, string const & widthp);
-       ///
-       void unsetPExtraType(BufferParams const &);
-#endif
-       ///
-       bool sgmlConvertChar(char c, string & sgml_string);
        ///
        bool isFreeSpacing() const;
 
-       ParagraphParameters & params();
-       ParagraphParameters const & params() const;
-private:
-       ///
-       LyXLayout_ptr layout_;
-public:
-       /** Both these definitions must be made public to keep Compaq cxx 6.5
-        *  happy.
-        */
        ///
-       struct InsetTable {
-               ///
-               lyx::pos_type pos;
-               ///
-               Inset * inset;
-               ///
-               InsetTable(lyx::pos_type p, Inset * i) : pos(p), inset(i) {}
-       };
-
+       ParagraphParameters & params();
        ///
-       typedef std::vector<InsetTable> InsetList;
-private:
+       ParagraphParameters const & params() const;
        ///
        InsetList insetlist;
-public:
        ///
-       class inset_iterator {
-       public:
-               ///
-               inset_iterator() {}
-               //
-               inset_iterator(InsetList::iterator const & iter);
-               ///
-               inset_iterator & operator++() {
-                       ++it;
-                       return *this;
-               }
-               ///
-               Inset * operator*() { return it->inset; }
-               ///
-               Inset * operator->() { return it->inset; }
+       //Counters & counters();
 
-               ///
-               lyx::pos_type getPos() const { return it->pos; }
-               ///
-               bool operator==(inset_iterator const & iter) const {
-                       return it == iter.it;
-               }
-               ///
-               bool operator!=(inset_iterator const & iter) const {
-                       return it != iter.it;
-               }
-       private:
-               ///
-               InsetList::iterator it;
-       };
-       ///
-       friend class inset_iterator;
-
-       ///
-       inset_iterator inset_iterator_begin();
-       ///
-       inset_iterator inset_iterator_end();
-       /// returns inset iterator of the first inset at or after pos.
-       inset_iterator InsetIterator(lyx::pos_type pos);
-
-       ///
-       Counters ctrs;
-       
 private:
+       ///
+       LyXLayout_ptr layout_;
        /// if anything uses this we don't want it to.
        Paragraph(Paragraph const &);
+#ifndef NO_NEXT
        ///
        Paragraph * next_;
        ///
        Paragraph * previous_;
-
+#endif
        struct Pimpl;
        ///
        friend struct Paragraph::Pimpl;