]> git.lyx.org Git - lyx.git/blobdiff - src/LayoutFile.cpp
use lfun
[lyx.git] / src / LayoutFile.cpp
index a559bbf243bb622e69f1099cef63cc2479e4bb6a..88a4cf63f57a26e56807702fced1997823b38fb4 100644 (file)
 #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>
@@ -82,8 +85,7 @@ LayoutFile const & LayoutFileList::operator[](string const & classname) const
 }
 
 
-LayoutFile & 
-       LayoutFileList::operator[](string const & classname)
+LayoutFile & LayoutFileList::operator[](string const & classname)
 {
        LASSERT(haveClass(classname), /**/);
        return *classmap_[classname];
@@ -137,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");
@@ -289,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"))