X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FLayout.h;h=0588bc17a7355f731a0c8e17bd2fd97b8b95e49b;hb=3bf1b97ae547aea5d0243e41b2d8af463a6e40c5;hp=d9eb893c2e447353fd5eba62ba20103e0da59e98;hpb=ad18c194920fe8ed8f339ee5fc755e8f3473db51;p=features.git diff --git a/src/Layout.h b/src/Layout.h index d9eb893c2e..0588bc17a7 100644 --- a/src/Layout.h +++ b/src/Layout.h @@ -58,7 +58,7 @@ public: void setUnknown(bool unknown) { unknown_ = unknown; } /// Reads a layout definition from file /// \return true on success. - bool read(Lexer &, TextClass const &); + bool read(Lexer &, TextClass const &, bool validating = false); /// void readAlign(Lexer &); /// @@ -74,7 +74,7 @@ public: /// void readSpacing(Lexer &); /// - void readArgument(Lexer &); + void readArgument(Lexer &, bool); /// Write a layout definition in utf8 encoding void write(std::ostream &) const; /// @@ -89,12 +89,12 @@ public: std::string const & latexname() const { return latexname_; } /// std::string const & itemcommand() const { return itemcommand_; } - /// The arguments of this layout + /// One argument of this layout struct latexarg { docstring labelstring; docstring menustring; - bool mandatory; - bool nodelims; + bool mandatory = false; + bool nodelims = false; docstring ldelim; docstring rdelim; docstring defaultarg; @@ -102,16 +102,26 @@ public: docstring tooltip; std::string required; std::string decoration; - FontInfo font; - FontInfo labelfont; - bool autoinsert; - bool insertcotext; - bool insertonnewline; - ArgPassThru passthru; + FontInfo font = inherit_font; + FontInfo labelfont = inherit_font; + bool autoinsert = false; + bool insertcotext = false; + bool insertonnewline = false; + ArgPassThru passthru = PT_INHERITED; docstring pass_thru_chars; - bool is_toc_caption; - bool free_spacing; + bool is_toc_caption = false; + bool free_spacing = false; std::string newlinecmd; + /// The DocBook tag corresponding to this argument. + docstring docbooktag; + docstring docbooktagtype; + docstring docbookattr; + /// Whether this argument should be output after the main tag (default: inside). The result if the argument + /// should be output both before and after the main tag is undefined. + bool docbookargumentbeforemaintag = false; + /// Whether this argument should be output before the main tag (default: inside). The result if the argument + /// should be output both before and after the main tag is undefined. + bool docbookargumentaftermaintag = false; }; /// typedef std::map LaTeXArgMap; @@ -197,34 +207,58 @@ public: /// std::string const & docbookattr() const; /// + std::string const & docbooktagtype() const; + /// + std::string const & docbookinnertag() const; + /// + std::string const & docbookinnerattr() const; + /// + std::string const & docbookinnertagtype() const; + /// std::string const & docbookininfo() const; /// + bool docbookabstract() const { return docbookabstract_; } + /// std::string const & docbookwrappertag() const; /// std::string const & docbookwrapperattr() const; /// + std::string const & docbookwrappertagtype() const; + /// bool docbookwrappermergewithprevious() const { return docbookwrappermergewithprevious_; } /// std::string const & docbooksectiontag() const; /// + bool docbooksection() const { return docbooksection_; } + /// std::string const & docbookitemwrappertag() const; /// std::string const & docbookitemwrapperattr() const; /// + std::string const & docbookitemwrappertagtype() const; + /// std::string const & docbookitemlabeltag() const; /// std::string const & docbookitemlabelattr() const; /// + std::string const & docbookitemlabeltagtype() const; + /// std::string const & docbookiteminnertag() const; /// std::string const & docbookiteminnerattr() const; /// + std::string const & docbookiteminnertagtype() const; + /// std::string const & docbookitemtag() const; /// std::string const & docbookitemattr() const; /// + std::string const & docbookitemtagtype() const; + /// std::string const & docbookforceabstracttag() const; /// + bool docbooknofontinside() const { return docbooknofontinside_; } + /// bool isParagraph() const { return latextype == LATEX_PARAGRAPH; } /// bool isCommand() const { return latextype == LATEX_COMMAND; } @@ -242,13 +276,13 @@ public: bool labelIsInline() const { return labeltype == LABEL_STATIC || labeltype == LABEL_SENSITIVE - || labeltype == LABEL_ENUMERATE + || labeltype == LABEL_ENUMERATE || labeltype == LABEL_ITEMIZE; } bool labelIsAbove() const { return labeltype == LABEL_ABOVE || labeltype == LABEL_CENTERED - || labeltype == LABEL_BIBLIO; + || labeltype == LABEL_BIBLIO; } /// bool addToToc() const { return add_to_toc_; } @@ -367,18 +401,13 @@ public: docstring counter; /// Resume counter? bool resumecounter; - /// Step master counter? - bool stepmastercounter; + /// Step parent counter? + bool stepparentcounter; /// Prefix to use when creating labels docstring refprefix; /// Depth of XML command int commanddepth; - /// Return a pointer on a new layout suitable to describe a caption. - /// FIXME: remove this eventually. This is only for tex2lyx - /// until it has proper support for the caption inset (JMarc) - static Layout * forCaption(); - /// Is this spellchecked? bool spellcheck; /** @@ -397,7 +426,7 @@ public: private: /// Reads a layout definition from file /// \return true on success. - bool readIgnoreForcelocal(Lexer &, TextClass const &); + bool readIgnoreForcelocal(Lexer &, TextClass const &, bool validating); /// generates the default CSS for this layout void makeDefaultCSS() const; /// @@ -493,37 +522,62 @@ private: mutable std::string docbooktag_; /// Roles to add to docbooktag_, if any (default: none). mutable std::string docbookattr_; + /// DocBook tag type corresponding to this layout (block, paragraph, or inline; default: block). + mutable std::string docbooktagtype_; + /// DocBook inner tag corresponding to this layout. + mutable std::string docbookinnertag_; + /// Roles to add to docbookinnertag_, if any (default: none). + mutable std::string docbookinnerattr_; + /// DocBook inner-tag type corresponding to this layout (block, paragraph, or inline; default: block). + mutable std::string docbookinnertagtype_; /// DocBook tag corresponding to this item (mainly for lists). mutable std::string docbookitemtag_; /// Roles to add to docbookitemtag_, if any (default: none). mutable std::string docbookitemattr_; + /// DocBook tag type corresponding to this item (block, paragraph, or inline; default: block). + mutable std::string docbookitemtagtype_; /// DocBook tag corresponding to the wrapper around an item (mainly for lists). mutable std::string docbookitemwrappertag_; /// Roles to add to docbookitemwrappertag_, if any (default: none). mutable std::string docbookitemwrapperattr_; - /// DocBook tag corresponding to this label (only for description lists; + /// DocBook tag type corresponding to the wrapper around an item (block, paragraph, or inline; default: block). + mutable std::string docbookitemwrappertagtype_; + /// DocBook tag corresponding to this label (mostly for description lists; /// labels in the common sense do not exist with DocBook). mutable std::string docbookitemlabeltag_; /// Roles to add to docbooklabeltag_, if any (default: none). mutable std::string docbookitemlabelattr_; + /// DocBook tag corresponding to this label (block, paragraph, or inline; default: block). + mutable std::string docbookitemlabeltagtype_; /// DocBook tag to add within the item, around its direct content (mainly for lists). mutable std::string docbookiteminnertag_; /// Roles to add to docbookiteminnertag_, if any (default: none). mutable std::string docbookiteminnerattr_; + /// DocBook tag to add within the item, around its direct content (block, paragraph, or inline; default: block). + mutable std::string docbookiteminnertagtype_; /// DocBook tag corresponding to this wrapper around the main tag. mutable std::string docbookwrappertag_; /// Roles to add to docbookwrappertag_, if any (default: none). mutable std::string docbookwrapperattr_; + /// DocBook tag corresponding to this wrapper around the main tag (block, paragraph, or inline; default: block). + mutable std::string docbookwrappertagtype_; /// Whether this wrapper tag may be merged with the previously opened wrapper tag. bool docbookwrappermergewithprevious_; - /// Outer tag for this section, only if this layout represent a sectionning item, including chapters (default: section). + /// Outer tag for this section, only if this layout represent a sectionning item, including chapters + /// (default: section). mutable std::string docbooksectiontag_; + /// Whether this element should be considered as a section-level element in DocBook. + bool docbooksection_; /// Whether this tag must/can/can't go into an tag (default: never, as it only makes sense for metadata). mutable std::string docbookininfo_; - /// whether this element (root or not) does not accept text without a section(i.e. the first text that is met + /// Wehther this paragraph should be considered as abstract. + bool docbookabstract_; + /// Whether this element (root or not) does not accept text without a section (i.e. the first text that is met /// in LyX must be considered as the abstract if this is true); this text must be output with the specific tag /// held by this attribute mutable std::string docbookforceabstracttag_; + /// Whether font tags are allowed inside this tag. + bool docbooknofontinside_ = false; /// Should we generate the default CSS for this layout, even if HTMLStyle /// has been given? Default is false. /// Note that the default CSS is output first, then the user CSS, so it is