X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FTextClass.h;h=a64aff64632b347a04cbb3be625c0cd19015cc99;hb=8c73b3d2ce356e2720186f8cf5208614d124fdcf;hp=c32d6e15238e43c1834ac6348b35be966d2bb40d;hpb=77b575e562e6eae192467b8c0dd742afe3e86acb;p=lyx.git diff --git a/src/TextClass.h b/src/TextClass.h index c32d6e1523..a64aff6463 100644 --- a/src/TextClass.h +++ b/src/TextClass.h @@ -7,11 +7,18 @@ * Full author contact details are available in file CREDITS. */ -#ifndef LYXTEXTCLASS_H -#define LYXTEXTCLASS_H +#ifndef TEXTCLASS_H +#define TEXTCLASS_H -#include "Layout.h" -#include "lyxlayout_ptr_fwd.h" +#include "ColorCode.h" +#include "FontInfo.h" +#include "LayoutEnums.h" +#include "LayoutPtr.h" + +#include "insets/InsetLayout.h" + +#include "support/docstring.h" +#include "support/types.h" #include @@ -23,31 +30,11 @@ namespace lyx { namespace support { class FileName; } +class Layout; class Lexer; class Counters; class FloatList; - -/// -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; - Color::color bgcolor; - std::string preamble; -}; - - -/// List of semantically defined character style insets -typedef std::vector CharStyles; - /// List of inset layouts typedef std::map InsetLayouts; @@ -63,8 +50,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; @@ -73,8 +60,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 &); /// @@ -108,8 +101,6 @@ 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 InsetLayouts & insetlayouts() const { return insetlayoutlist_; }; /// @@ -127,6 +118,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; @@ -141,17 +137,12 @@ public: /// is this feature already provided by the class? bool provides(std::string const & p) const; + /// features required by the class? + std::set const & requires() const { return requires_; } /// unsigned int columns() const; /// - enum PageSides { - /// - OneSide, - /// - TwoSides - }; - /// PageSides sides() const; /// int secnumdepth() const; @@ -162,7 +153,7 @@ public: OutputType outputType() const; /// - Font const & defaultfont() const; + FontInfo const & defaultfont() const; /// Text that dictates how wide the left margin is on the screen docstring const & leftmargin() const; @@ -171,7 +162,7 @@ public: 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; @@ -185,20 +176,23 @@ public: bool hasTocLevels() const; private: /// - bool delete_layout(docstring const &); + bool deleteLayout(docstring const &); /// - bool do_readStyle(Lexer &, Layout &); + bool readStyle(Lexer &, Layout &); /// Layout file name std::string name_; /// document class name 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_; @@ -210,6 +204,8 @@ private: docstring preamble_; /// latex packages loaded by document class. std::set provides_; + /// latex packages requested by document class. + std::set requires_; /// unsigned int columns_; /// @@ -222,10 +218,10 @@ 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 docstring leftmargin_; @@ -233,14 +229,12 @@ private: 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_; @@ -265,8 +259,7 @@ private: /// convert page sides option to text 1 or 2 -std::ostream & operator<<(std::ostream & os, TextClass::PageSides p); - +std::ostream & operator<<(std::ostream & os, PageSides p); } // namespace lyx