// 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 = 62; //spitz PassThru for arguments.
+
+
+// Layout format for the current lyx file format. Controls which format is
+// targeted by Local Layout > Convert. In master, equal to LAYOUT_FORMAT.
+int const LYXFILE_LAYOUT_FORMAT = LAYOUT_FORMAT;
+
namespace {
};
-bool layout2layout(FileName const & filename, FileName const & tempfile)
+bool layout2layout(FileName const & filename, FileName const & tempfile,
+ int const format = LAYOUT_FORMAT)
{
FileName const script = libFileSearch("scripts", "layout2layout.py");
if (script.empty()) {
LYXERR0("Could not find layout conversion "
- "script layout2layout.py.");
+ "script layout2layout.py.");
return false;
}
ostringstream command;
command << os::python() << ' ' << quoteName(script.toFilesystemEncoding())
- << ' ' << quoteName(filename.toFilesystemEncoding())
- << ' ' << quoteName(tempfile.toFilesystemEncoding());
+ << " -t " << format
+ << ' ' << quoteName(filename.toFilesystemEncoding())
+ << ' ' << quoteName(tempfile.toFilesystemEncoding());
string const command_str = command.str();
LYXERR(Debug::TCLASS, "Running `" << command_str << '\'');
cmd_ret const ret = runCommand(command_str);
if (ret.first != 0) {
- LYXERR0("Could not run layout conversion script layout2layout.py.");
+ if (format == LAYOUT_FORMAT)
+ LYXERR0("Conversion of layout with layout2layout.py has failed.");
return false;
}
return true;
docstring const TextClass::plain_layout_ = from_ascii(N_("Plain Layout"));
-InsetLayout DocumentClass::plain_insetlayout_;
-
-
/////////////////////////////////////////////////////////////////////////
//
// TextClass
TC_CITEENGINETYPE,
TC_CITEFORMAT,
TC_DEFAULTBIBLIO,
- TC_FULLAUTHORLIST
+ TC_FULLAUTHORLIST,
+ TC_OUTLINERNAME
};
{ "nofloat", TC_NOFLOAT },
{ "noinsetlayout", TC_NOINSETLAYOUT },
{ "nostyle", TC_NOSTYLE },
+ { "outlinername", TC_OUTLINERNAME },
{ "outputformat", TC_OUTPUTFORMAT },
{ "outputtype", TC_OUTPUTTYPE },
{ "packageoptions", TC_PKGOPTS },
os.close();
TempFile tmp2("convert_localXXXXXX.layout");
FileName const tempfile = tmp2.name();
- bool success = layout2layout(fn, tempfile);
+ bool success = layout2layout(fn, tempfile, LYXFILE_LAYOUT_FORMAT);
if (!success)
return "";
ifstream is(tempfile.toFilesystemEncoding().c_str());
os << str;
os.close();
- // now try to convert it
- bool const worx = convertLayoutFormat(tempfile, rt);
- if (!worx) {
+ // now try to convert it to LAYOUT_FORMAT
+ if (!convertLayoutFormat(tempfile, rt)) {
LYXERR0("Unable to convert internal layout information to format "
<< LAYOUT_FORMAT);
return ERROR;
}
+
return OK_OLDFORMAT;
}
// Either way, we just scan the rest and discard it
else {
Layout lay;
+ // false positive from coverity
+ // coverity[CHECKED_RETURN]
readStyle(lexrc, lay);
}
break;
break;
case TC_PREAMBLE:
- preamble_ = from_utf8(lexrc.getLongString("EndPreamble"));
+ preamble_ = lexrc.getLongString(from_ascii("EndPreamble"));
break;
case TC_HTMLPREAMBLE:
- htmlpreamble_ = from_utf8(lexrc.getLongString("EndPreamble"));
+ htmlpreamble_ = lexrc.getLongString(from_ascii("EndPreamble"));
break;
case TC_HTMLSTYLES:
- htmlstyles_ = from_utf8(lexrc.getLongString("EndStyles"));
+ htmlstyles_ = lexrc.getLongString(from_ascii("EndStyles"));
break;
case TC_HTMLTOCSECTION:
break;
case TC_ADDTOPREAMBLE:
- preamble_ += from_utf8(lexrc.getLongString("EndPreamble"));
+ preamble_ += lexrc.getLongString(from_ascii("EndPreamble"));
break;
case TC_ADDTOHTMLPREAMBLE:
- htmlpreamble_ += from_utf8(lexrc.getLongString("EndPreamble"));
+ htmlpreamble_ += lexrc.getLongString(from_ascii("EndPreamble"));
break;
case TC_ADDTOHTMLSTYLES:
- htmlstyles_ += from_utf8(lexrc.getLongString("EndStyles"));
+ htmlstyles_ += lexrc.getLongString(from_ascii("EndStyles"));
break;
case TC_PROVIDES: {
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
string ext;
string htmlattr;
- string htmlstyle;
+ docstring htmlstyle;
string htmltag;
string listname;
string listcommand;
break;
case FT_HTMLSTYLE:
lexrc.next();
- htmlstyle = lexrc.getLongString("EndHTMLStyle");
+ htmlstyle = lexrc.getLongString(from_ascii("EndHTMLStyle"));
break;
case FT_HTMLTAG:
lexrc.next();
}
+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_, ',')) {
n = n.substr(0, i);
}
// Layout "name" not found.
+ return plainInsetLayout();
+}
+
+
+InsetLayout const & DocumentClass::plainInsetLayout() {
+ static const InsetLayout plain_insetlayout_;
return plain_insetlayout_;
}