-void InsetBibtex::updateBibFiles() const
-{
- // need to do this to keep old info while also not
- // copying over any files that have been deleted.
- EmbeddedFileList oldlist = bibfiles_;
- bibfiles_.clear();
-
- docstring bibfile;
- docstring embfile;
-
- docstring bibfiles = getParam("bibfiles");
- docstring embfiles = getParam("embed");
-
- bibfiles = split(bibfiles, bibfile, ',');
- embfiles = split(embfiles, embfile, ',');
-
- while (!bibfile.empty()) {
- FileName bib = getBibTeXPath(bibfile, buffer());
- EmbeddedFileList::iterator efp = oldlist.findFile(bib.absFilename());
- if (efp != oldlist.end()) {
- // already have this one, but embedding status may have been changed
- bool old_status = efp->embedded();
- bool new_status = !embfile.empty();
- efp->setEmbed(new_status);
- try {
- // copy file if embedding status changed.
- efp->enable(buffer().embedded(), buffer(), old_status != new_status);
- } catch (ExceptionMessage const & message) {
- Alert::error(message.title_, message.details_);
- // failed to change embeddeing status
- efp->setEmbed(old_status);
- }
- bibfiles_.push_back(*efp);
- } else {
- EmbeddedFile file(bib.absFilename(), buffer().filePath());
- file.setEmbed(!embfile.empty());
- try {
- file.enable(buffer().embedded(), buffer(), true);
- } catch (ExceptionMessage const & message) {
- Alert::error(message.title_, message.details_);
- // failed to embed
- file.setEmbed(false);
- }
- bibfiles_.push_back(file);
- }
- // Get next file name
- bibfiles = split(bibfiles, bibfile, ',');
- embfiles = split(embfiles, embfile, ',');
- }
-}
-
-
-void InsetBibtex::updateParam()
-{
- docstring bibfiles;
- docstring embed;
-
- bool first = true;
-
- EmbeddedFileList::iterator it = bibfiles_.begin();
- EmbeddedFileList::iterator en = bibfiles_.end();
- for (; it != en; ++it) {
- if (!first) {
- bibfiles += ',';
- embed += ',';
- } else
- first = false;
- bibfiles += from_utf8(it->outputFilename(buffer().filePath()));
- if (it->embedded())
- embed += from_utf8(it->inzipName());
- }
- setParam("bibfiles", bibfiles);
-}
-
-
-void InsetBibtex::registerEmbeddedFiles(EmbeddedFileList & files) const
-{
- if (bibfiles_.empty())
- updateBibFiles();
-
- EmbeddedFileList::const_iterator it = bibfiles_.begin();
- EmbeddedFileList::const_iterator en = bibfiles_.end();
- for (; it != en; ++it)
- files.registerFile(*it, this, buffer());
-}
-
-
-void InsetBibtex::updateEmbeddedFile(EmbeddedFile const & file)
-{
- // look for the item and update status
- string const filename = file.absFilename();
- EmbeddedFileList::iterator it = bibfiles_.findFile(filename);
- if (it == bibfiles_.end())
- return;
- *it = file;
- updateParam();
-}
-
-