#include "support/gettext.h"
#include "support/lstrings.h"
#include "support/os.h"
+#include "support/TempFile.h"
#include <algorithm>
#include <fstream>
// LayoutFile.cpp. Additions will never do so, but syntax changes
// could. See LayoutFileList::addEmptyClass() and, especially, the
// definition of the layoutpost string.
-// You should also run (or ask someone who has bash to run) the
-// development/tools/updatelayouts.sh script, to update the format of
-// all of our layout files.
+// You should also run the development/tools/updatelayouts.py script,
+// to update the format of all of our layout files.
//
-int const LAYOUT_FORMAT = 48; //rgh: initial values for counter
+int const LAYOUT_FORMAT = 55; //spitz: InsetLayout and Layout tags PassThruChars
namespace {
// This string should not be translated here,
// because it is a layout identifier.
-docstring const TextClass::plain_layout_ = from_ascii("Plain Layout");
+docstring const TextClass::plain_layout_ = from_ascii(N_("Plain Layout"));
InsetLayout DocumentClass::plain_insetlayout_;
titletype_ = TITLE_COMMAND_AFTER;
titlename_ = "maketitle";
loaded_ = false;
- _("Plain Layout"); // a hack to make this translatable
}
TC_CITEENGINETYPE,
TC_CITEFORMAT,
TC_DEFAULTBIBLIO,
- TC_FULLAUTHORLIST,
+ TC_FULLAUTHORLIST
};
bool TextClass::convertLayoutFormat(support::FileName const & filename, ReadType rt)
{
LYXERR(Debug::TCLASS, "Converting layout file to " << LAYOUT_FORMAT);
- FileName const tempfile = FileName::tempName("convert_layout");
+ TempFile tmp("convertXXXXXX.layout");
+ FileName const tempfile = tmp.name();
bool success = layout2layout(filename, tempfile);
if (success)
success = readWithoutConv(tempfile, rt) == OK;
- tempfile.removeFile();
return success;
}
std::string TextClass::convert(std::string const & str)
{
- FileName const fn = FileName::tempName("locallayout");
+ TempFile tmp1("localXXXXXX.layout");
+ FileName const fn = tmp1.name();
ofstream os(fn.toFilesystemEncoding().c_str());
os << str;
os.close();
- FileName const tempfile = FileName::tempName("convert_locallayout");
+ TempFile tmp2("convert_localXXXXXX.layout");
+ FileName const tempfile = tmp2.name();
bool success = layout2layout(fn, tempfile);
if (!success)
return "";
ret += tmp + '\n';
}
is.close();
- tempfile.removeFile();
return ret;
}
return retval;
// write the layout string to a temporary file
- FileName const tempfile = FileName::tempName("TextClass_read");
+ TempFile tmp("TextClass_read");
+ FileName const tempfile = tmp.name();
ofstream os(tempfile.toFilesystemEncoding().c_str());
if (!os) {
LYXERR0("Unable to create temporary file");
<< LAYOUT_FORMAT);
return ERROR;
}
- tempfile.removeFile();
return OK_OLDFORMAT;
}
InsetLayouts::const_iterator cen = insetlayoutlist_.end();
while (!n.empty()) {
InsetLayouts::const_iterator cit = insetlayoutlist_.lower_bound(n);
- if (cit != cen && cit->first == n)
- return cit->second;
+ if (cit != cen && cit->first == n) {
+ if (cit->second.obsoleted_by().empty())
+ return cit->second;
+ n = cit->second.obsoleted_by();
+ return insetLayout(n);
+ }
+ // If we have a generic prefix (e.g., "Note:"),
+ // try if this one alone is found.
size_t i = n.find(':');
if (i == string::npos)
break;
n = n.substr(0, i);
}
+ // Layout "name" not found.
return plain_insetlayout_;
}