]> git.lyx.org Git - lyx.git/blobdiff - src/layout.h
More fixes to insettabular/text (and some missing features added).
[lyx.git] / src / layout.h
index da29bc5d5ea8f7033996f55629723ee022e118e2..723401e81bbdce9bc39ac49cf3b33d4ec71d8d2c 100644 (file)
@@ -5,13 +5,15 @@
  *           LyX, The Document Processor
  *      
  *           Copyright 1995 Matthias Ettrich
- *           Copyright 1995-1999 The LyX Team.
+ *           Copyright 1995-2000 The LyX Team.
  *
  * ====================================================== */
 
 #ifndef LAYOUT_H
 #define LAYOUT_H
 
+#include <vector>
+
 #ifdef __GNUG__
 #pragma interface
 #endif
 #include "lyxlex.h"
 #include "lyxfont.h"
 #include "Spacing.h"
-
-#include <vector>
-using std::vector;
-using std::pair;
+#include <boost/utility.hpp>
 
 /// Reads the style files
 extern void LyXSetStyle();
 
 ///
-enum { // no good name for this
+enum no_good_name_for_this {
        ///
         LYX_ENVIRONMENT_DEFAULT = 97,
        ///
        LYX_LAYOUT_DEFAULT = 99
 };
+
+
 // Could this cause confusion that both DUMMY_LAYOUT and  LAYOUT_DEFAULT has
 // the same value? (Lgb)
 ///
 #define LYX_DUMMY_LAYOUT 99
 
+
 /// The different output types
 enum OutputType {
         ///
@@ -84,7 +86,7 @@ enum LyXAlignment {
         LYX_ALIGN_SPECIAL = 32
 };
 
-
+///
 inline
 void operator|=(LyXAlignment & la1, LyXAlignment la2) {
        la1 = static_cast<LyXAlignment>(la1 | la2);
@@ -141,12 +143,25 @@ enum LYX_LABEL_TYPES {
        ///
        LABEL_COUNTER_ENUMIII,
        ///
-       LABEL_COUNTER_ENUMIV,
-       ///
-       LABEL_FIRST_COUNTER = LABEL_COUNTER_CHAPTER
+       LABEL_COUNTER_ENUMIV
 };
 
-
+///
+enum LYX_END_LABEL_TYPES {
+       ///
+       END_LABEL_NO_LABEL,
+       ///
+       END_LABEL_BOX,
+       ///
+       END_LABEL_FILLED_BOX,
+       ///
+       END_LABEL_STATIC,
+       ///
+       END_LABEL_ENUM_FIRST = END_LABEL_NO_LABEL,
+       ///
+       END_LABEL_ENUM_LAST = END_LABEL_STATIC
+};
+               
 /* Fix labels are printed flushright, manual labels flushleft. 
  * MARGIN_MANUAL and MARGIN_FIRST_DYNAMIC are *only* for LABEL_MANUAL,
  * MARGIN_DYNAMIC and MARGIN_STATIC are *not* for LABEL_MANUAL. 
@@ -167,7 +182,7 @@ enum LYX_LABEL_TYPES {
  */ 
 
 
-/// Attributes of a layout/paragraph environment
+// Attributes of a layout/paragraph environment
 class LyXTextClass;
 
 ///
@@ -178,19 +193,37 @@ public:
 
        ///
        bool Read (LyXLex &, LyXTextClass const &);
+       ///
        void readAlign(LyXLex &);
+       ///
        void readAlignPossible(LyXLex &);
+       ///
        void readLabelType(LyXLex &);
+       ///
+       void readEndLabelType(LyXLex &);
+       ///
        void readMargin(LyXLex &);
+       ///
        void readLatexType(LyXLex &);
+       ///
        void readSpacing(LyXLex &);
+       ///
        string const & name() const { return name_; }
-       void name(string const & n) { name_ = n; }
+       ///
+       void setName(string const & n) { name_ = n; }
+       ///
        string const & obsoleted_by() const { return obsoleted_by_; }
+       ///
        string const & latexname() const { return latexname_; }
+       ///
        string const & labelstring() const { return labelstring_; }
+       ///
+       string const & endlabelstring() const { return endlabelstring_; }
+       ///
        string const & preamble() const { return preamble_; }
+       ///
        string const & latexparam() const { return latexparam_; }
+       ///
        string const & labelstring_appendix() const {
                return labelstring_appendix_;
        }
@@ -268,6 +301,9 @@ public:
        ///
        char labeltype; // add approp. type
 
+       ///
+       char endlabeltype;
+
        ///
        LYX_MARGIN_TYPE margintype;
 
@@ -285,8 +321,8 @@ public:
 
        ///
        bool free_spacing;
-       /// true when the fragile commands in the paragraph need to be
-       /// \protect'ed.
+       /** true when the fragile commands in the paragraph need to be
+           \protect'ed. */
        bool needprotect;
        /// true when empty paragraphs should be kept.
        bool keepempty;
@@ -324,6 +360,9 @@ private:
        /// Label string. "Abstract", "Reference", "Caption"...
        string labelstring_;
 
+       ///
+       string endlabelstring_;
+
        /// Label string inside appendix. "Appendix", ...
        string labelstring_appendix_;
 
@@ -339,12 +378,13 @@ private:
 class LyXTextClass {
 public:
        ///
-       typedef vector<LyXLayout> LayoutList;
+       typedef std::vector<LyXLayout> LayoutList;
        ///
        typedef LayoutList::const_iterator const_iterator;
        ///
        typedef LayoutList::size_type size_type;
        ///
+       explicit
        LyXTextClass (string const & = string(), 
                      string const & = string(), 
                      string const & = string());
@@ -356,8 +396,11 @@ public:
        
        ///
        bool Read(string const & filename, bool merge = false);
+       ///
        void readOutputType(LyXLex &);
+       ///
        void readMaxCounter(LyXLex &);
+       ///
        void readClassOptions(LyXLex &);
        ///
        bool hasLayout(string const & name) const;
@@ -390,18 +433,25 @@ public:
 
        /// Packages that are already loaded by the class
        enum Provides {
+               ///
                nothing = 0,
+               ///
                amsmath = 1,
+               ///
                makeidx = 2,
+               ///
                url = 4
        };
+       ///
        bool provides(Provides p) const { return provides_ & p; }
        
        ///
        unsigned int columns() const { return columns_; }
        ///
        enum PageSides {
+               ///
                OneSide,
+               ///
                TwoSides
        };
        ///
@@ -484,7 +534,6 @@ private:
        bool loaded;
 };
 
-
 ///
 inline
 void operator|=(LyXTextClass::Provides & p1, LyXTextClass::Provides p2)
@@ -494,26 +543,14 @@ void operator|=(LyXTextClass::Provides & p1, LyXTextClass::Provides p2)
 
 
 ///
-inline
-ostream & operator<<(ostream & os, LyXTextClass::PageSides p)
-{
-       switch (p) {
-       case LyXTextClass::OneSide:
-               os << "1";
-               break;
-       case LyXTextClass::TwoSides:
-               os << "2";
-               break;
-       }
-       return os;
-}
+std::ostream & operator<<(std::ostream & os, LyXTextClass::PageSides p);
 
 
 ///
-class LyXTextClassList {
+class LyXTextClassList : public noncopyable {
 public:
        ///
-       typedef vector<LyXTextClass> ClassList;
+       typedef std::vector<LyXTextClass> ClassList;
        ///
        typedef ClassList::const_iterator const_iterator;
        ///
@@ -528,7 +565,7 @@ public:
                                LyXTextClass::size_type layout) const;
 
        /// Gets layout number from textclass number and layout name
-       pair<bool, LyXTextClass::size_type>
+       std::pair<bool, LyXTextClass::size_type> const
        NumberOfLayout(size_type textclass,
                       string const & name) const;
 
@@ -540,7 +577,7 @@ public:
        /** Gets textclass number from name.
            Returns -1 if textclass name does not exist
        */
-       pair<bool, size_type>
+       std::pair<bool, size_type> const
        NumberOfClass(string const & textclass) const;
 
        ///
@@ -571,7 +608,7 @@ private:
        void Add (LyXTextClass const &);
 };
 
-/// Should not be declared here!! (Lgb) Why not? (Asger)
+/// 
 extern LyXTextClassList textclasslist;
  
 #endif