]> git.lyx.org Git - lyx.git/blobdiff - src/lyxparagraph.h
make NEW_TABULAR default, some GUIRunTime changes
[lyx.git] / src / lyxparagraph.h
index 4d509179f3895fda1a79e24d3232b0bd314254ac..b868eb88111f44d6a7134006abda2de819201c3d 100644 (file)
@@ -33,6 +33,14 @@ struct LaTeXFeatures;
 class InsetBibKey;
 class BufferView;
 
+// I dare you to enable this and help me find all the bugs that then show
+// up. (Lgb)
+//#define NEW_INSETS 1
+
+// I dare you to try this one too. It is ortogonal with NEW_INSETS so you
+// can try both or just one of them.
+#define NEW_TABULAR 1
+
 /// A LyXParagraph holds all text, attributes and insets in a text paragraph
 class LyXParagraph  {
 public:
@@ -56,9 +64,9 @@ public:
                ///
                MINIPAGE_ALIGN_BOTTOM
        };
-#ifndef NEW_INSETS
        ///
        enum META_KIND {
+#ifndef NEW_INSETS
                ///
                META_FOOTNOTE = 1,
                ///
@@ -75,13 +83,18 @@ public:
                META_WIDE_TAB,
                ///
                META_HFILL,
+#else
                ///
-               META_NEWLINE,
+               META_HFILL = 1,
+#endif
                ///
+               META_NEWLINE,
+               //
                //META_PROTECTED_SEPARATOR,
                ///
                META_INSET
        };
+#ifndef NEW_INSETS
 
        /// The footnoteflag
        enum footnote_flag {
@@ -162,18 +175,25 @@ public:
        ///
        LyXParagraph * TeXOnePar(Buffer const *, BufferParams const &,
                                 std::ostream &, TexRow & texrow,
-                                bool moving_arg,
+                                bool moving_arg
+#ifndef NEW_INSETS
+                                ,
                                 std::ostream & foot, TexRow & foot_texrow,
-                                int & foot_count);
+                                int & foot_count
+#endif
+               );
        ///
        bool SimpleTeXOnePar(Buffer const *, BufferParams const &,
                             std::ostream &, TexRow & texrow, bool moving_arg);
 
        ///
        LyXParagraph * TeXEnvironment(Buffer const *, BufferParams const &,
-                                     std::ostream &, TexRow & texrow,
-                                     std::ostream & foot, TexRow & foot_texrow,
-                                     int & foot_count);
+                                     std::ostream &, TexRow & texrow
+#ifndef NEW_INSETS
+                                     ,std::ostream & foot, TexRow & foot_texrow,
+                                     int & foot_count
+#endif
+               );
        ///
        LyXParagraph * Clone() const;
        
@@ -200,6 +220,7 @@ public:
        void SetInsetOwner(Inset * i);
        ///
        void deleteInsetsLyXText(BufferView *);
+       ///
        void resizeInsetsLyXText(BufferView *);
 private:
        ///
@@ -247,8 +268,6 @@ public:
        /// footnote, margin, fig, tab
        footnote_kind footnotekind;
 #endif
-       //@Man: the LyX- DTP-switches
-       //@{
        ///
        bool line_top;
        
@@ -271,11 +290,14 @@ public:
         bool noindent;
        
 private:
+       ///
        block<int, 10> counter_;
 public:
        ///
        void setCounter(int i, int v) { counter_[i] = v; }
+       ///
        int getCounter(int i) const { return counter_[i]; }
+       ///
        void incCounter(int i) { counter_[i]++; }
        ///
        bool start_of_appendix;
@@ -308,18 +330,18 @@ public:
        
        ///
        string labelwidthstring;
-       //@}
        
        ///
        LyXParagraph * next;
        ///
        LyXParagraph * previous;
 
+#ifndef NEW_TABULAR
        /* table stuff -- begin*/
        ///
        LyXTable * table;
        /* table stuff -- end*/
-
+#endif
         /// 
         InsetBibKey * bibkey;  // ale970302
 
@@ -332,6 +354,7 @@ public:
        ///
        LyXParagraph const * Previous() const;
 
+#ifndef NEW_INSETS
        /** these function are able to hide open and closed footnotes
         */ 
        LyXParagraph * NextAfterFootnote();
@@ -349,11 +372,11 @@ public:
        LyXParagraph * FirstPhysicalPar();
        ///
        LyXParagraph const * FirstPhysicalPar() const;
-
        /// returns the physical paragraph
        LyXParagraph * ParFromPos(size_type pos);
        /// returns the position in the physical par
        int PositionInParFromPos(size_type pos) const;
+#endif
 
        /// for the environments
        LyXParagraph * DepthHook(int depth);
@@ -362,7 +385,7 @@ public:
        ///
        int BeginningOfMainBody() const;
        ///
-       string GetLabelstring() const;
+       string const & GetLabelstring() const;
        
        /// the next two functions are for the manual labels
        string GetLabelWidthString() const;
