X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Flyxlayout.C;h=b81ea994251c7bcc7da7ffffd2770320830d31bd;hb=9f871ade6515cd8b105d75d2201142adf329d2fa;hp=79c506831ca6b9df45885444698c42160dc8af7e;hpb=93ea4edddfd93fd8209d146350c673088c992f9d;p=lyx.git diff --git a/src/lyxlayout.C b/src/lyxlayout.C index 79c506831c..b81ea99425 100644 --- a/src/lyxlayout.C +++ b/src/lyxlayout.C @@ -19,12 +19,17 @@ #include "support/lstrings.h" -using lyx::support::subst; -using lyx::support::trim; + +namespace lyx { + +using support::subst; +using support::trim; using std::endl; using std::string; +/// Special value of toclevel for layouts that to not belong in a TOC +const int LyXLayout::NOT_IN_TOC = -1000; // The order of the LayoutTags enum is no more important. [asierra300396] // Tags indexes. @@ -82,6 +87,8 @@ enum LayoutTags { LT_TOPSEP, LT_TOCLEVEL, LT_INNERTAG, + LT_LABELTAG, + LT_ITEMTAG, LT_INTITLE // keep this last! }; @@ -119,13 +126,13 @@ LyXLayout::LyXLayout () free_spacing = false; pass_thru = false; is_environment = false; - toclevel = 0; + toclevel = NOT_IN_TOC; commanddepth = 0; } // Reads a layout definition from file -bool LyXLayout::Read(LyXLex & lexrc, LyXTextClass const & tclass) +bool LyXLayout::read(LyXLex & lexrc, LyXTextClass const & tclass) { // This table is sorted alphabetically [asierra 30March96] keyword_item layoutTags[] = { @@ -145,6 +152,7 @@ bool LyXLayout::Read(LyXLex & lexrc, LyXTextClass const & tclass) { "innertag", LT_INNERTAG }, { "intitle", LT_INTITLE }, { "itemsep", LT_ITEMSEP }, + { "itemtag", LT_ITEMTAG }, { "keepempty", LT_KEEPEMPTY }, { "labelbottomsep", LT_LABEL_BOTTOMSEP }, { "labelcounter", LT_LABELCOUNTER }, @@ -153,6 +161,7 @@ bool LyXLayout::Read(LyXLex & lexrc, LyXTextClass const & tclass) { "labelsep", LT_LABELSEP }, { "labelstring", LT_LABELSTRING }, { "labelstringappendix", LT_LABELSTRING_APPENDIX }, + { "labeltag", LT_LABELTAG }, { "labeltype", LT_LABELTYPE }, { "latexfooter", LT_LATEXFOOTER }, { "latexheader", LT_LATEXHEADER }, @@ -203,7 +212,8 @@ bool LyXLayout::Read(LyXLex & lexrc, LyXTextClass const & tclass) case LT_COPYSTYLE: // initialize with a known style if (lexrc.next()) { - string const style = lexrc.getString(); + string const style = subst(lexrc.getString(), + '_', ' '); if (tclass.hasLayout(style)) { string const tmpname = name_; @@ -331,7 +341,7 @@ bool LyXLayout::Read(LyXLex & lexrc, LyXTextClass const & tclass) case LT_LATEXPARAM: if (lexrc.next()) - latexparam_ = lexrc.getString(); + latexparam_ = subst(lexrc.getString(), """, "\""); break; case LT_INNERTAG: @@ -339,8 +349,18 @@ bool LyXLayout::Read(LyXLex & lexrc, LyXTextClass const & tclass) innertag_ = lexrc.getString(); break; + case LT_LABELTAG: + if (lexrc.next()) + labeltag_ = lexrc.getString(); + break; + + case LT_ITEMTAG: + if (lexrc.next()) + itemtag_ = lexrc.getString(); + break; + case LT_PREAMBLE: - preamble_ = lexrc.getLongString("EndPreamble"); + preamble_ = from_utf8(lexrc.getLongString("EndPreamble")); break; case LT_LABELTYPE: @@ -431,22 +451,22 @@ bool LyXLayout::Read(LyXLex & lexrc, LyXTextClass const & tclass) case LT_LABELSTRING: // label string definition if (lexrc.next()) - labelstring_ = trim(lexrc.getString()); + labelstring_ = trim(lexrc.getDocString()); break; case LT_ENDLABELSTRING: // endlabel string definition if (lexrc.next()) - endlabelstring_ = trim(lexrc.getString()); + endlabelstring_ = trim(lexrc.getDocString()); break; case LT_LABELSTRING_APPENDIX: // label string appendix definition if (lexrc.next()) - labelstring_appendix_ = trim(lexrc.getString()); + labelstring_appendix_ = trim(lexrc.getDocString()); break; case LT_LABELCOUNTER: // name of counter to use if (lexrc.next()) - counter = trim(lexrc.getString()); + counter = lyx::from_ascii(trim(lexrc.getString())); break; case LT_FREE_SPACING: // Allow for free spacing. @@ -771,7 +791,7 @@ void LyXLayout::readSpacing(LyXLex & lexrc) break; case ST_OTHER: lexrc.next(); - spacing.set(Spacing::Other, lexrc.getFloat()); + spacing.set(Spacing::Other, lexrc.getString()); break; } } @@ -799,3 +819,6 @@ string const & LyXLayout::depends_on() const { return depends_on_; } + + +} // namespace lyx