[LyX/master] Add HTMLClass for InsetLayout as well. Layout format change.
Richard Kimberly Heck
rikiheck at lyx.org
Tue Dec 6 03:47:13 UTC 2022
commit c50f0b125ddc34b4547fb82e344a90899183fe55
Author: Richard Kimberly Heck <rikiheck at lyx.org>
Date: Mon Dec 5 23:42:50 2022 -0500
Add HTMLClass for InsetLayout as well. Layout format change.
---
lib/layouts/aastex.layout | 2 +-
lib/layouts/aguplus.inc | 2 +-
lib/layouts/apa.layout | 2 +-
lib/layouts/apax.inc | 2 +-
lib/layouts/bicaption.module | 2 +-
lib/layouts/logicalmkup.module | 2 +-
lib/layouts/scrclass.inc | 4 ++--
lib/layouts/stdinsets.inc | 8 ++++----
lib/scripts/layout2layout.py | 5 ++++-
src/Layout.cpp | 7 +------
src/Layout.h | 2 +-
src/TextClass.cpp | 2 +-
src/insets/InsetCaption.cpp | 2 +-
src/insets/InsetLayout.cpp | 25 +++++++++++++++++++++----
src/insets/InsetLayout.h | 10 +++++++++-
src/insets/InsetText.cpp | 2 +-
src/insets/InsetWrap.cpp | 2 +-
17 files changed, 52 insertions(+), 29 deletions(-)
diff --git a/lib/layouts/aastex.layout b/lib/layouts/aastex.layout
index 58b8b14..2e34010 100644
--- a/lib/layouts/aastex.layout
+++ b/lib/layouts/aastex.layout
@@ -619,7 +619,7 @@ InsetLayout Caption:FigCaption
margin: 1ex;
}
EndHTMLStyle
- HTMLAttr "class='float-caption float-caption-figcaption'"
+ HTMLClass "float-caption float-caption-figcaption"
End
diff --git a/lib/layouts/aguplus.inc b/lib/layouts/aguplus.inc
index 7453b2a..4535d0c 100644
--- a/lib/layouts/aguplus.inc
+++ b/lib/layouts/aguplus.inc
@@ -222,7 +222,7 @@ InsetLayout Caption:Table
margin: 1ex;
}
EndHTMLStyle
- HTMLAttr "class='float-caption float-caption-table'"
+ HTMLClass "float-caption float-caption-table"
End
diff --git a/lib/layouts/apa.layout b/lib/layouts/apa.layout
index 57af913..ad4f5f8 100644
--- a/lib/layouts/apa.layout
+++ b/lib/layouts/apa.layout
@@ -300,7 +300,7 @@ InsetLayout Caption:Centered
margin: 1ex;
}
EndHTMLStyle
- HTMLAttr "class='float-caption float-caption-centered'"
+ HTMLClass "float-caption float-caption-centered"
End
diff --git a/lib/layouts/apax.inc b/lib/layouts/apax.inc
index 9a51d37..669da40 100644
--- a/lib/layouts/apax.inc
+++ b/lib/layouts/apax.inc
@@ -399,7 +399,7 @@ InsetLayout Caption:Centered
margin: 1ex;
}
EndHTMLStyle
- HTMLAttr "class='float-caption float-caption-centered'"
+ HTMLClass "float-caption float-caption-centered"
End
diff --git a/lib/layouts/bicaption.module b/lib/layouts/bicaption.module
index d3b258a..ad38b11 100644
--- a/lib/layouts/bicaption.module
+++ b/lib/layouts/bicaption.module
@@ -62,5 +62,5 @@ InsetLayout Caption:Bicaption
margin: 1ex;
}
EndHTMLStyle
- HTMLAttr "class='float-caption float-caption-bicaption'"
+ HTMLClass "float-caption float-caption-bicaption"
End
diff --git a/lib/layouts/logicalmkup.module b/lib/layouts/logicalmkup.module
index 88ba523..b872b51 100644
--- a/lib/layouts/logicalmkup.module
+++ b/lib/layouts/logicalmkup.module
@@ -19,7 +19,7 @@ InsetLayout Flex:Noun
Requires noun
InToc true
HTMLTag span
- HTMLAttr "class='noun'"
+ HTMLClass "noun"
HTMLStyle
span.noun {
font-family: sans-serif;
diff --git a/lib/layouts/scrclass.inc b/lib/layouts/scrclass.inc
index b1c1c9f..fc7dea8 100644
--- a/lib/layouts/scrclass.inc
+++ b/lib/layouts/scrclass.inc
@@ -335,7 +335,7 @@ InsetLayout Caption:Above
margin: 1ex;
}
EndHTMLStyle
- HTMLAttr "class='float-caption float-caption-above'"
+ HTMLClass "float-caption float-caption-above"
End
@@ -360,7 +360,7 @@ InsetLayout Caption:Below
margin: 1ex;
}
EndHTMLStyle
- HTMLAttr "class='float-caption float-caption-below'"
+ HTMLClass "float-caption float-caption-below"
End
diff --git a/lib/layouts/stdinsets.inc b/lib/layouts/stdinsets.inc
index cac502d..33a56a4 100644
--- a/lib/layouts/stdinsets.inc
+++ b/lib/layouts/stdinsets.inc
@@ -666,7 +666,7 @@ InsetLayout Info:menu
Font
Family sans
EndFont
- HTMLAttr "class='info menu'"
+ HTMLClass "info menu"
HTMLStyle
span.menu { font-family: sans-serif; }
EndHTMLStyle
@@ -685,7 +685,7 @@ InsetLayout Info:shortcut
Font
Family sans
EndFont
- HTMLAttr "class='info shortcut'"
+ HTMLClass "info shortcut"
HTMLStyle
span.shortcut { font-family: sans-serif; }
EndHTMLStyle
@@ -706,7 +706,7 @@ InsetLayout Info:shortcuts
Font
Family sans
EndFont
- HTMLAttr "class='info shortcut'"
+ HTMLClass "info shortcut"
HTMLStyle
span.shortcuts { font-family: sans-serif; }
EndHTMLStyle
@@ -737,7 +737,7 @@ InsetLayout Caption:Standard
margin: 1ex;
}
EndHTMLStyle
- HTMLAttr "class='float-caption float-caption-standard'"
+ HTMLClass "float-caption float-caption-standard"
End
diff --git a/lib/scripts/layout2layout.py b/lib/scripts/layout2layout.py
index 4add2e5..d923d65 100644
--- a/lib/scripts/layout2layout.py
+++ b/lib/scripts/layout2layout.py
@@ -11,7 +11,7 @@
# This script will update a .layout file to current format
# The latest layout format is also defined in src/TextClass.cpp
-currentFormat = 97
+currentFormat = 98
# Incremented to format 4, 6 April 2007, lasgouttes
@@ -328,6 +328,9 @@ currentFormat = 97
# Incremented to format 97, 4 December 2022 by rikiheck
# Add HTMLClass
+# Incremented to format 98, 5 December 2022 by rikiheck
+# Add HTMLClass for InsetLayout
+
# Do not forget to document format change in Customization
# Manual (section "Declaring a new text class").
diff --git a/src/Layout.cpp b/src/Layout.cpp
index 88d5539..515226d 100644
--- a/src/Layout.cpp
+++ b/src/Layout.cpp
@@ -1817,12 +1817,6 @@ string const & Layout::htmltag() const
}
-string const & Layout::htmlattr() const
-{
- return htmlattr_;
-}
-
-
string const & Layout::htmlclass() const
{
// If it's an enumeration or itemize list, then we recalculate the class each
@@ -1844,6 +1838,7 @@ string const & Layout::htmlGetAttrString() const {
return htmlfullattrs_;
}
+
string const & Layout::htmlitemtag() const
{
if (htmlitemtag_.empty())
diff --git a/src/Layout.h b/src/Layout.h
index 98b702f..e837339 100644
--- a/src/Layout.h
+++ b/src/Layout.h
@@ -183,7 +183,7 @@ public:
///
std::string const & htmltag() const;
///
- std::string const & htmlattr() const;
+ std::string const & htmlattr() const { return htmlattr_; }
///
std::string const & htmlclass() const;
/// Returns a complete attribute string, including class, etc.
diff --git a/src/TextClass.cpp b/src/TextClass.cpp
index d00446e..8973eb0 100644
--- a/src/TextClass.cpp
+++ b/src/TextClass.cpp
@@ -59,7 +59,7 @@ namespace lyx {
// You should also run the development/tools/updatelayouts.py script,
// to update the format of all of our layout files.
//
-int const LAYOUT_FORMAT = 97; // rikiheck: HTMLClass
+int const LAYOUT_FORMAT = 98; // rikiheck: HTMLClass for InsetLayout
// Layout format for the current lyx file format. Controls which format is
diff --git a/src/insets/InsetCaption.cpp b/src/insets/InsetCaption.cpp
index ad25ee3..e1ace0d 100644
--- a/src/insets/InsetCaption.cpp
+++ b/src/insets/InsetCaption.cpp
@@ -311,7 +311,7 @@ docstring InsetCaption::xhtml(XMLStream & xs, OutputParams const & rp) const
return docstring();
InsetLayout const & il = getLayout();
string const & tag = il.htmltag();
- string attr = il.htmlattr();
+ string attr = il.htmlGetAttrString();
if (!type_.empty()) {
string const our_class = "float-caption-" + type_;
size_t const loc = attr.find("class='");
diff --git a/src/insets/InsetLayout.cpp b/src/insets/InsetLayout.cpp
index 64258a8..0d1322a 100644
--- a/src/insets/InsetLayout.cpp
+++ b/src/insets/InsetLayout.cpp
@@ -83,6 +83,7 @@ bool InsetLayout::read(Lexer & lex, TextClass const & tclass,
IL_FREESPACING,
IL_HTMLTAG,
IL_HTMLATTR,
+ IL_HTMLCLASS,
IL_HTMLFORCECSS,
IL_HTMLINNERTAG,
IL_HTMLINNERATTR,
@@ -188,6 +189,7 @@ bool InsetLayout::read(Lexer & lex, TextClass const & tclass,
{ "forceplain", IL_FORCEPLAIN },
{ "freespacing", IL_FREESPACING },
{ "htmlattr", IL_HTMLATTR },
+ { "htmlclass", IL_HTMLCLASS },
{ "htmlforcecss", IL_HTMLFORCECSS },
{ "htmlinnerattr", IL_HTMLINNERATTR},
{ "htmlinnertag", IL_HTMLINNERTAG},
@@ -499,6 +501,9 @@ bool InsetLayout::read(Lexer & lex, TextClass const & tclass,
case IL_HTMLATTR:
lex >> htmlattr_;
break;
+ case IL_HTMLCLASS:
+ lex >> htmlclass_;
+ break;
case IL_HTMLFORCECSS:
lex >> htmlforcecss_;
break;
@@ -653,11 +658,23 @@ string const & InsetLayout::htmltag() const
}
-string const & InsetLayout::htmlattr() const
+string const & InsetLayout::htmlclass() const
{
- if (htmlattr_.empty())
- htmlattr_ = "class=\"" + defaultCSSClass() + "\"";
- return htmlattr_;
+ if (htmlclass_.empty())
+ htmlclass_ = defaultCSSClass();
+ return htmlclass_;
+}
+
+
+std::string const & InsetLayout::htmlGetAttrString() const {
+ if (!htmlfullattrs_.empty())
+ return htmlfullattrs_;
+ htmlfullattrs_ = htmlclass();
+ if (!htmlfullattrs_.empty())
+ htmlfullattrs_ = "class='" + htmlfullattrs_ + "'";
+ if (!htmlattr_.empty())
+ htmlfullattrs_ += " " + htmlattr_;
+ return htmlfullattrs_;
}
diff --git a/src/insets/InsetLayout.h b/src/insets/InsetLayout.h
index ed3c9a9..48d5303 100644
--- a/src/insets/InsetLayout.h
+++ b/src/insets/InsetLayout.h
@@ -121,7 +121,11 @@ public:
std::string const & htmltag() const;
/// Additional attributes for inclusion with the start tag. Default (if
/// a tag is provided) is: class="name".
- std::string const & htmlattr() const;
+ std::string const & htmlattr() const { return htmlattr_; }
+ ///
+ std::string const & htmlclass() const;
+ ///
+ std::string const & htmlGetAttrString() const;
/// Tag for individual paragraphs in the inset. Default is none.
std::string const & htmlinnertag() const { return htmlinnertag_; }
/// Attributes for that tag. Default (if a tag is provided) is:
@@ -302,6 +306,10 @@ private:
///
mutable std::string htmlattr_;
///
+ mutable std::string htmlclass_;
+ /// cache
+ mutable std::string htmlfullattrs_;
+ ///
std::string htmlinnertag_;
///
mutable std::string htmlinnerattr_;
diff --git a/src/insets/InsetText.cpp b/src/insets/InsetText.cpp
index 4cecec8..99324aa 100644
--- a/src/insets/InsetText.cpp
+++ b/src/insets/InsetText.cpp
@@ -868,7 +868,7 @@ docstring InsetText::insetAsXHTML(XMLStream & xs, OutputParams const & rp,
InsetLayout const & il = getLayout();
if (opts & WriteOuterTag)
- xs << xml::StartTag(il.htmltag(), il.htmlattr());
+ xs << xml::StartTag(il.htmltag(), il.htmlGetAttrString());
if ((opts & WriteLabel) && !il.counter().empty()) {
BufferParams const & bp = buffer().masterBuffer()->params();
diff --git a/src/insets/InsetWrap.cpp b/src/insets/InsetWrap.cpp
index 8987405..69e5b25 100644
--- a/src/insets/InsetWrap.cpp
+++ b/src/insets/InsetWrap.cpp
@@ -219,7 +219,7 @@ docstring InsetWrap::xhtml(XMLStream & xs, OutputParams const & rp) const
string const width = len.empty() ? "50%" : len;
InsetLayout const & il = getLayout();
string const & tag = il.htmltag();
- string const attr = il.htmlattr() + " style='width:" + width + ";'";
+ string const attr = il.htmlGetAttrString() + " style='width:" + width + ";'";
xs << xml::StartTag(tag, attr);
docstring const deferred =
InsetText::insetAsXHTML(xs, rp, InsetText::WriteInnerTag);
More information about the lyx-cvs
mailing list