]> git.lyx.org Git - lyx.git/blobdiff - src/Layout.h
More requires --> required, for C++2a.
[lyx.git] / src / Layout.h
index 2da831e93e40f5a7479c612e68917dacf8c82ab0..c8f7c95ad08ad70dc0d64cc98747b953d4b5e9d3 100644 (file)
@@ -94,6 +94,7 @@ public:
                docstring labelstring;
                docstring menustring;
                bool mandatory;
+               bool nodelims;
                docstring ldelim;
                docstring rdelim;
                docstring defaultarg;
@@ -104,6 +105,13 @@ public:
                FontInfo font;
                FontInfo labelfont;
                bool autoinsert;
+               bool insertcotext;
+               bool insertonnewline;
+               ArgPassThru passthru;
+               docstring pass_thru_chars;
+               bool is_toc_caption;
+               bool free_spacing;
+               std::string newlinecmd;
        };
        ///
        typedef std::map<std::string, latexarg> LaTeXArgMap;
@@ -112,7 +120,12 @@ public:
        ///
        LaTeXArgMap const & postcommandargs() const { return postcommandargs_; }
        ///
+       LaTeXArgMap const & listpreamble() const { return listpreamble_; }
+       ///
        LaTeXArgMap const & itemargs() const { return itemargs_; }
+       /// Returns true is the layout has arguments. If false, then an
+       /// InsetArgument in this layout stands for the parent InsetText.
+       bool hasArgs() const;
        /// Returns latexargs() + postcommandargs() + itemargs().
        /// But note that it returns a *copy*, not a reference, so do not do
        /// anything like:
@@ -125,7 +138,7 @@ public:
        ///
        int requiredArgs() const;
        ///
-       docstring const & labelstring(bool in_appendix) const 
+       docstring const & labelstring(bool in_appendix) const
        { return in_appendix ? labelstring_appendix_ : labelstring_; }
        ///
        docstring const & endlabelstring() const { return endlabelstring_; }
@@ -140,7 +153,11 @@ public:
        /// this layout for language \p lang
        docstring const babelpreamble() const { return babelpreamble_; }
        ///
-       std::set<std::string> const & requires() const { return requires_; }
+       std::set<std::string> const & required() const { return requires_; }
+       ///
+       std::set<docstring> const & autonests() const { return autonests_; }
+       ///
+       std::set<docstring> const & isAutonestedBy() const { return autonested_by_; }
        ///
        std::string const & latexparam() const { return latexparam_; }
        ///
@@ -153,25 +170,25 @@ public:
        std::string const & labeltag() const { return labeltag_; }
        ///
        std::string const & itemtag() const { return itemtag_; }
-       /// 
+       ///
        std::string const & htmltag() const;
-       /// 
+       ///
        std::string const & htmlattr() const;
-       /// 
+       ///
        std::string const & htmlitemtag() const;
-       /// 
+       ///
        std::string const & htmlitemattr() const;
-       /// 
+       ///
        std::string const & htmllabeltag() const;
-       /// 
+       ///
        std::string const & htmllabelattr() const;
        ///
        std::string defaultCSSClass() const;
        ///
        bool htmllabelfirst() const { return htmllabelfirst_; }
-       /// 
+       ///
        docstring htmlstyle() const;
-       /// 
+       ///
        docstring const & htmlpreamble() const { return htmlpreamble_; }
        ///
        bool htmltitle() const { return htmltitle_; }
@@ -188,10 +205,7 @@ public:
        }
        /// Is this the kind of layout in which adjacent paragraphs
        /// are handled as one group?
-       bool isParagraphGroup() const {
-       return latextype == LATEX_ENVIRONMENT
-               || latextype == LATEX_BIB_ENVIRONMENT;
-       }
+       bool isParagraphGroup() const { return par_group_; }
        ///
        bool labelIsInline() const {
                return labeltype == LABEL_STATIC
@@ -204,11 +218,17 @@ public:
                        || labeltype == LABEL_CENTERED
                  || labeltype == LABEL_BIBLIO;
        }
+       ///
+       bool addToToc() const { return add_to_toc_; }
+       ///
+       std::string tocType() const { return toc_type_; }
+       ///
+       bool isTocCaption() const { return is_toc_caption_; }
 
        ///
        bool operator==(Layout const &) const;
        ///
