]> git.lyx.org Git - lyx.git/blobdiff - src/lyxtextclass.h
Restore the version number position on the splash screen
[lyx.git] / src / lyxtextclass.h
index fd4eeb986a07cbf0dcfb98358bd5837cd9bbb3c7..2936b13d24fc436526b2aacdf1f0d6f6f6fba77a 100644 (file)
 #include <boost/shared_ptr.hpp>
 
 #include <vector>
+#include <set>
+
+namespace lyx {
+
+namespace support { class FileName; }
 
 class LyXLex;
 class Counters;
@@ -23,14 +28,15 @@ class FloatList;
 
 
 ///
-struct CharStyle {
+class CharStyle {
+public:
        std::string name;
        std::string latextype;
        std::string latexname;
        std::string latexparam;
        LyXFont font;
        LyXFont labelfont;
-       std::string preamble;
+       docstring preamble;
 };
 
 
@@ -61,7 +67,7 @@ public:
        const_iterator end() const { return layoutlist_.end(); }
 
        /// Performs the read of the layout file.
-       bool Read(std::string const & filename, bool merge = false);
+       bool read(support::FileName const & filename, bool merge = false);
        ///
        void readOutputType(LyXLex &);
        ///
@@ -83,7 +89,9 @@ public:
        LyXLayout_ptr const & operator[](std::string const & vname) const;
 
        /// Sees to that the textclass structure has been loaded
-       bool load() const;
+       bool load(std::string const & path = std::string()) const;
+       /// Has this layout file been loaded yet?
+       bool loaded() const { return loaded_; }
 
        /// the list of floats defined in the document class
        FloatList & floats();
@@ -116,23 +124,10 @@ public:
        ///
        std::string const & pagestyle() const;
        ///
-       std::string const & preamble() const;
+       docstring const & preamble() const;
 
-       /// Packages that are already loaded by the class
-       enum Provides {
-               ///
-               nothing = 0,
-               ///
-               amsmath = 1,
-               ///
-               makeidx = 2,
-               ///
-               url = 4,
-               ///
-               natbib = 8
-       };
-       ///
-       bool provides(Provides p) const;
+       /// is this feature already provided by the class?
+       bool provides(std::string const & p) const;
 
        ///
        unsigned int columns() const;
@@ -150,7 +145,7 @@ public:
        ///
        int tocdepth() const;
 
-       /// Can be LaTeX, LinuxDoc, etc.
+       /// Can be LaTeX, DocBook, etc.
        OutputType outputType() const;
 
        ///
@@ -169,6 +164,12 @@ public:
 
        ///
        int size() const;
+       /// The minimal TocLevel of sectioning layouts
+       int min_toclevel() const;
+       /// The maximal TocLevel of sectioning layouts
+       int max_toclevel() const;
+       /// returns true if the class has a ToC structure
+       bool hasTocLevels() const;
 private:
        ///
        bool delete_layout(std::string const &);
@@ -193,9 +194,9 @@ private:
        ///
        std::string defaultlayout_;
        /// preamble text to support layout styles
-       std::string preamble_;
+       docstring preamble_;
        /// latex packages loaded by document class.
-       Provides provides_;
+       std::set<std::string> provides_;
        ///
        unsigned int columns_;
        ///
@@ -204,7 +205,7 @@ private:
        int secnumdepth_;
        /// header depth to appear in table of contents
        int tocdepth_;
-       /// Can be LaTeX, LinuxDoc, etc.
+       /// Can be LaTeX, DocBook, etc.
        OutputType outputType_;
        /** Base font. The paragraph and layout fonts are resolved against
            this font. This has to be fully instantiated. Attributes
@@ -227,7 +228,7 @@ private:
        LayoutList layoutlist_;
        /// CharStyles available to this layout
        mutable CharStyles charstylelist_;
-       
+
        /// available types of float, eg. figure, algorithm.
        boost::shared_ptr<FloatList> floatlist_;
 
@@ -235,22 +236,22 @@ private:
        boost::shared_ptr<Counters> ctrs_;
 
        /// Has this layout file been loaded yet?
-       mutable bool loaded;
+       mutable bool loaded_;
 
        /// Is the TeX class available?
        bool texClassAvail_;
-};
 
-
-/// Merge two different provides flags into one bit field record
-inline
-void operator|=(LyXTextClass::Provides & p1, LyXTextClass::Provides p2)
-{
-       p1 = static_cast<LyXTextClass::Provides>(p1 | p2);
-}
+       /// The minimal TocLevel of sectioning layouts
+       int min_toclevel_;
+       /// The maximal TocLevel of sectioning layouts
+       int max_toclevel_;
+};
 
 
 /// convert page sides option to text 1 or 2
 std::ostream & operator<<(std::ostream & os, LyXTextClass::PageSides p);
 
+
+} // namespace lyx
+
 #endif