X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FLayout.cpp;h=148ebb6383b900c27c6da283f865efb3c775e092;hb=58ab972f714309aa87e7d956ceda00e18337875f;hp=68a184f991f6eec233764004c8e136cd5a01607f;hpb=0bf9ac02a8988b2747c15520780cbf4343dd6a45;p=lyx.git diff --git a/src/Layout.cpp b/src/Layout.cpp index 68a184f991..148ebb6383 100644 --- a/src/Layout.cpp +++ b/src/Layout.cpp @@ -13,7 +13,7 @@ #include #include "Layout.h" -#include "LyXTextClass.h" +#include "TextClass.h" #include "Lexer.h" #include "debug.h" @@ -94,8 +94,7 @@ enum LayoutTags { ///////////////////// -// Constructor for layout -Layout::Layout () +Layout::Layout() { margintype = MARGIN_STATIC; latextype = LATEX_PARAGRAPH; @@ -115,7 +114,7 @@ Layout::Layout () labelbottomsep = 0.0; parsep = 0; align = LYX_ALIGN_BLOCK; - alignpossible = LYX_ALIGN_BLOCK; + alignpossible = LYX_ALIGN_NONE | LYX_ALIGN_LAYOUT; labeltype = LABEL_NO_LABEL; endlabeltype = END_LABEL_NO_LABEL; // Should or should not. That is the question. @@ -131,8 +130,7 @@ Layout::Layout () } -// Reads a layout definition from file -bool Layout::read(Lexer & lexrc, LyXTextClass const & tclass) +bool Layout::read(Lexer & lexrc, TextClass const & tclass) { // This table is sorted alphabetically [asierra 30March96] keyword_item layoutTags[] = { @@ -212,24 +210,24 @@ bool Layout::read(Lexer & lexrc, LyXTextClass const & tclass) case LT_COPYSTYLE: // initialize with a known style if (lexrc.next()) { - string const style = subst(lexrc.getString(), + docstring const style = subst(lexrc.getDocString(), '_', ' '); if (tclass.hasLayout(style)) { - string const tmpname = name_; + docstring const tmpname = name_; this->operator=(*tclass[style]); name_ = tmpname; } else { lyxerr << "Cannot copy unknown style `" - << style << "'\n" + << to_utf8(style) << "'\n" << "All layouts so far:" << endl; - LyXTextClass::const_iterator it = + TextClass::const_iterator it = tclass.begin(); - LyXTextClass::const_iterator end = + TextClass::const_iterator end = tclass.end(); for (; it != end; ++it) { - lyxerr << (*it)->name() + lyxerr << to_utf8((*it)->name()) << endl; } @@ -241,16 +239,18 @@ bool Layout::read(Lexer & lexrc, LyXTextClass const & tclass) case LT_OBSOLETEDBY: // replace with a known style if (lexrc.next()) { - string const style = lexrc.getString(); + docstring const style = + subst(lexrc.getDocString(), '_', ' '); if (tclass.hasLayout(style)) { - string const tmpname = name_; + docstring const tmpname = name_; this->operator=(*tclass[style]); name_ = tmpname; if (obsoleted_by().empty()) obsoleted_by_ = style; } else { - lyxerr << "Cannot replace with unknown style `" << style << '\'' << endl; + lyxerr << "Cannot replace with unknown style `" + << to_utf8(style) << '\'' << endl; //lexrc.printError("Cannot replace with" // " unknown style " @@ -261,7 +261,7 @@ bool Layout::read(Lexer & lexrc, LyXTextClass const & tclass) case LT_DEPENDSON: if (lexrc.next()) - depends_on_ = lexrc.getString(); + depends_on_ = subst(lexrc.getDocString(), '_', ' '); break; case LT_MARGIN: // margin style definition. @@ -373,22 +373,22 @@ bool Layout::read(Lexer & lexrc, LyXTextClass const & tclass) case LT_LEFTMARGIN: // left margin type if (lexrc.next()) - leftmargin = lexrc.getString(); + leftmargin = lexrc.getDocString(); break; case LT_RIGHTMARGIN: // right margin type if (lexrc.next()) - rightmargin = lexrc.getString(); + rightmargin = lexrc.getDocString(); break; case LT_LABELINDENT: // label indenting flag if (lexrc.next()) - labelindent = lexrc.getString(); + labelindent = lexrc.getDocString(); break; case LT_PARINDENT: // paragraph indent. flag if (lexrc.next()) - parindent = lexrc.getString(); + parindent = lexrc.getDocString(); break; case LT_PARSKIP: // paragraph skip size @@ -418,7 +418,7 @@ bool Layout::read(Lexer & lexrc, LyXTextClass const & tclass) case LT_LABELSEP: // label separator if (lexrc.next()) { - labelsep = subst(lexrc.getString(), 'x', ' '); + labelsep = from_utf8(subst(lexrc.getString(), 'x', ' ')); } break; @@ -550,7 +550,7 @@ void Layout::readAlignPossible(Lexer & lexrc) }; lexrc.pushTable(alignTags, AT_LAYOUT); - alignpossible = LYX_ALIGN_NONE; + alignpossible = LYX_ALIGN_NONE | LYX_ALIGN_LAYOUT; int lineno = lexrc.getLineNo(); do { int le = lexrc.lex(); @@ -654,17 +654,14 @@ void Layout::readLabelType(Lexer & lexrc) } -namespace { - -keyword_item endlabelTypeTags[] = { +static keyword_item endlabelTypeTags[] = +{ { "box", END_LABEL_BOX }, { "filled_box", END_LABEL_FILLED_BOX }, { "no_label", END_LABEL_NO_LABEL }, { "static", END_LABEL_STATIC } }; -} // namespace anon - void Layout::readEndLabelType(Lexer & lexrc) { @@ -679,7 +676,7 @@ void Layout::readEndLabelType(Lexer & lexrc) case END_LABEL_BOX: case END_LABEL_FILLED_BOX: case END_LABEL_NO_LABEL: - endlabeltype = static_cast(le); + endlabeltype = static_cast(le); break; default: lyxerr << "Unhandled value " << le @@ -711,7 +708,7 @@ void Layout::readMargin(Lexer & lexrc) case MARGIN_DYNAMIC: case MARGIN_FIRST_DYNAMIC: case MARGIN_RIGHT_ADDRESS_BOX: - margintype = static_cast(le); + margintype = static_cast(le); break; default: lyxerr << "Unhandled value " << le @@ -744,7 +741,7 @@ void Layout::readLatexType(Lexer & lexrc) case LATEX_ITEM_ENVIRONMENT: case LATEX_BIB_ENVIRONMENT: case LATEX_LIST_ENVIRONMENT: - latextype = static_cast(le); + latextype = static_cast(le); break; default: lyxerr << "Unhandled value " << le @@ -797,28 +794,38 @@ void Layout::readSpacing(Lexer & lexrc) } -string const & Layout::name() const +docstring const & Layout::name() const { return name_; } -void Layout::setName(string const & n) +void Layout::setName(docstring const & name) { - name_ = n; + name_ = name; } -string const & Layout::obsoleted_by() const +docstring const & Layout::obsoleted_by() const { return obsoleted_by_; } -string const & Layout::depends_on() const +docstring const & Layout::depends_on() const { return depends_on_; } +Layout * Layout::forCaption() +{ + Layout * lay = new Layout(); + lay->name_ = from_ascii("Caption"); + lay->latexname_ = "caption"; + lay->latextype = LATEX_COMMAND; + lay->optionalargs = 1; + return lay; +} + } // namespace lyx