* LyX, The Document Processor
*
* Copyright 1995 Matthias Ettrich
- * Copyright 1995-1999 The LyX Team.
+ * Copyright 1995-2001 The LyX Team.
*
* ====================================================== */
#ifndef LAYOUT_H
#define LAYOUT_H
+#include <vector>
+
#ifdef __GNUG__
#pragma interface
#endif
-#include "lyxlex.h"
+class LyXLeX;
#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 {
///
LYX_ALIGN_SPECIAL = 32
};
-
+///
inline
void operator|=(LyXAlignment & la1, LyXAlignment la2) {
la1 = static_cast<LyXAlignment>(la1 | la2);
///
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.
*/
-/// Attributes of a layout/paragraph environment
+// Attributes of a layout/paragraph environment
class LyXTextClass;
///
///
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_;
}
///
char labeltype; // add approp. type
+ ///
+ char endlabeltype;
+
///
LYX_MARGIN_TYPE margintype;
///
bool free_spacing;
- /// true when the fragile commands in the paragraph need to be
- /// \protect'ed.
+
+ ///
+ bool pass_thru;
+
+ /** true when the fragile commands in the paragraph need to be
+ \protect'ed. */
bool needprotect;
/// true when empty paragraphs should be kept.
bool keepempty;
/// Label string. "Abstract", "Reference", "Caption"...
string labelstring_;
+ ///
+ string endlabelstring_;
+
/// Label string inside appendix. "Appendix", ...
string labelstring_appendix_;
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());
///
bool Read(string const & filename, bool merge = false);
+ ///
void readOutputType(LyXLex &);
+ ///
void readMaxCounter(LyXLex &);
+ ///
void readClassOptions(LyXLex &);
///
bool hasLayout(string const & name) const;
/// 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
};
///
bool loaded;
};
-
///
inline
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 : boost::noncopyable {
public:
///
- typedef vector<LyXTextClass> ClassList;
+ typedef std::vector<LyXTextClass> ClassList;
///
typedef ClassList::const_iterator const_iterator;
///
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;
/** 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;
///
void Add (LyXTextClass const &);
};
-/// Should not be declared here!! (Lgb) Why not? (Asger)
+///
extern LyXTextClassList textclasslist;
#endif