// development/updatelayouts.sh script, to update the format of
// all of our layout files.
//
-int const LAYOUT_FORMAT = 32;
+int const LAYOUT_FORMAT = 35;
namespace {
}
+std::string TextClass::convert(std::string const & str)
+{
+ FileName const fn = FileName::tempName("locallayout");
+ ofstream os(fn.toFilesystemEncoding().c_str());
+ os << str;
+ os.close();
+ FileName const tempfile = FileName::tempName("convert_locallayout");
+ bool success = layout2layout(fn, tempfile);
+ if (!success)
+ return "";
+ ifstream is(tempfile.toFilesystemEncoding().c_str());
+ string ret;
+ string tmp;
+ while (!is.eof()) {
+ getline(is, tmp);
+ ret += tmp + '\n';
+ }
+ is.close();
+ tempfile.removeFile();
+ return ret;
+}
+
+
TextClass::ReturnValues TextClass::readWithoutConv(FileName const & filename, ReadType rt)
{
if (!filename.isReadableFile()) {
return retval == OK;
bool const worx = convertLayoutFormat(filename, rt);
- if (!worx) {
+ if (!worx)
LYXERR0 ("Unable to convert " << filename <<
" to format " << LAYOUT_FORMAT);
- return false;
- }
- return true;
+ return worx;
}
-bool TextClass::validate(std::string const & str)
+TextClass::ReturnValues TextClass::validate(std::string const & str)
{
TextClass tc;
return tc.read(str, VALIDATION);
}
-bool TextClass::read(std::string const & str, ReadType rt)
+TextClass::ReturnValues TextClass::read(std::string const & str, ReadType rt)
{
Lexer lexrc(textClassTags);
istringstream is(str);
ReturnValues retval = read(lexrc, rt);
if (retval != FORMAT_MISMATCH)
- return retval == OK;
+ return retval;
// write the layout string to a temporary file
FileName const tempfile = FileName::tempName("TextClass_read");
ofstream os(tempfile.toFilesystemEncoding().c_str());
if (!os) {
LYXERR0("Unable to create temporary file");
- return false;
+ return ERROR;
}
os << str;
os.close();
if (!worx) {
LYXERR0("Unable to convert internal layout information to format "
<< LAYOUT_FORMAT);
+ return ERROR;
}
tempfile.removeFile();
- return worx;
+ return OK_OLDFORMAT;
}
FT_WITHIN,
FT_STYLE,
FT_LISTNAME,
- FT_NEEDSFLOAT,
+ FT_USESFLOAT,
+ FT_PREDEFINED,
FT_HTMLSTYLE,
FT_HTMLATTR,
FT_HTMLTAG,
{ "htmlattr", FT_HTMLATTR },
{ "htmlstyle", FT_HTMLSTYLE },
{ "htmltag", FT_HTMLTAG },
+ { "ispredefined", FT_PREDEFINED },
{ "listcommand", FT_LISTCOMMAND },
{ "listname", FT_LISTNAME },
- { "needsfloatpkg", FT_NEEDSFLOAT },
{ "numberwithin", FT_WITHIN },
{ "placement", FT_PLACEMENT },
{ "refprefix", FT_REFPREFIX },
{ "style", FT_STYLE },
- { "type", FT_TYPE }
+ { "type", FT_TYPE },
+ { "usesfloatpkg", FT_USESFLOAT }
};
lexrc.pushTable(floatTags);
string style;
string type;
string within;
- bool needsfloat = true;
+ bool usesfloat = true;
+ bool ispredefined = false;
bool getout = false;
while (!getout && lexrc.isOK()) {
style = fl.style();
name = fl.name();
listname = fl.listName();
- needsfloat = fl.needsFloatPkg();
+ usesfloat = fl.usesFloatPkg();
+ ispredefined = fl.isPredefined();
listcommand = fl.listCommand();
refprefix = fl.refPrefix();
}
lexrc.next();
listname = lexrc.getString();
break;
- case FT_NEEDSFLOAT:
+ case FT_USESFLOAT:
+ lexrc.next();
+ usesfloat = lexrc.getBool();
+ break;
+ case FT_PREDEFINED:
lexrc.next();
- needsfloat = lexrc.getBool();
+ ispredefined = lexrc.getBool();
break;
case FT_HTMLATTR:
lexrc.next();
// Here we have a full float if getout == true
if (getout) {
- if (!needsfloat && listcommand.empty()) {
+ if (!usesfloat && listcommand.empty()) {
// if this float uses the same auxfile as an existing one,
// there is no need for it to provide a list command.
FloatList::const_iterator it = floatlist_.begin();
}
if (!found_ext)
LYXERR0("The layout does not provide a list command " <<
- "for the builtin float `" << type << "'. LyX will " <<
+ "for the float `" << type << "'. LyX will " <<
"not be able to produce a float list.");
}
Floating fl(type, placement, ext, within, style, name,
listname, listcommand, refprefix,
- htmltag, htmlattr, htmlstyle, needsfloat);
+ htmltag, htmlattr, htmlstyle, usesfloat, ispredefined);
floatlist_.newFloat(fl);
// each float has its own counter
counters_.newCounter(from_ascii(type), from_ascii(within),
docstring const & TextClass::defaultLayoutName() const
{
- // This really should come from the actual layout... (Lgb)
return defaultlayout_;
}