]> git.lyx.org Git - lyx.git/blobdiff - src/Layout.cpp
Partially revert r34995, which broke math output. Not sure why yet....
[lyx.git] / src / Layout.cpp
index 7e301af6ee39ee49d2d85f8aa5b6c9c8b270f25d..a9a5487b989e624d10203f0bccb20b34d666efd3 100644 (file)
@@ -23,7 +23,7 @@
 #include "support/lassert.h"
 #include "support/lstrings.h"
 
-#include <boost/regex.hpp>
+#include "support/regex.h"
 
 using namespace std;
 using namespace lyx::support;
@@ -102,6 +102,11 @@ enum LayoutTags {
        LT_HTMLPREAMBLE,
        LT_HTMLSTYLE,
        LT_HTMLFORCECSS,
+       LT_INPREAMBLE,
+       LT_HTMLTITLE,
+       LT_SPELLCHECK,
+       LT_REFPREFIX,
+       LT_REQARGS,
        LT_INTITLE // keep this last!
 };
 
@@ -113,7 +118,7 @@ Layout::Layout()
        margintype = MARGIN_STATIC;
        latextype = LATEX_PARAGRAPH;
        intitle = false;
-       optionalargs = 0;
+       inpreamble = false;
        needprotect = false;
        keepempty = false;
        font = inherit_font;
@@ -142,6 +147,10 @@ Layout::Layout()
        commanddepth = 0;
        htmllabelfirst_ = false;
        htmlforcecss_ = false;
+       htmltitle_ = false;
+       spellcheck = true;
+       optargs = 0;
+       reqargs = 0;
 }
 
 
@@ -174,7 +183,9 @@ bool Layout::read(Lexer & lex, TextClass const & tclass)
                { "htmlpremable",   LT_HTMLPREAMBLE },
                { "htmlstyle",      LT_HTMLSTYLE },
                { "htmltag",        LT_HTMLTAG },
+               { "htmltitle",      LT_HTMLTITLE },
                { "innertag",       LT_INNERTAG },
+               { "inpreamble",     LT_INPREAMBLE },
                { "intitle",        LT_INTITLE },
                { "itemsep",        LT_ITEMSEP },
                { "itemtag",        LT_ITEMTAG },
@@ -204,9 +215,12 @@ bool Layout::read(Lexer & lex, TextClass const & tclass)
                { "parskip",        LT_PARSKIP },
                { "passthru",       LT_PASS_THRU },
                { "preamble",       LT_PREAMBLE },
+               { "refprefix",      LT_REFPREFIX },
+               { "requiredargs",   LT_REQARGS },
                { "requires",       LT_REQUIRES },
                { "rightmargin",    LT_RIGHTMARGIN },
                { "spacing",        LT_SPACING },
+               { "spellcheck",     LT_SPELLCHECK },
                { "textfont",       LT_TEXTFONT },
                { "toclevel",       LT_TOCLEVEL },
                { "topsep",         LT_TOPSEP }
@@ -300,12 +314,20 @@ bool Layout::read(Lexer & lex, TextClass const & tclass)
                        lex >> intitle;
                        break;
 
+               case LT_INPREAMBLE:
+                       lex >> inpreamble;
+                       break;
+
                case LT_TOCLEVEL:
                        lex >> toclevel;
                        break;
 
                case LT_OPTARGS:
-                       lex >> optionalargs ;
+                       lex >> optargs;
+                       break;
+
+               case LT_REQARGS:
+                       lex >> reqargs;
                        break;
 
                case LT_NEED_PROTECT:
@@ -484,6 +506,16 @@ bool Layout::read(Lexer & lex, TextClass const & tclass)
                        requires_.insert(req.begin(), req.end());
                        break;
                }
+                       
+               case LT_REFPREFIX: {
+                       docstring arg;
+                       lex >> arg;
+                       if (arg == "OFF")
+                               refprefix.clear();
+                       else
+                               refprefix = arg;
+                       break;
+               }
 
                case LT_HTMLTAG:
                        lex >> htmltag_;
@@ -523,10 +555,23 @@ bool Layout::read(Lexer & lex, TextClass const & tclass)
                case LT_HTMLPREAMBLE:
                        htmlpreamble_ = from_utf8(lex.getLongString("EndPreamble"));
                        break;
+               
+               case LT_HTMLTITLE:
+                       lex >> htmltitle_;
+                       break;
 
+               case LT_SPELLCHECK:
+                       lex >> spellcheck;
+                       break;
                }
        }
        lex.popTable();
+       // make sure we only have inpreamble = true for commands
+       if (inpreamble && latextype != LATEX_COMMAND) {
+               LYXERR0("InPreamble not permitted except with Command-type layouts.");
+               LYXERR0("Layout name: " << name());
+               inpreamble = false;
+       }
 
        return !error;
 }
@@ -834,11 +879,11 @@ docstring const i18npreamble(Language const * lang, docstring const & templ)
        LASSERT(false, /**/);
 #else
        // FIXME UNICODE
-       // boost::regex is not unicode-safe.
+       // lyx::regex is not unicode-safe.
        // Should use QRegExp or (boost::u32regex, but that requires ICU)
-       static boost::regex const reg("_\\(([^\\)]+)\\)");
-       boost::smatch sub;
-       while (boost::regex_search(preamble, sub, reg)) {
+       static regex const reg("_\\(([^\\)]+)\\)");
+       smatch sub;
+       while (regex_search(preamble, sub, reg)) {
                string const key = sub.str(1);
                string translated;
                if (isAscii(key))