]> git.lyx.org Git - lyx.git/blobdiff - src/insets/InsetLayout.cpp
Improve handling of top and bottom margin
[lyx.git] / src / insets / InsetLayout.cpp
index b523457c6017235932bf8feda6873287668dda8d..ce0d25a13a1a7c37bf264a2993fceac01fbc4f2a 100644 (file)
@@ -78,7 +78,8 @@ InsetLayout::InsetLaTeXType translateLaTeXType(std::string const & str)
 } // namespace
 
 
-bool InsetLayout::read(Lexer & lex, TextClass const & tclass)
+bool InsetLayout::read(Lexer & lex, TextClass const & tclass,
+       bool validating)
 {
        enum {
                IL_ADDTOTOC,
@@ -108,6 +109,8 @@ bool InsetLayout::read(Lexer & lex, TextClass const & tclass)
                IL_HTMLLABEL,
                IL_HTMLSTYLE,
                IL_HTMLPREAMBLE,
+               IL_DOCBOOKTAG,
+               IL_DOCBOOKATTR,
                IL_INTOC,
                IL_ISTOCCAPTION,
                IL_LABELFONT,
@@ -152,6 +155,8 @@ bool InsetLayout::read(Lexer & lex, TextClass const & tclass)
                { "custompars", IL_CUSTOMPARS },
                { "decoration", IL_DECORATION },
                { "display", IL_DISPLAY },
+               { "docbookattr", IL_DOCBOOKATTR },
+               { "docbooktag", IL_DOCBOOKTAG },
                { "editexternal", IL_EDITEXTERNAL },
                { "end", IL_END },
                { "fixedwidthpreambleencoding", IL_FIXEDWIDTH_PREAMBLE_ENCODING },
@@ -216,6 +221,8 @@ bool InsetLayout::read(Lexer & lex, TextClass const & tclass)
                switch (le) {
                case Lexer::LEX_UNDEF:
                        lex.printError("Unknown InsetLayout tag");
+                       if (validating)
+                               return false;
                        continue;
                default:
                        break;
@@ -232,13 +239,20 @@ bool InsetLayout::read(Lexer & lex, TextClass const & tclass)
                                LYXERR0("Flex insets must have names of the form `Flex:<name>'.\n"
                                        "This one has the name `" << to_utf8(name_) << "'\n"
                                        "Ignoring LyXType declaration.");
+                               // this is not really a reason to abort
+                               if (validating)
+                                       return false;
                                break;
                        }
                        string lt;
                        lex >> lt;
                        lyxtype_ = translateLyXType(lt);
-                       if (lyxtype_  == NOLYXTYPE)
+                       if (lyxtype_  == NOLYXTYPE) {
                                LYXERR0("Unknown LyXType `" << lt << "'.");
+                               // this is not really a reason to abort
+                               if (validating)
+                                       return false;
+                       }
                        if (lyxtype_ == CHARSTYLE) {
                                // by default, charstyles force the plain layout
                                multipar_ = false;
@@ -250,8 +264,12 @@ bool InsetLayout::read(Lexer & lex, TextClass const & tclass)
                        string lt;
                        lex >> lt;
                        latextype_ = translateLaTeXType(lt);
-                       if (latextype_  == ILT_ERROR)
+                       if (latextype_  == ILT_ERROR) {
                                LYXERR0("Unknown LaTeXType `" << lt << "'.");
+                               // this is not really a reason to abort
+                               if (validating)
+                                       return false;
+                       }
                        break;
                }
                case IL_LABELSTRING:
@@ -378,6 +396,9 @@ bool InsetLayout::read(Lexer & lex, TextClass const & tclass)
                                                tclass.insetLayouts().end();
                                for (; lit != len; ++lit)
                                        lyxerr << lit->second.name() << "\n";
+                               // this is not really a reason to abort
+                               if (validating)
+                                       return false;
                        }
                        break;
                }
@@ -408,6 +429,9 @@ bool InsetLayout::read(Lexer & lex, TextClass const & tclass)
                                                tclass.insetLayouts().end();
                                for (; lit != len; ++lit)
                                        lyxerr << lit->second.name() << "\n";
+                               // this is not really a reason to abort
+                               if (validating)
+                                       return false;
                        }
                        break;
                }
@@ -473,11 +497,17 @@ bool InsetLayout::read(Lexer & lex, TextClass const & tclass)
                case IL_HTMLPREAMBLE:
                        htmlpreamble_ = lex.getLongString(from_ascii("EndPreamble"));
                        break;
+               case IL_DOCBOOKTAG:
+                       lex >> docbooktag_;
+                       break;
+               case IL_DOCBOOKATTR:
+                       lex >> docbookattr_;
+                       break;
                case IL_REQUIRES: {
                        lex.eatLine();
                        vector<string> const req
                                = getVectorFromString(lex.getString(true));
-                       requires_.insert(req.begin(), req.end());
+                       required_.insert(req.begin(), req.end());
                        break;
                }
                case IL_SPELLCHECK:
@@ -524,8 +554,6 @@ InsetLayout::InsetLyXType translateLyXType(std::string const & str)
                return InsetLayout::CHARSTYLE;
        if (compare_ascii_no_case(str, "custom") == 0)
                return InsetLayout::CUSTOM;
-       if (compare_ascii_no_case(str, "element") == 0)
-               return InsetLayout::ELEMENT;
        if (compare_ascii_no_case(str, "end") == 0)
                return InsetLayout::END;
        if (compare_ascii_no_case(str, "standard") == 0)
@@ -669,7 +697,7 @@ void InsetLayout::readArgument(Lexer & lex)
                        arg.tooltip = lex.getDocString();
                } else if (tok == "requires") {
                        lex.next();
-                       arg.requires = lex.getString();
+                       arg.required = lex.getString();
                } else if (tok == "decoration") {
                        lex.next();
                        arg.decoration = lex.getString();