-       bool operator!=(Layout const & rhs) const 
+       bool operator!=(Layout const & rhs) const
                { return !(*this == rhs); }
 
        ////////////////////////////////////////////////////////////////
@@ -285,6 +305,8 @@ public:
        bool free_spacing;
        ///
        bool pass_thru;
+       /// Individual chars to be passed verbatim
+       docstring pass_thru_chars;
        ///
        bool parbreak_is_newline;
        /// show this in toc
@@ -295,6 +317,12 @@ public:
        /** true when the fragile commands in the paragraph need to be
            \protect'ed. */
        bool needprotect;
+       /** true when the verbatim stuff of this layout needs to be
+           \cprotect'ed. */
+       bool needcprotect;
+       /** true when specific commands in this paragraph need to be
+           protected in an \mbox. */
+       bool needmboxprotect;
        /// true when empty paragraphs should be kept.
        bool keepempty;
        /// Type of LaTeX object
@@ -305,6 +333,10 @@ public:
        bool inpreamble;
        /// Which counter to step
        docstring counter;
+       /// Resume counter?
+       bool resumecounter;
+       /// Step master counter?
+       bool stepmastercounter;
        /// Prefix to use when creating labels
        docstring refprefix;
        /// Depth of XML command
@@ -340,7 +372,7 @@ private:
        std::string defaultCSSItemClass() const { return defaultCSSClass() + "_item"; }
        ///
        std::string defaultCSSLabelClass() const { return defaultCSSClass() + "_label"; }
-       
+
        /// Name of the layout/paragraph environment
        docstring name_;
 
@@ -385,13 +417,13 @@ private:
        /// Internal tag to surround the item text in a list.
        std::string itemtag_;
        /// The interpretation of this tag varies depending upon the latextype.
-       /// In an environment, it is the tag enclosing all content for this set of 
-       /// paragraphs. So for quote, e.g,. it would be: blockquote. For itemize, 
+       /// In an environment, it is the tag enclosing all content for this set of
+       /// paragraphs. So for quote, e.g,. it would be: blockquote. For itemize,
        /// it would be: ul. (You get the idea.)
        ///
        /// For a command, it is the tag enclosing the content of the command.
        /// So, for section, it might be: h2.
-       /// 
+       ///
        /// For the paragraph type, it is the tag that will enclose each paragraph.
        ///
        /// Defaults to "div".
@@ -401,7 +433,7 @@ private:
        mutable std::string htmlattr_;
        /// Tag for individual paragraphs in an environment. In lists, this
        /// would be something like "li". But it also needs to be set for
-       /// quotation, e.g., since the paragraphs in a quote need to be 
+       /// quotation, e.g., since the paragraphs in a quote need to be
        /// in "p" tags. Default is "div".
        /// Note that when I said "environment", I meant it: This has no
        /// effect for LATEX_PARAGRAPH type layouts.
@@ -410,7 +442,7 @@ private:
        mutable std::string htmlitemattr_;
        /// Tag for labels, of whatever sort. One use for this is in setting
        /// descriptions, in which case it would be: dt. Another use is to
-       /// customize the display of, say, the auto-generated label for 
+       /// customize the display of, say, the auto-generated label for
        /// sections. Defaults to "span".
        /// If set to "NONE", this suppresses the printing of the label.
        mutable std::string htmllabeltag_;
@@ -448,16 +480,31 @@ private:
        docstring langpreamble_;
        /// Language and babel dependent macro definitions needed for this layout
        docstring babelpreamble_;
+       /// Are adjacent paragraphs handled as one group?
+       bool par_group_;
        /// Packages needed for this layout
        std::set<std::string> requires_;
+       /// Layouts that are by default nested after this one
+       std::set<docstring> autonests_;
+       /// Layouts that by auto-nest this one
+       std::set<docstring> autonested_by_;
        ///
        LaTeXArgMap latexargs_;
        ///
        LaTeXArgMap postcommandargs_;
        ///
+       LaTeXArgMap listpreamble_;
+       ///
        LaTeXArgMap itemargs_;
+       ///
+       bool add_to_toc_;
+       ///
+       std::string toc_type_;
+       ///
+       bool is_toc_caption_;
 };
 
+
 } // namespace lyx
 
 #endif