#include "FloatList.h"
#include "Layout.h"
#include "Lexer.h"
+#include "Font.h"
#include "frontends/alert.h"
#include "support/lstrings.h"
-#include "support/lyxlib.h"
+#include "support/FileName.h"
#include "support/filetools.h"
#include "support/os.h"
#include <sstream>
-using std::endl;
-using std::find_if;
-using std::remove_if;
-using std::string;
-using std::ostream;
+using namespace std;
+using namespace lyx::support;
namespace lyx {
-using support::FileName;
-using support::libFileSearch;
-using support::makeDisplayPath;
-using support::quoteName;
-using support::rtrim;
-using support::subst;
-using support::addName;
-
-extern FontInfo lyxRead(Lexer &, FontInfo const & fi = sane_font);
-
-
namespace {
-class LayoutNamesEqual : public std::unary_function<LayoutPtr, bool> {
+class LayoutNamesEqual : public unary_function<LayoutPtr, bool> {
public:
LayoutNamesEqual(docstring const & name)
: name_(name)
};
-int const FORMAT = 5;
+int const FORMAT = 6;
bool layout2layout(FileName const & filename, FileName const & tempfile)
return false;
}
- std::ostringstream command;
- command << support::os::python() << ' ' << quoteName(script.toFilesystemEncoding())
+ ostringstream command;
+ command << os::python() << ' ' << quoteName(script.toFilesystemEncoding())
<< ' ' << quoteName(filename.toFilesystemEncoding())
<< ' ' << quoteName(tempfile.toFilesystemEncoding());
string const command_str = command.str();
LYXERR(Debug::TCLASS, "Running `" << command_str << '\'');
- support::cmd_ret const ret =
- support::runCommand(command_str);
+ cmd_ret const ret =
+ runCommand(command_str);
if (ret.first != 0) {
lyxerr << "Could not run layout conversion "
"script layout2layout.py." << endl;
TC_CLASSOPTIONS,
TC_PREAMBLE,
TC_PROVIDES,
+ TC_REQUIRES,
TC_LEFTMARGIN,
TC_RIGHTMARGIN,
TC_FLOAT,
{ "pagestyle", TC_PAGESTYLE },
{ "preamble", TC_PREAMBLE },
{ "provides", TC_PROVIDES },
+ { "requires", TC_REQUIRES },
{ "rightmargin", TC_RIGHTMARGIN },
{ "secnumdepth", TC_SECNUMDEPTH },
{ "sides", TC_SIDES },
break;
case MERGE:
LYXERR(Debug::TCLASS, "Reading input file ");
- break;
+ break;
case MODULE:
LYXERR(Debug::TCLASS, "Reading module file ");
break;
"layout");
if (tmp.empty()) {
- lexrc.printError("Could not find input"
- "file: " + inc);
+ lexrc.printError("Could not find input file: " + inc);
error = true;
} else if (read(tmp, MERGE)) {
lexrc.printError("Error reading input"
break;
}
+ case TC_REQUIRES: {
+ lexrc.eatLine();
+ vector<string> const req
+ = getVectorFromString(lexrc.getString());
+ requires_.insert(req.begin(), req.end());
+ break;
+ }
+
case TC_LEFTMARGIN: // left margin type
if (lexrc.next())
leftmargin_ = lexrc.getDocString();
if (format != FORMAT) {
LYXERR(Debug::TCLASS, "Converting layout file from format "
<< format << " to " << FORMAT);
- FileName const tempfile(support::tempName());
+ FileName const tempfile = FileName::tempName();
error = !layout2layout(filename, tempfile);
if (!error)
error = read(tempfile, rt);
if (min_toclevel_ == Layout::NOT_IN_TOC)
min_toclevel_ = toclevel;
else
- min_toclevel_ = std::min(min_toclevel_,
+ min_toclevel_ = min(min_toclevel_,
toclevel);
- max_toclevel_ = std::max(max_toclevel_,
+ max_toclevel_ = max(max_toclevel_,
toclevel);
}
}
IL_NEEDPROTECT,
IL_PASSTHRU,
IL_PREAMBLE,
+ IL_REQUIRES,
IL_END
};
{ "multipar", IL_MULTIPAR },
{ "needprotect", IL_NEEDPROTECT },
{ "passthru", IL_PASSTHRU },
- { "preamble", IL_PREAMBLE }
+ { "preamble", IL_PREAMBLE },
+ { "requires", IL_REQUIRES }
};
lexrc.pushTable(elementTags, IL_END);
FontInfo labelfont = inherit_font;
ColorCode bgcolor(Color_background);
string preamble;
+ set<string> requires;
bool multipar = false;
bool passthru = false;
bool needprotect = false;
int le = lexrc.lex();
switch (le) {
case Lexer::LEX_UNDEF:
- lexrc.printError("Unknown ClassOption tag `$$Token'");
+ lexrc.printError("Unknown InsetLayout tag `$$Token'");
continue;
default: break;
}
case IL_PREAMBLE:
preamble = lexrc.getLongString("EndPreamble");
break;
+ case IL_REQUIRES: {
+ lexrc.eatLine();
+ vector<string> const req
+ = getVectorFromString(lexrc.getString());
+ requires.insert(req.begin(), req.end());
+ break;
+ }
case IL_END:
getout = true;
break;
// any realization against a given context.
labelfont.realize(sane_font);
il.labelfont = labelfont;
- il.bgcolor = bgcolor;
+ il.bgcolor = bgcolor;
il.preamble = preamble;
+ il.requires = requires;
insetlayoutlist_[name] = il;
}
int le = lexrc.lex();
switch (le) {
case Lexer::LEX_UNDEF:
- lexrc.printError("Unknown ClassOption tag `$$Token'");
+ lexrc.printError("Unknown float tag `$$Token'");
continue;
default: break;
}
int le = lexrc.lex();
switch (le) {
case Lexer::LEX_UNDEF:
- lexrc.printError("Unknown ClassOption tag `$$Token'");
+ lexrc.printError("Unknown counter tag `$$Token'");
continue;
default: break;
}