From 331d8060b5c26823194fe7d5b4ca75e4062ea333 Mon Sep 17 00:00:00 2001 From: Richard Heck Date: Mon, 26 Oct 2009 20:45:29 +0000 Subject: [PATCH] Move the defaults to Layout. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@31751 a592a061-630c-0410-9148-cb99ea01b6c8 --- src/Layout.cpp | 48 ++++++++++++++++++++++++++++++++++++++++++++ src/Layout.h | 38 +++++++++++++++++++++++------------ src/output_xhtml.cpp | 32 +++++++---------------------- 3 files changed, 80 insertions(+), 38 deletions(-) diff --git a/src/Layout.cpp b/src/Layout.cpp index 7df75754ff..1eaffdc1bc 100644 --- a/src/Layout.cpp +++ b/src/Layout.cpp @@ -869,6 +869,54 @@ docstring const Layout::babelpreamble(Language const * lang) const } +string const Layout::htmltag() const +{ + if (htmltag_.empty()) + htmltag_ = "div"; + return htmltag_; +} + + +string const & Layout::htmlattr() const +{ + if (htmlattr_.empty()) + htmlattr_ = "class=\"" + to_utf8(name()) + "\""; + return htmlattr_; +} + + +string const & Layout::htmlitem() const +{ + if (htmlitem_.empty()) + htmlitem_ = "div"; + return htmlitem_; +} + + +string const & Layout::htmlitemattr() const +{ + if (htmlitemattr_.empty()) + htmlitemattr_ = "class=\"" + to_utf8(name()) + "item\""; + return htmlitemattr_; +} + + +string const & Layout::htmllabel() const +{ + if (htmllabel_.empty()) + htmllabel_ = "span"; + return htmllabel_; +} + + +string const & Layout::htmllabelattr() const +{ + if (htmllabelattr_.empty()) + htmllabelattr_ = "class=\"" + to_utf8(name()) + "label\""; + return htmllabelattr_; +} + + docstring Layout::htmlstyle() const { if (!htmlstyle_.empty() && !htmlforcedefault_) return htmlstyle_; diff --git a/src/Layout.h b/src/Layout.h index b1027fdb39..ef6b69613b 100644 --- a/src/Layout.h +++ b/src/Layout.h @@ -110,17 +110,17 @@ public: /// std::string const & itemtag() const { return itemtag_; } /// - std::string const & htmltag() const { return htmltag_; } + std::string const htmltag() const; /// - std::string const & htmlattr() const { return htmlattr_; } + std::string const & htmlattr() const; /// - std::string const & htmlitem() const { return htmlitem_; } + std::string const & htmlitem() const; /// - std::string const & htmlitemattr() const { return htmlitemattr_; } + std::string const & htmlitemattr() const; /// - std::string const & htmllabel() const { return htmllabel_; } + std::string const & htmllabel() const; /// - std::string const & htmllabelattr() const { return htmllabelattr_; } + std::string const & htmllabelattr() const; /// bool htmllabelfirst() const { return htmllabelfirst_; } /// @@ -289,26 +289,38 @@ private: std::string labeltag_; /// Internal tag to surround the item text in a list. std::string itemtag_; - /// Tag for HTML output, e.g., h2. Defaults to "div". - std::string htmltag_; + /// 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, + /// 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". + mutable std::string htmltag_; /// Additional attributes for inclusion with the start tag. Defaults /// to: class="layoutname". - std::string htmlattr_; + 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 /// in "p" tags. Default is "div". - std::string htmlitem_; + /// Note that when I said "environment", I meant it: This has no + /// effect for LATEX_PARAGRAPH type layouts. + mutable std::string htmlitem_; /// Attributes for htmlitem_. Default is: class="layoutnameitem". - std::string htmlitemattr_; + 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 /// sections. Defaults to "span". /// If set to "NONE", this suppresses the printing of the label. - std::string htmllabel_; + mutable std::string htmllabel_; /// Attributes for the label. Defaults to: class="layoutnamelabel". - std::string htmllabelattr_; + mutable std::string htmllabelattr_; /// Whether to put the label before the item, or within the item. /// I.e., do we have (true): /// ... diff --git a/src/output_xhtml.cpp b/src/output_xhtml.cpp index a27a9f4bf7..7b6a2dc80a 100644 --- a/src/output_xhtml.cpp +++ b/src/output_xhtml.cpp @@ -116,60 +116,42 @@ namespace { bool openTag(odocstream & os, Layout const & lay) { - string const tag = lay.htmltag().empty() - ? "div" : lay.htmltag(); - string const attr = lay.htmlattr().empty() - ? "class=\"" + to_utf8(lay.name()) + "\"" : lay.htmlattr(); - return html::openTag(os, tag, attr); + return html::openTag(os, lay.htmltag(), lay.htmlattr()); } bool closeTag(odocstream & os, Layout const & lay) { - string const tag = lay.htmltag().empty() - ? "div" : lay.htmltag(); - return html::closeTag(os, tag); + return html::closeTag(os, lay.htmltag()); } bool openLabelTag(odocstream & os, Layout const & lay) { - string const tag = lay.htmllabel().empty() - ? "span" : lay.htmllabel(); - string const attr = lay.htmllabelattr().empty() - ? "class=\"" + to_utf8(lay.name()) + "label\"" : lay.htmllabelattr(); - return html::openTag(os, tag, attr); + return html::openTag(os, lay.htmllabel(), lay.htmllabelattr()); } bool closeLabelTag(odocstream & os, Layout const & lay) { - string const tag = lay.htmllabel().empty() - ? "span" : lay.htmllabel(); - return html::closeTag(os, tag); + return html::closeTag(os, lay.htmllabel()); } bool openItemTag(odocstream & os, Layout const & lay) { - string const tag = lay.htmlitem().empty() - ? "div" : lay.htmlitem(); - string const attr = lay.htmlitemattr().empty() - ? "class=\"" + to_utf8(lay.name()) + "item\"" : lay.htmllabelattr(); - return html::openTag(os, tag, attr); + return html::openTag(os, lay.htmlitem(), lay.htmlitemattr()); } bool closeItemTag(odocstream & os, Layout const & lay) { - string const tag = lay.htmlitem().empty() - ? "div" : lay.htmlitem(); - return html::closeTag(os, tag); + return html::closeTag(os, lay.htmlitem()); } ParagraphList::const_iterator searchParagraphHtml( ParagraphList::const_iterator p, - ParagraphList::const_iterator const & pend) + ParagraphList::const_iterator const & pend) { for (++p; p != pend && p->layout().latextype == LATEX_PARAGRAPH; ++p) ;