@@ -400,16 +423,14 @@ public:
        LyXFont GetFirstFontSettings() const;
 
        /** Get fully instantiated font. If pos == -1, use the layout
-         font attached to this paragraph.
-         If pos == -2, use the label font of the layout attached here.
-         In all cases, the font is instantiated, i.e. does not have any
-         attributes with values LyXFont::INHERIT, LyXFont::IGNORE or 
-         LyXFont::TOGGLE.
-         */
+           font attached to this paragraph.
+           If pos == -2, use the label font of the layout attached here.
+           In all cases, the font is instantiated, i.e. does not have any
+           attributes with values LyXFont::INHERIT, LyXFont::IGNORE or 
+           LyXFont::TOGGLE.
+       */
        LyXFont getFont(BufferParams const &, size_type pos) const;
        ///
-       value_type GetChar(size_type pos);
-       ///
        value_type GetChar(size_type pos) const;
        /// The position must already exist.
        void SetChar(size_type pos, value_type c) {
@@ -437,10 +458,12 @@ public:
        Inset * GetInset(size_type pos);
        ///
        Inset const * GetInset(size_type pos) const;
+#ifndef NEW_INSETS
        ///
        void OpenFootnote(size_type pos);
        ///
        void CloseFootnote(size_type pos);
+#endif
        /// important for cut and paste
        void CopyIntoMinibuffer(BufferParams const &, size_type pos) const;
        ///
@@ -452,8 +475,10 @@ public:
        bool IsHfill(size_type pos) const;
        ///
        bool IsInset(size_type pos) const;
+#ifndef NEW_INSETS
        ///
        bool IsFloat(size_type pos) const;
+#endif
        ///
        bool IsNewline(size_type pos) const;
        ///
@@ -482,27 +507,29 @@ public:
 
        /// returns -1 if inset not found
        int GetPositionOfInset(Inset * inset) const;
-       
+
+#ifndef NEW_INSETS
        /// ok and now some footnote functions
        void OpenFootnotes();
 
        ///
        void CloseFootnotes();
-   
        ///
        LyXParagraph * FirstSelfrowPar();
+#endif
 
        ///
        int StripLeadingSpaces(LyXTextClassList::size_type tclass); 
-       
+
+#ifndef NEW_INSETS
        /** A paragraph following a footnote is a "dummy". A paragraph
-         with a footnote in it is stored as three paragraphs:
-         First a paragraph with the text up to the footnote, then
-         one (or more) paragraphs with the footnote, and finally
-         the a paragraph with the text after the footnote. Only the
-         first paragraph keeps information  about layoutparameters, */
+           with a footnote in it is stored as three paragraphs:
+           First a paragraph with the text up to the footnote, then
+           one (or more) paragraphs with the footnote, and finally
+           the a paragraph with the text after the footnote. Only the
+           first paragraph keeps information  about layoutparameters, */
        bool IsDummy() const;
-
+#endif
         /* 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 */
        ///
@@ -512,6 +539,7 @@ public:
         void UnsetPExtraType(BufferParams const &);
        ///
        bool linuxDocConvertChar(char c, string & sgml_string);
+#ifndef NEW_TABULAR
        ///
        void DocBookContTableRows(Buffer const *,
                                  std::ostream &, string & extra,
@@ -521,6 +549,7 @@ public:
        void SimpleDocBookOneTablePar(Buffer const *,
                                      std::ostream &, string & extra,
                                      int & desc_on, int depth);
+#endif
 private:
        ///
        struct InsetTable {
@@ -569,6 +598,7 @@ private:
                ///
                FontTable(size_type p, LyXFont const & f) {pos = p; font = f;}
        };
+       ///
        friend struct matchFT;
        ///
        struct matchFT {
@@ -590,15 +620,21 @@ private:
        InsetList insetlist;
        ///
        LyXParagraph * TeXDeeper(Buffer const *, BufferParams const &,
-                                std::ostream &, TexRow & texrow,
-                                std::ostream & foot, TexRow & foot_texrow,
-                                int & foot_count);
+                                std::ostream &, TexRow & texrow
+#ifndef NEW_INSETS
+                                ,std::ostream & foot, TexRow & foot_texrow,
+                                int & foot_count
+#endif
+               );
+#ifndef NEW_INSETS
        ///
        LyXParagraph * TeXFootnote(Buffer const *, BufferParams const &,
                                   std::ostream &, TexRow & texrow,
                                   std::ostream & foot, TexRow & foot_texrow,
                                   int & foot_count,
                                   bool parent_is_rtl);
+#endif
+#ifndef NEW_TABULAR
        ///
        bool SimpleTeXOneTablePar(Buffer const *, BufferParams const &,
                                  std::ostream &, TexRow & texrow);
@@ -607,6 +643,7 @@ private:
                              std::ostream &, size_type i,
                              int current_cell_number,
                               int & column, TexRow & texrow);
+#endif
        ///
        void SimpleTeXBlanks(std::ostream &, TexRow & texrow,
                             size_type const i,
@@ -626,23 +663,32 @@ private:
        ///
        static unsigned int paragraph_id;
 public:
+       ///
        class inset_iterator {
        public:
+               ///
                inset_iterator() {}
+               //
                inset_iterator(InsetList::iterator const & iter) : it(iter) {};
+               ///
                inset_iterator & operator++() {
                        ++it;
                        return *this;
                }
+               ///
                Inset * operator*() { return (*it).inset; }
+               ///
                size_type getPos() {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;
        };
        ///