X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FTextClass.h;h=a6b0bbb13d786fa7f1b7b9f0aef1a2c4db2dace2;hb=09df753df4c24470617c64d25eae6df2db85dfed;hp=8f0c8cf1cb7932ff24121ad55c8051c09dd5acf9;hpb=2bd998c29eab19692e976a086b02174cc924b376;p=lyx.git diff --git a/src/TextClass.h b/src/TextClass.h index 8f0c8cf1cb..a6b0bbb13d 100644 --- a/src/TextClass.h +++ b/src/TextClass.h @@ -10,8 +10,12 @@ #ifndef LYXTEXTCLASS_H #define LYXTEXTCLASS_H -#include "Layout.h" -#include "lyxlayout_ptr_fwd.h" +#include "ColorCode.h" +#include "FontInfo.h" +#include "LayoutEnums.h" +#include "LayoutPtr.h" + +#include "support/docstring.h" #include @@ -23,39 +27,35 @@ namespace lyx { namespace support { class FileName; } +class Layout; class Lexer; class Counters; class FloatList; /// -class CharStyle { -public: - std::string name; - std::string latextype; - std::string latexname; - std::string latexparam; - Font font; - Font labelfont; - docstring preamble; -}; - - class InsetLayout { public: + std::string name; + std::string lyxtype; docstring labelstring; + std::string decoration; std::string latextype; std::string latexname; std::string latexparam; - Font font; - Font labelfont; - docstring preamble; + FontInfo font; + FontInfo labelfont; + ColorCode bgcolor; + std::string preamble; + bool multipar; + bool passthru; + bool needprotect; + bool freespacing; + bool keepempty; + bool forceltr; }; -/// List of semantically defined character style insets -typedef std::vector CharStyles; - /// List of inset layouts typedef std::map InsetLayouts; @@ -63,7 +63,7 @@ typedef std::map InsetLayouts; class TextClass { public: /// The individual styles comprising the document class - typedef std::vector LayoutList; + typedef std::vector LayoutList; /// Enumerate the paragraph styles. typedef LayoutList::const_iterator const_iterator; /// Construct a layout with default values. Actual values loaded later. @@ -71,8 +71,8 @@ public: TextClass(std::string const & = std::string(), std::string const & = std::string(), std::string const & = std::string(), - bool = false); - + bool texClassAvail = false); + /// check whether the TeX class is available bool isTeXClassAvailable() const; @@ -81,8 +81,14 @@ public: /// paragraph styles end iterator const_iterator end() const { return layoutlist_.end(); } + ///Enum used with TextClass::read + enum ReadType { + BASECLASS, //>This is a base class, i.e., top-level layout file + MERGE, //>This is a file included in a layout file + MODULE //>This is a layout module + }; /// Performs the read of the layout file. - bool read(support::FileName const & filename, bool merge = false); + bool read(support::FileName const & filename, ReadType rt = BASECLASS); /// void readOutputType(Lexer &); /// @@ -103,7 +109,7 @@ public: bool hasLayout(docstring const & name) const; /// - Layout_ptr const & operator[](docstring const & vname) const; + LayoutPtr const & operator[](docstring const & vname) const; /// Sees to that the textclass structure has been loaded bool load(std::string const & path = std::string()) const; @@ -116,16 +122,14 @@ public: FloatList const & floats() const; /// The Counters present in this document class. Counters & counters() const; - /// CharStyles of this doc class - CharStyles & charstyles() const { return charstylelist_; }; - /// Inset layouts of this doc class + /// Inset layouts of this doc class + InsetLayouts & insetlayouts() const { return insetlayoutlist_; }; + /// InsetLayout const & insetlayout(docstring const & name) const; - /// Retrieve element of name s: - CharStyles::iterator charstyle(std::string const & s) const; /// docstring const & defaultLayoutName() const; /// - Layout_ptr const & defaultLayout() const; + LayoutPtr const & defaultLayout() const; /// std::string const & name() const; /// @@ -135,6 +139,11 @@ public: /// std::string const & description() const; /// + bool isModular() const { return modular_; } + /// Sets the layout as a modular one. There is never any + /// need to reset this. + void markAsModular() { modular_ = true; } + /// std::string const & opt_fontsize() const; /// std::string const & opt_pagestyle() const; @@ -170,16 +179,16 @@ public: OutputType outputType() const; /// - Font const & defaultfont() const; + FontInfo const & defaultfont() const; /// Text that dictates how wide the left margin is on the screen - std::string const & leftmargin() const; + docstring const & leftmargin() const; /// Text that dictates how wide the right margin is on the screen - std::string const & rightmargin() const; + docstring const & rightmargin() const; /// The type of command used to produce a title - LYX_TITLE_LATEX_TYPES titletype() const; + TitleLatexType titletype() const; /// The name of the title command std::string const & titlename() const; @@ -202,11 +211,14 @@ private: std::string latexname_; /// document class description std::string description_; - /// Specific class options + /// whether this is a modular layout, i.e., whether it has been + /// modified by loading of layout modules. + bool modular_; + /// std::string opt_fontsize_; /// std::string opt_pagestyle_; - /// + /// Specific class options std::string options_; /// std::string pagestyle_; @@ -230,25 +242,23 @@ private: OutputType outputType_; /** Base font. The paragraph and layout fonts are resolved against this font. This has to be fully instantiated. Attributes - Font::INHERIT, Font::IGNORE, and Font::TOGGLE are + FONT_INHERIT, FONT_IGNORE, and FONT_TOGGLE are extremely illegal. */ - Font defaultfont_; + FontInfo defaultfont_; /// Text that dictates how wide the left margin is on the screen - std::string leftmargin_; + docstring leftmargin_; /// Text that dictates how wide the right margin is on the screen - std::string rightmargin_; + docstring rightmargin_; /// The type of command used to produce a title - LYX_TITLE_LATEX_TYPES titletype_; + TitleLatexType titletype_; /// The name of the title command std::string titlename_; /// Paragraph styles used in this layout LayoutList layoutlist_; - /// CharStyles available to this layout - mutable CharStyles charstylelist_; /// Input layouts available to this layout mutable InsetLayouts insetlayoutlist_; @@ -257,7 +267,7 @@ private: boost::shared_ptr floatlist_; /// Types of counters, eg. sections, eqns, figures, avail. in document class. - boost::shared_ptr ctrs_; + boost::shared_ptr counters_; /// Has this layout file been loaded yet? mutable bool loaded_; @@ -275,6 +285,12 @@ private: /// convert page sides option to text 1 or 2 std::ostream & operator<<(std::ostream & os, TextClass::PageSides p); +/** Shared pointer for possibly modular layout. Needed so that paste, + * for example, will still be able to retain the pointer, even when + * the buffer itself is closed. + */ +typedef boost::shared_ptr TextClassPtr; + } // namespace lyx