* This file is part of LyX, the document processor.
* Licence details can be found in the file COPYING.
*
- * \author Lars Gullik Bjønnes
+ * \author Lars Gullik Bjønnes
* \author John Levon
*
* Full author contact details are available in file CREDITS.
#include "Lexer.h"
#include "TextClass.h"
-#include "support/lassert.h"
+#include "frontends/alert.h"
+
#include "support/debug.h"
#include "support/FileName.h"
#include "support/filetools.h"
#include "support/gettext.h"
+#include "support/lassert.h"
+#include "support/lstrings.h"
#include <boost/bind.hpp>
#include <boost/regex.hpp>
}
-LayoutFile &
- LayoutFileList::operator[](string const & classname)
+LayoutFile & LayoutFileList::operator[](string const & classname)
{
LASSERT(haveClass(classname), /**/);
return *classmap_[classname];
default:
string const fname = lex.getString();
LYXERR(Debug::TCLASS, "Fname: " << fname);
- if (lex.next()) {
- string const clname = lex.getString();
- LYXERR(Debug::TCLASS, "Clname: " << clname);
- if (lex.next()) {
- string const desc = lex.getString();
- LYXERR(Debug::TCLASS, "Desc: " << desc);
- if (lex.next()) {
- bool avail = lex.getBool();
- LYXERR(Debug::TCLASS, "Avail: " << avail);
- // This code is run when we have
- // fname, clname, desc, and avail
- LayoutFile * tmpl = new LayoutFile(fname, clname, desc, avail);
- if (lyxerr.debugging(Debug::TCLASS)) {
- // only system layout files are loaded here so no
- // buffer path is needed.
- tmpl->load();
- }
- classmap_[fname] = tmpl;
- }
- }
+ if (!lex.next())
+ break;
+ string const clname = lex.getString();
+ LYXERR(Debug::TCLASS, "Clname: " << clname);
+ if (!lex.next())
+ break;
+ string const desc = lex.getString();
+ LYXERR(Debug::TCLASS, "Desc: " << desc);
+ if (!lex.next())
+ break;
+ bool avail = lex.getBool();
+ LYXERR(Debug::TCLASS, "Avail: " << avail);
+ // This code is run when we have
+ // fname, clname, desc, and avail
+ LayoutFile * tmpl = new LayoutFile(fname, clname, desc, avail);
+ if (lyxerr.debugging(Debug::TCLASS)) {
+ // only system layout files are loaded here so no
+ // buffer path is needed.
+ tmpl->load();
}
+ classmap_[fname] = tmpl;
}
}
LYXERR(Debug::TCLASS, "End of parsing of textclass.lst");
// the last parameter to true will suppress a warning message about missing
// tex class.
LayoutFile * tc = new LayoutFile(textclass, textclass, "Unknown text class " + textclass, true);
- if (!tc->load(tempLayout.absFilename()))
+ if (!tc->load(tempLayout.absFilename())) {
// The only way this happens is because the hardcoded layout file above
// is wrong.
LASSERT(false, /**/);
+ }
classmap_[textclass] = tc;
return textclass;
}
// There will be only one textclass with this name, even if different
// layout files are loaded from different directories.
if (haveClass(textclass)) {
- LYXERR0("Exisint textclass " << textclass << " is redefined by " << fullName);
+ LYXERR0("Existing textclass " << textclass << " is redefined by " << fullName);
delete classmap_[textclass];
}
classmap_[textclass] = tmpl;
}
+bool LayoutFileList::load(string const & name, string const & buf_path)
+{
+ if (!haveClass(name)) {
+ LYXERR0("Document class \"" << name << "\" does not exist.");
+ return false;
+ }
+
+ LayoutFile * tc = classmap_[name];
+ if (!tc->load(buf_path)) {
+ docstring s = bformat(_("The document class %1$s "
+ "could not be loaded."), from_utf8(name));
+ frontend::Alert::error(_("Could not load class"), s);
+ return false;
+ }
+ return true;
+}
+
+
LayoutFileIndex defaultBaseclass()
{
if (LayoutFileList::get().haveClass("article"))