]> git.lyx.org Git - lyx.git/blobdiff - src/TextClass.cpp
Make the non-drawing cases faster in TextMetrics::drawParagraph
[lyx.git] / src / TextClass.cpp
index 0ee74a7b50449852bcaf24ee3f7fe43215d31f97..e1e40272ea0651b71c21a9f657feead535c7cf56 100644 (file)
@@ -61,7 +61,7 @@ namespace lyx {
 // You should also run the development/tools/updatelayouts.py script,
 // to update the format of all of our layout files.
 //
-int const LAYOUT_FORMAT = 58; // rgh: ProvideStyle
+int const LAYOUT_FORMAT = 60; //lasgouttes LongTableNoNumber => Unnumbered
 
 namespace {
 
@@ -129,9 +129,6 @@ string translateReadType(TextClass::ReadType rt)
 docstring const TextClass::plain_layout_ = from_ascii(N_("Plain Layout"));
 
 
-InsetLayout DocumentClass::plain_insetlayout_;
-
-
 /////////////////////////////////////////////////////////////////////////
 //
 // TextClass
@@ -213,7 +210,8 @@ enum TextClassTags {
        TC_CITEENGINETYPE,
        TC_CITEFORMAT,
        TC_DEFAULTBIBLIO,
-       TC_FULLAUTHORLIST
+       TC_FULLAUTHORLIST,
+       TC_OUTLINERNAME
 };
 
 
@@ -249,6 +247,7 @@ LexerKeyword textClassTags[] = {
        { "nofloat",           TC_NOFLOAT },
        { "noinsetlayout",     TC_NOINSETLAYOUT },
        { "nostyle",           TC_NOSTYLE },
+       { "outlinername",      TC_OUTLINERNAME },
        { "outputformat",      TC_OUTPUTFORMAT },
        { "outputtype",        TC_OUTPUTTYPE },
        { "packageoptions",    TC_PKGOPTS },
@@ -801,6 +800,10 @@ TextClass::ReturnValues TextClass::read(Lexer & lexrc, ReadType rt)
                                floatlist_.erase(nofloat);
                        }
                        break;
+
+               case TC_OUTLINERNAME:
+                       error = !readOutlinerName(lexrc);
+                       break;
                } // end of switch
 
                // Note that this is triggered the first time through the loop unless
@@ -1295,6 +1298,39 @@ bool TextClass::readFloat(Lexer & lexrc)
 }
 
 
+bool TextClass::readOutlinerName(Lexer & lexrc)
+{
+       std::string type;
+       docstring name;
+       if (lexrc.next())
+               type = lexrc.getString();
+       else {
+               lexrc.printError("No type given for OutlinerName: `$$Token'.");
+               return false;
+       }
+       if (lexrc.next())
+               name = lexrc.getDocString();
+       else {
+               lexrc.printError("No name given for OutlinerName: `$$Token'.");
+               return false;
+       }
+       outliner_names_[type] = name;
+    return true;
+}
+
+
+docstring TextClass::outlinerName(std::string const & type) const
+{
+       std::map<std::string,docstring>::const_iterator const it
+               = outliner_names_.find(type);
+       if (it == outliner_names_.end()) {
+               LYXERR0("Missing OutlinerName for " << type << "!");
+               return from_utf8(type);
+       } else
+               return it->second;
+}
+
+
 string const & TextClass::prerequisites(string const & sep) const
 {
        if (contains(prerequisites_, ',')) {
@@ -1470,6 +1506,12 @@ InsetLayout const & DocumentClass::insetLayout(docstring const & name) const
                n = n.substr(0, i);
        }
        // Layout "name" not found.
+       return plainInsetLayout();
+}
+
+
+InsetLayout const & DocumentClass::plainInsetLayout() {
+       static const InsetLayout plain_insetlayout_;
        return plain_insetlayout_;
 }