+
+QString GuiBibtex::browseBib(QString const & in_name) const
+{
+ QString const label1 = qt_("Documents|#o#O");
+ QString const dir1 = toqstr(lyxrc.document_path);
+ QStringList const filter(qt_("BibTeX Databases (*.bib)"));
+ return browseRelFile(in_name, bufferFilePath(),
+ qt_("Select a BibTeX database to add"), filter, false, label1, dir1);
+}
+
+
+QString GuiBibtex::browseBst(QString const & in_name) const
+{
+ QString const label1 = qt_("Documents|#o#O");
+ QString const dir1 = toqstr(lyxrc.document_path);
+ QStringList const filter(qt_("BibTeX Styles (*.bst)"));
+ return browseRelFile(in_name, bufferFilePath(),
+ qt_("Select a BibTeX style"), filter, false, label1, dir1);
+}
+
+
+QStringList GuiBibtex::bibStyles() const
+{
+ QStringList data = texFileList("bstFiles.lst");
+ // test whether we have a valid list, otherwise run rescan
+ if (data.isEmpty()) {
+ rescanBibStyles();
+ data = texFileList("bstFiles.lst");
+ }
+ for (int i = 0; i != data.size(); ++i)
+ data[i] = onlyFileName(data[i]);
+ // sort on filename only (no path)
+ data.sort();
+ return data;
+}
+
+
+QStringList GuiBibtex::bibFiles() const
+{
+ QStringList data = texFileList("bibFiles.lst");
+ // test whether we have a valid list, otherwise run rescan
+ if (data.isEmpty()) {
+ rescanBibStyles();
+ data = texFileList("bibFiles.lst");
+ }
+ for (int i = 0; i != data.size(); ++i)
+ data[i] = onlyFileName(data[i]);
+ // sort on filename only (no path)
+ data.sort();
+ return data;
+}
+
+
+void GuiBibtex::rescanBibStyles() const
+{
+ rescanTexStyles();
+}
+
+
+bool GuiBibtex::usingBibtopic() const
+{
+ return buffer().params().use_bibtopic;
+}
+
+
+bool GuiBibtex::bibtotoc() const
+{
+ return prefixIs(to_utf8(params_["options"]), "bibtotoc");
+}
+
+
+QString GuiBibtex::styleFile() const
+{
+ // the different bibtex packages have (and need) their
+ // own "plain" stylefiles
+ CiteEngine const engine = buffer().params().citeEngine();
+ QString defaultstyle;
+ switch (engine) {
+ case ENGINE_BASIC:
+ defaultstyle = "plain";