X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FLayout.cpp;h=85fe11a8abebe336c26f44a022d08418ece50c29;hb=f37a1b8aeaf8f3a3a66a22bf0b396f7d1ceca2ff;hp=d72d53fe74b4ef0ea510c88056b85c8265a8b6d5;hpb=80cc7e99f224b99a7e79ae26812f2d35e3b2e597;p=lyx.git diff --git a/src/Layout.cpp b/src/Layout.cpp index d72d53fe74..85fe11a8ab 100644 --- a/src/Layout.cpp +++ b/src/Layout.cpp @@ -16,7 +16,7 @@ #include "Language.h" #include "TextClass.h" #include "Lexer.h" -#include "Font.h" +#include "FontInfo.h" #include "support/Messages.h" #include "support/debug.h" @@ -101,7 +101,8 @@ enum LayoutTags { LT_HTMLLABELFIRST, LT_HTMLPREAMBLE, LT_HTMLSTYLE, - LT_HTMLFORCEDEFAULT, + LT_HTMLFORCECSS, + LT_INPREAMBLE, LT_INTITLE // keep this last! }; @@ -113,6 +114,7 @@ Layout::Layout() margintype = MARGIN_STATIC; latextype = LATEX_PARAGRAPH; intitle = false; + inpreamble = false; optionalargs = 0; needprotect = false; keepempty = false; @@ -141,7 +143,7 @@ Layout::Layout() toclevel = NOT_IN_TOC; commanddepth = 0; htmllabelfirst_ = false; - htmlforcedefault_ = false; + htmlforcecss_ = false; } @@ -165,7 +167,7 @@ bool Layout::read(Lexer & lex, TextClass const & tclass) { "font", LT_FONT }, { "freespacing", LT_FREE_SPACING }, { "htmlattr", LT_HTMLATTR }, - { "htmlforcedefault", LT_HTMLFORCEDEFAULT }, + { "htmlforcecss", LT_HTMLFORCECSS }, { "htmlitem", LT_HTMLITEM }, { "htmlitemattr", LT_HTMLITEMATTR }, { "htmllabel", LT_HTMLLABEL }, @@ -175,6 +177,7 @@ bool Layout::read(Lexer & lex, TextClass const & tclass) { "htmlstyle", LT_HTMLSTYLE }, { "htmltag", LT_HTMLTAG }, { "innertag", LT_INNERTAG }, + { "inpreamble", LT_INPREAMBLE }, { "intitle", LT_INTITLE }, { "itemsep", LT_ITEMSEP }, { "itemtag", LT_ITEMTAG }, @@ -300,6 +303,10 @@ bool Layout::read(Lexer & lex, TextClass const & tclass) lex >> intitle; break; + case LT_INPREAMBLE: + lex >> inpreamble; + break; + case LT_TOCLEVEL: lex >> toclevel; break; @@ -517,8 +524,8 @@ bool Layout::read(Lexer & lex, TextClass const & tclass) htmlstyle_ = from_utf8(lex.getLongString("EndHTMLStyle")); break; - case LT_HTMLFORCEDEFAULT: - lex >> htmlforcedefault_; + case LT_HTMLFORCECSS: + lex >> htmlforcecss_; case LT_HTMLPREAMBLE: htmlpreamble_ = from_utf8(lex.getLongString("EndPreamble")); @@ -918,7 +925,7 @@ string const & Layout::htmllabelattr() const docstring Layout::htmlstyle() const { - if (!htmlstyle_.empty() && !htmlforcedefault_) + if (!htmlstyle_.empty() && !htmlforcecss_) return htmlstyle_; if (htmldefaultstyle_.empty()) makeDefaultCSS(); @@ -929,15 +936,32 @@ docstring Layout::htmlstyle() const { } +string Layout::defaultCSSClass() const +{ + if (!defaultcssclass_.empty()) + return defaultcssclass_; + docstring d; + docstring::const_iterator it = name().begin(); + docstring::const_iterator en = name().end(); + for (; it != en; ++it) { + if (!isalpha(*it)) + continue; + if (islower(*it)) + d += *it; + else + d += lowercase(*it); + } + // are there other characters we need to remove? + defaultcssclass_ = to_utf8(d); + return defaultcssclass_; +} + + // NOTE There is a whole ton of stuff that could go into this. // Things like bottomsep, topsep, and parsep could become various // sorts of margins or padding, for example. But for now we are // going to keep it simple. void Layout::makeDefaultCSS() const { -#ifdef TEX2LYX - // tex2lyx does not have FontInfo::asCSS() - return; -#else // this never needs to be redone, since reloading layouts will // wipe out what we did before. if (!htmldefaultstyle_.empty()) @@ -954,7 +978,6 @@ void Layout::makeDefaultCSS() const { htmldefaultstyle_ += from_ascii(htmllabeltag() + "." + defaultCSSLabelClass() + " {\n") + labelfontCSS + from_ascii("\n}\n"); -#endif }