#include "support/lstrings.h"
#include "support/lyxlib.h"
#include "support/filetools.h"
+#include <boost/filesystem/operations.hpp>
+namespace fs = boost::filesystem;
#include <sstream>
bool LyXTextClass::do_readStyle(LyXLex & lexrc, LyXLayout & lay)
{
lyxerr[Debug::TCLASS] << "Reading style " << lay.name() << endl;
- if (!lay.Read(lexrc, *this)) {
+ if (!lay.read(lexrc, *this)) {
// Resolve fonts
lay.resfont = lay.font;
lay.resfont.realize(defaultfont());
// Reads a textclass structure from file.
-bool LyXTextClass::Read(string const & filename, bool merge)
+bool LyXTextClass::read(string const & filename, bool merge)
{
if (!lyx::support::isFileReadable(filename)) {
lyxerr << "Cannot read layout file `" << filename << "'."
lexrc.getString(),
"layout");
- if (Read(tmp, true)) {
+ if (read(tmp, true)) {
lexrc.printError("Error reading input"
"file: "+tmp);
error = true;
string const tempfile = lyx::support::tempName();
error = !layout2layout(filename, tempfile);
if (!error)
- error = Read(tempfile, merge);
+ error = read(tempfile, merge);
lyx::support::unlink(tempfile);
return error;
}
// Load textclass info if not loaded yet
-bool LyXTextClass::load() const
+bool LyXTextClass::load(string const & path) const
{
if (loaded_)
return true;
- // Read style-file
- string const real_file = libFileSearch("layouts", name_, "layout");
- loaded_ = const_cast<LyXTextClass*>(this)->Read(real_file) == 0;
+ // Read style-file, current directory is searched before system ones
+ string real_file = path + "/" + name_ + ".layout";
+ if (!fs::exists(real_file))
+ real_file = libFileSearch("layouts", name_, "layout");
+ loaded_ = const_cast<LyXTextClass*>(this)->read(real_file) == 0;
if (!loaded_) {
lyxerr << "Error reading `"