]> git.lyx.org Git - lyx.git/blobdiff - src/paragraph.h
fix keys to be unique
[lyx.git] / src / paragraph.h
index 3d1193eb5c99a25e46738ec5f0ac67c700f1f06f..5317f010118096d93c85299593b9920a25b7453f 100644 (file)
@@ -1,13 +1,10 @@
 // -*- C++ -*-
-/* This file is part of
- * ======================================================
- *
- *           LyX, The Document Processor
- *
- *         Copyright 1995 Matthias Ettrich
- *          Copyright 1995-2001 The LyX Team.
- *
- * ====================================================== */
+/**
+ *  \file paragraph.h
+ *  Copyright 1995 Matthias Ettrich
+ *  Copyright 2002 the LyX Team
+ *  Read the file COPYING
+ */
 
 #ifndef PARAGRAPH_H
 #define PARAGRAPH_H
 #pragma interface
 #endif
 
-#include "LString.h"
+#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 "lyxfont.h" // Just for LyXFont::FONT_SIZE
+
 #include "support/types.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 {
                ///
@@ -82,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
@@ -107,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();
 
        ///
@@ -125,10 +99,10 @@ public:
                                 bool moving_arg);
 
        ///
-       int startTeXParParams(BufferParams const &, std::ostream &) const;
+       int startTeXParParams(BufferParams const &, std::ostream &, bool) const;
 
        ///
-       int endTeXParParams(BufferParams const &, std::ostream &) const;
+       int endTeXParParams(BufferParams const &, std::ostream &, bool) const;
 
 
        ///
@@ -149,7 +123,7 @@ public:
 
        /** Check if the current paragraph is the last paragraph in a
            proof environment */
-       int getEndLabel(BufferParams const &) const;
+       int getEndLabel() const;
        ///
        Inset * inInset() const;
        ///
@@ -162,21 +136,16 @@ public:
        ///
        lyx::pos_type size() const;
        ///
+       bool empty() const;
+       ///
        void setContentsFromPar(Paragraph * par);
        ///
        void clearContents();
 
        ///
-       string const & layout() const;
-       ///
-       void layout(string const & new_layout);
-
-       ///
-       void setCounter(int i, int v);
-       ///
-       int getCounter(int i) const;
+       LyXLayout_ptr const & layout() const;
        ///
-       void incCounter(int i);
+       void layout(LyXLayout_ptr const & new_layout);
 
        ///
        char enumdepth;
@@ -187,6 +156,7 @@ public:
        ///
        InsetBibKey * bibkey;  // ale970302
 
+#ifndef NO_NEXT
        ///
        void next(Paragraph *);
        /** these function are able to hide closed footnotes
@@ -201,7 +171,7 @@ public:
        Paragraph * previous();
        ///
        Paragraph const * previous() const;
-
+#endif
        /// for the environments
        Paragraph * depthHook(depth_type depth);
        /// for the environments
@@ -224,18 +194,11 @@ public:
        /// The nesting depth of a paragraph
        depth_type getDepth() const;
        /// The maximal possible depth of a paragraph after this one
-       depth_type getMaxDepthAfter(Buffer const *) const;
-       ///
-       void applyLayout(string const & new_layout);
+       depth_type getMaxDepthAfter() const;
        ///
-       int getFirstCounter(int i) const;
+       void applyLayout(LyXLayout_ptr const & new_layout);
        ///
        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
@@ -264,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);
        ///
@@ -309,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;
 
@@ -321,96 +280,31 @@ public:
        Paragraph * getParFromID(int id) const;
 
        ///
-       int stripLeadingSpaces(lyx::textclass_type tclass);
+       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:
-       ///
-       string 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; }
-
-               ///
-               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();
-       ///
-       inset_iterator InsetIterator(lyx::pos_type pos);
+       //Counters & counters();
 
 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;