]> git.lyx.org Git - lyx.git/blobdiff - src/LayoutFile.cpp
Reimplement inset-select-all in a generic way
[lyx.git] / src / LayoutFile.cpp
index 496707c04ede3f83acb3f65c3b79c679d733091c..e428b5d76f860e932e2d44906862925ddfd8bd03 100644 (file)
@@ -29,6 +29,7 @@
 
 #include "support/bind.h"
 #include "support/regex.h"
+#include "support/TempFile.h"
 
 #include <fstream>
 
@@ -83,14 +84,16 @@ bool LayoutFileList::haveClass(string const & classname) const
 
 LayoutFile const & LayoutFileList::operator[](string const & classname) const
 {
-       LASSERT(haveClass(classname), /**/);
+       LATTEST(haveClass(classname));
+       // safe to continue, since we will make an empty LayoutFile
        return *classmap_[classname];
 }
 
 
 LayoutFile & LayoutFileList::operator[](string const & classname)
 {
-       LASSERT(haveClass(classname), /**/);
+       LATTEST(haveClass(classname));
+       // safe to continue, since we will make an empty LayoutFile
        return *classmap_[classname];
 }
 
@@ -184,7 +187,8 @@ std::vector<LayoutFileIndex> LayoutFileList::classList() const
 
 void LayoutFileList::reset(LayoutFileIndex const & classname)
 {
-       LASSERT(haveClass(classname), /**/);
+       LATTEST(haveClass(classname));
+       // safe to continue, since we will make an empty LayoutFile
        LayoutFile * tc = classmap_[classname];
        LayoutFile * tmpl = 
                new LayoutFile(tc->name(), tc->latexname(), tc->description(),
@@ -221,8 +225,9 @@ string layoutpost =
 LayoutFileIndex LayoutFileList::addEmptyClass(string const & textclass)
 {
        // FIXME This could be simplified a bit to call TextClass::read(string, ReadType).
-       
-       FileName const tempLayout = FileName::tempName("basic_layout");
+
+       TempFile tempfile("basicXXXXXX.layout");
+       FileName const tempLayout = tempfile.name();
        ofstream ofs(tempLayout.toFilesystemEncoding().c_str());
        // This writes a very basic class, but it also attempts to include 
        // stdclass.inc. That would give us something moderately usable.
@@ -253,7 +258,7 @@ LayoutFileIndex LayoutFileList::addEmptyClass(string const & textclass)
                if (!tc->load(tempLayout.absFileName())) {
                        // This can only happen if the hardcoded file above is wrong
                        // or there is some weird filesystem error.
-                       LASSERT(false, /* */);
+                       LATTEST(false); // We will get an empty layout or something.
                }
        }
 
@@ -273,6 +278,7 @@ LayoutFileIndex  LayoutFileList::addLocalLayout(
        string fullName = addName(path, textclass + ".layout");
        
        FileName const layout_file(fullName);
+
        if (!layout_file.exists())
                return string();
 
@@ -296,6 +302,7 @@ LayoutFileIndex  LayoutFileList::addLocalLayout(
                smatch sub;
                if (regex_match(line, sub, reg)) {
                        // returns: whole string, classtype (not used here), class name, description
+                       // LASSERT: Why would this fail?
                        LASSERT(sub.size() == 4, /**/);
                        // now, create a TextClass with description containing path information
                        class_name = (sub.str(2) == "" ? textclass : sub.str(2));