X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FLayout.h;h=d251d292c2ec6e7f51e3093cfa488bda955fdfea;hb=04a171cac68cded95b1c4018d26ca50cb191ffa4;hp=0e4943dab1b5efbddc5789f11eb6457191f69fcc;hpb=5ddc612b735317d5b22553a63aad7879503e3950;p=lyx.git diff --git a/src/Layout.h b/src/Layout.h index 0e4943dab1..d251d292c2 100644 --- a/src/Layout.h +++ b/src/Layout.h @@ -4,9 +4,9 @@ * This file is part of LyX, the document processor. * Licence details can be found in the file COPYING. * - * \author Lars Gullik Bjønnes + * \author Lars Gullik Bjønnes * \author Jean-Marc Lasgouttes - * \author André Pönitz + * \author André Pönitz * * Full author contact details are available in file CREDITS. */ @@ -19,8 +19,12 @@ #include "Spacing.h" #include "support/docstring.h" +#include +#include + namespace lyx { +class Language; class Lexer; class TextClass; @@ -48,7 +52,11 @@ class Layout { public: /// Layout(); + /// is this layout a default layout created for an unknown layout + bool isUnknown() const { return unknown_; } + void setUnknown(bool unknown) { unknown_ = unknown; } /// Reads a layout definition from file + /// \return true on success. bool read(Lexer &, TextClass const &); /// void readAlign(Lexer &); @@ -79,7 +87,17 @@ public: /// docstring const & endlabelstring() const { return endlabelstring_; } /// + docstring const & category() const { return category_; } + /// docstring const & preamble() const { return preamble_; } + /// Get language dependent macro definitions needed for this layout + /// for language \p lang + docstring const langpreamble(Language const * lang) const; + /// Get language and babel dependent macro definitions needed for + /// this layout for language \p lang + docstring const babelpreamble(Language const * lang) const; + /// + std::set const & requires() const { return requires_; } /// std::string const & latexparam() const { return latexparam_; } /// @@ -92,6 +110,32 @@ public: docstring const & labelstring_appendix() const { return labelstring_appendix_; } + /// + bool isParagraph() const { return latextype == LATEX_PARAGRAPH; } + /// + bool isCommand() const { return latextype == LATEX_COMMAND; } + /// + bool isEnvironment() const { + return latextype == LATEX_ENVIRONMENT + || latextype == LATEX_BIB_ENVIRONMENT + || latextype == LATEX_ITEM_ENVIRONMENT + || latextype == LATEX_LIST_ENVIRONMENT; + } + + /// + bool operator==(Layout const &) const; + /// + bool operator!=(Layout const & rhs) const + { return !(*this == rhs); } + + //////////////////////////////////////////////////////////////// + // members + //////////////////////////////////////////////////////////////// + /** Is this layout the default layout for an unknown layout? If + * so, its name will be displayed as xxx (unknown). + */ + bool unknown_; + /** Default font for this layout/environment. The main font for this kind of environment. If an attribute has INHERITED_*, it means that the value is specified by @@ -165,41 +209,16 @@ public: bool free_spacing; /// bool pass_thru; - /** - * Whether this layout was declared with "Environment xxx" as opposed - * to "Style xxx". This is part of some unfinished generic environment - * handling (see also InsetEnvironment) started by Andre. No layout - * that is shipped with LyX has this flag set. - * Don't confuse this with isEnvironment()! - */ - bool is_environment; /// show this in toc int toclevel; /// special value of toclevel for non-section layouts static const int NOT_IN_TOC; - /// for new environment insets - std::string latexheader; - /// for new environment insets - std::string latexfooter; - /// for new environment insets - std::string latexparagraph; /** true when the fragile commands in the paragraph need to be \protect'ed. */ bool needprotect; /// true when empty paragraphs should be kept. bool keepempty; - /// - bool isParagraph() const { return latextype == LATEX_PARAGRAPH; } - /// - bool isCommand() const { return latextype == LATEX_COMMAND; } - /// - bool isEnvironment() const { - return latextype == LATEX_ENVIRONMENT - || latextype == LATEX_BIB_ENVIRONMENT - || latextype == LATEX_ITEM_ENVIRONMENT - || latextype == LATEX_LIST_ENVIRONMENT; - } /// Type of LaTeX object LatexType latextype; /// Does this object belong in the title part of the document? @@ -216,10 +235,12 @@ public: /// until it has proper support for the caption inset (JMarc) static Layout * forCaption(); -private: /// Name of the layout/paragraph environment docstring name_; + /// LaTeX name for environment + std::string latexname_; +private: /** Name of an layout that has replaced this layout. This is used to rename a layout, while keeping backward compatibility @@ -232,8 +253,6 @@ private: */ docstring depends_on_; - /// LaTeX name for environment - std::string latexname_; /// Label string. "Abstract", "Reference", "Caption"... docstring labelstring_; /// @@ -248,8 +267,18 @@ private: std::string labeltag_; /// Internal tag to surround the item text in a list) std::string itemtag_; + /// This is the `category' for this layout. The following are + /// recommended basic categories: FrontMatter, BackMatter, MainText, + /// Section, Starred, List, Theorem. + docstring category_; /// Macro definitions needed for this layout docstring preamble_; + /// Language dependent macro definitions needed for this layout + docstring langpreamble_; + /// Language and babel dependent macro definitions needed for this layout + docstring babelpreamble_; + /// Packages needed for this layout + std::set requires_; }; } // namespace lyx