#include "support/lstrings.h"
#include "support/lyxlib.h"
#include "support/filetools.h"
+#include "support/os.h"
+
+#include <boost/filesystem/operations.hpp>
+namespace fs = boost::filesystem;
#include <sstream>
using lyx::support::quoteName;
using lyx::support::rtrim;
using lyx::support::subst;
+using lyx::support::addName;
using std::endl;
using std::find_if;
}
std::ostringstream command;
- command << "python " << quoteName(script)
+ command << lyx::support::os::python() << ' ' << quoteName(script)
<< ' ' << quoteName(filename)
<< ' ' << quoteName(tempfile);
string const command_str = command.str();
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;
}
keyword_item outputTypeTags[] = {
{ "docbook", DOCBOOK },
{ "latex", LATEX },
- { "linuxdoc", LINUXDOC },
{ "literate", LITERATE }
};
lexrc.printError("Unknown output type `$$Token'");
return;
case LATEX:
- case LINUXDOC:
case DOCBOOK:
case LITERATE:
outputType_ = static_cast<OutputType>(le);
// 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, provided path is searched before the system ones
+ string layout_file;
+ if (!path.empty())
+ layout_file = addName(path, name_ + ".layout");
+ if (layout_file.empty() || !fs::exists(layout_file))
+ layout_file = libFileSearch("layouts", name_, "layout");
+ loaded_ = const_cast<LyXTextClass*>(this)->read(layout_file) == 0;
if (!loaded_) {
lyxerr << "Error reading `"
- << makeDisplayPath(real_file)
+ << makeDisplayPath(layout_file)
<< "'\n(Check `" << name_
<< "')\nCheck your installation and "
"try Options/Reconfigure..." << endl;