- string const key = inset.getContents();
- string const opt = inset.getOptions();
- string const ref; // = pit->asString(this, false);
- string const info = opt + "TheBibliographyRef" + ref;
- keys.push_back(pair<string, string>(key, info));
+ // FIXME UNICODE
+ string const key = to_utf8(inset.getParam("key"));
+ docstring const label = inset.getParam("label");
+ docstring const ref; // = pit->asString(this, false);
+ docstring const info = label + "TheBibliographyRef" + ref;
+ keys.push_back(pair<string, docstring>(key, info));
+ }
+ }
+}
+
+
+void Buffer::updateBibfilesCache()
+{
+ // if this is a child document and the parent is already loaded
+ // update the parent's cache instead
+ Buffer * tmp = getMasterBuffer();
+ BOOST_ASSERT(tmp);
+ if (tmp != this) {
+ tmp->updateBibfilesCache();
+ return;
+ }
+
+ bibfilesCache_.clear();
+ for (InsetIterator it = inset_iterator_begin(inset()); it; ++it) {
+ if (it->lyxCode() == InsetBase::BIBTEX_CODE) {
+ InsetBibtex const & inset =
+ dynamic_cast<InsetBibtex const &>(*it);
+ vector<FileName> const bibfiles = inset.getFiles(*this);
+ bibfilesCache_.insert(bibfilesCache_.end(),
+ bibfiles.begin(),
+ bibfiles.end());
+ } else if (it->lyxCode() == InsetBase::INCLUDE_CODE) {
+ InsetInclude & inset =
+ dynamic_cast<InsetInclude &>(*it);
+ inset.updateBibfilesCache(*this);
+ vector<FileName> const & bibfiles =
+ inset.getBibfilesCache(*this);
+ bibfilesCache_.insert(bibfilesCache_.end(),
+ bibfiles.begin(),
+ bibfiles.end());