X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FLayout.cpp;h=e368f23bbda0e821d3928b0f58538e5290a9e577;hb=51ac7d895cc7a9c4ad91131d0b4734395366d04b;hp=80c8550923de08aac27bb58d7a3f793649c34f63;hpb=9e5eebc14cd06f58000a4bd1903f157b65a3ab19;p=lyx.git diff --git a/src/Layout.cpp b/src/Layout.cpp index 80c8550923..e368f23bbd 100644 --- a/src/Layout.cpp +++ b/src/Layout.cpp @@ -16,9 +16,8 @@ #include "TextClass.h" #include "Lexer.h" #include "Font.h" -#include "support/debug.h" - +#include "support/debug.h" #include "support/lstrings.h" #include @@ -38,6 +37,7 @@ enum LayoutTags { LT_ALIGNPOSSIBLE, LT_MARGIN, LT_BOTTOMSEP, + LT_CATEGORY, LT_COMMANDDEPTH, LT_COPYSTYLE, LT_DEPENDSON, @@ -138,6 +138,7 @@ bool Layout::read(Lexer & lexrc, TextClass const & tclass) { "align", LT_ALIGN }, { "alignpossible", LT_ALIGNPOSSIBLE }, { "bottomsep", LT_BOTTOMSEP }, + { "category", LT_CATEGORY }, { "commanddepth", LT_COMMANDDEPTH }, { "copystyle", LT_COPYSTYLE }, { "dependson", LT_DEPENDSON }, @@ -210,6 +211,11 @@ bool Layout::read(Lexer & lexrc, TextClass const & tclass) finished = true; break; + case LT_CATEGORY: + if (lexrc.next()) + category_ = lexrc.getDocString(); + break; + case LT_COPYSTYLE: // initialize with a known style if (lexrc.next()) { docstring const style = subst(lexrc.getDocString(), @@ -217,21 +223,17 @@ bool Layout::read(Lexer & lexrc, TextClass const & tclass) if (tclass.hasLayout(style)) { docstring const tmpname = name_; - this->operator=(*tclass[style]); + this->operator=(tclass[style]); name_ = tmpname; } else { lyxerr << "Cannot copy unknown style `" << to_utf8(style) << "'\n" << "All layouts so far:" << endl; - TextClass::const_iterator it = - tclass.begin(); - TextClass::const_iterator end = - tclass.end(); - for (; it != end; ++it) { - lyxerr << to_utf8((*it)->name()) - << endl; - } + DocumentClass::const_iterator lit = tclass.begin(); + DocumentClass::const_iterator len = tclass.end(); + for (; lit != len; ++lit) + lyxerr << to_utf8(lit->name()) << endl; //lexrc.printError("Cannot copy known " // "style `$$Token'"); @@ -246,7 +248,7 @@ bool Layout::read(Lexer & lexrc, TextClass const & tclass) if (tclass.hasLayout(style)) { docstring const tmpname = name_; - this->operator=(*tclass[style]); + this->operator=(tclass[style]); name_ = tmpname; if (obsoleted_by().empty()) obsoleted_by_ = style; @@ -488,15 +490,17 @@ bool Layout::read(Lexer & lexrc, TextClass const & tclass) break; case LT_REQUIRES: - if (lexrc.eatLine()) - requires_ = getVectorFromString(lexrc.getString()); + lexrc.eatLine(); + vector const req = + getVectorFromString(lexrc.getString()); + requires_.insert(req.begin(), req.end()); break; } } lexrc.popTable(); - return error; + return !error; } @@ -826,6 +830,16 @@ docstring const & Layout::depends_on() const } +bool Layout::operator==(Layout const & rhs) const +{ + // This is enough for the applications we actually make, + // at least at the moment. But we could check more. + return name() == rhs.name() + && latexname() == rhs.latexname() + && latextype == rhs.latextype; +} + + Layout * Layout::forCaption() { Layout * lay = new Layout();