X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FLayoutFile.cpp;h=88a4cf63f57a26e56807702fced1997823b38fb4;hb=d61f81f188cba8a592879d9df9e775806787fea1;hp=b7abd795d0f6f5c5cea420656fa73fb14e8f89bc;hpb=7e4d4d2641e1f9ba26ad94eda3b0948903f6c3bc;p=lyx.git diff --git a/src/LayoutFile.cpp b/src/LayoutFile.cpp index b7abd795d0..88a4cf63f5 100644 --- a/src/LayoutFile.cpp +++ b/src/LayoutFile.cpp @@ -18,11 +18,14 @@ #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 #include @@ -136,27 +139,27 @@ bool LayoutFileList::read() 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"); @@ -288,6 +291,24 @@ LayoutFileIndex } +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"))