]> git.lyx.org Git - lyx.git/blobdiff - src/Buffer.cpp
Embedding: saving inzip name to .lyx file so that embedded files can always be found...
[lyx.git] / src / Buffer.cpp
index a740c6ddab6e2344b72d754339db6911d503cfd3..5d90106fad5361212d24e96452d56def64027bd6 100644 (file)
@@ -118,7 +118,7 @@ namespace os = support::os;
 
 namespace {
 
-int const LYX_FORMAT = 309; // Bernhard Reiter: support for \nocite
+int const LYX_FORMAT = 311; // Richard Heck: a dummy format to drive the AMS conversion
 
 } // namespace anon
 
@@ -192,7 +192,7 @@ public:
        map<string, ErrorList> errorLists;
 
        /// all embedded files of this buffer
-       EmbeddedFiles embedded_files;
+       EmbeddedFileList embedded_files;
 
        /// timestamp and checksum used to test if the file has been externally
        /// modified. (Used to properly enable 'File->Revert to saved', bug 4114).
@@ -207,7 +207,7 @@ public:
 
        /// A cache for the bibfiles (including bibfiles of loaded child
        /// documents), needed for appropriate update of natbib labels.
-       mutable FileNameList bibfilesCache_;
+       mutable EmbeddedFileList bibfilesCache_;
 };
 
 /// Creates the per buffer temporary directory
@@ -233,7 +233,7 @@ Buffer::Impl::Impl(Buffer & parent, FileName const & file, bool readonly_)
        : parent_buffer(0), lyx_clean(true), bak_clean(true), unnamed(false),
          read_only(readonly_), filename(file), file_fully_loaded(false),
          inset(params), toc_backend(&parent), macro_lock(false),
-         embedded_files(&parent), timestamp_(0), checksum_(0), wa_(0), 
+         embedded_files(), timestamp_(0), checksum_(0), wa_(0), 
          undo_(parent)
 {
        temppath = createBufferTmpDir();
@@ -366,18 +366,24 @@ TocBackend & Buffer::tocBackend() const
 }
 
 
-EmbeddedFiles & Buffer::embeddedFiles()
+EmbeddedFileList & Buffer::embeddedFiles()
 {
        return d->embedded_files;
 }
 
 
-EmbeddedFiles const & Buffer::embeddedFiles() const
+EmbeddedFileList const & Buffer::embeddedFiles() const
 {
        return d->embedded_files;
 }
 
 
+bool Buffer::embedded() const
+{
+       return params().embedded;
+}
+
+
 Undo & Buffer::undo()
 {
        return d->undo_;
@@ -517,6 +523,8 @@ int Buffer::readHeader(Lexer & lex)
                errorList.push_back(ErrorItem(_("Document header error"),
                        s, -1, 0, 0));
        }
+       
+       params().makeTextClass();
 
        return unknown_tokens;
 }
@@ -542,14 +550,6 @@ bool Buffer::readDocument(Lexer & lex)
        BOOST_ASSERT(paragraphs().empty());
 
        readHeader(lex);
-       TextClass const & baseClass = textclasslist[params().getBaseClass()];
-       if (!baseClass.load(filePath())) {
-               string theclass = baseClass.name();
-               Alert::error(_("Can't load document class"), bformat(
-                       _("Using the default document class, because the "
-                                    "class %1$s could not be loaded."), from_utf8(theclass)));
-               params().setBaseClass(defaultTextclass());
-       }
 
        if (params().outputChanges) {
                bool dvipost    = LaTeXFeatures::isAvailable("dvipost");
@@ -678,6 +678,8 @@ bool Buffer::readFile(FileName const & filename)
                FileName lyxfile(addName(temppath(), "content.lyx"));
                // if both manifest.txt and file.lyx exist, this is am embedded file
                if (lyxfile.exists()) {
+                       // if in bundled format, save checksum of the compressed file, not content.lyx
+                       saveCheckSum(filename);
                        params().embedded = true;
                        fname = lyxfile;
                }
@@ -914,20 +916,19 @@ bool Buffer::writeFile(FileName const & fname) const
        }
 
        removeAutosaveFile(d->filename.absFilename());
+
+       if (params().embedded) {
+               message(str + _(" writing embedded files!."));
+               // if embedding is enabled, write file.lyx and all the embedded files
+               // to the zip file fname.
+               if (!d->embedded_files.writeFile(fname, *this)) {
+                       message(str + _(" could not write embedded files!."));
+                       return false;
+               }
+       }
        saveCheckSum(d->filename);
        message(str + _(" done."));
 
-       if (!params().embedded)
-               return true;
-
-       message(str + _(" writing embedded files!."));
-       // if embedding is enabled, write file.lyx and all the embedded files
-       // to the zip file fname.
-       if (!d->embedded_files.writeFile(fname)) {
-               message(str + _(" could not write embedded files!."));
-               return false;
-       }
-       message(str + _(" error while writing embedded files."));
        return true;
 }
 
@@ -1209,7 +1210,6 @@ void Buffer::makeDocBookFile(FileName const & fname,
 {
        LYXERR(Debug::LATEX, "makeDocBookFile...");
 
-       //ofstream ofs;
        odocfstream ofs;
        if (!openFileWrite(ofs, fname))
                return;
@@ -1390,7 +1390,7 @@ void Buffer::updateBibfilesCache() const
                if (it->lyxCode() == BIBTEX_CODE) {
                        InsetBibtex const & inset =
                                static_cast<InsetBibtex const &>(*it);
-                       FileNameList const bibfiles = inset.getFiles(*this);
+                       EmbeddedFileList const bibfiles = inset.getFiles(*this);
                        d->bibfilesCache_.insert(d->bibfilesCache_.end(),
                                bibfiles.begin(),
                                bibfiles.end());
@@ -1398,7 +1398,7 @@ void Buffer::updateBibfilesCache() const
                        InsetInclude & inset =
                                static_cast<InsetInclude &>(*it);
                        inset.updateBibfilesCache(*this);
-                       FileNameList const & bibfiles =
+                       EmbeddedFileList const & bibfiles =
                                        inset.getBibfilesCache(*this);
                        d->bibfilesCache_.insert(d->bibfilesCache_.end(),
                                bibfiles.begin(),
@@ -1408,7 +1408,7 @@ void Buffer::updateBibfilesCache() const
 }
 
 
-FileNameList const & Buffer::getBibfilesCache() const
+EmbeddedFileList const & Buffer::getBibfilesCache() const
 {
        // if this is a child document and the parent is already loaded
        // use the parent's cache instead