connect(browseBibPB, SIGNAL(clicked()),
this, SLOT(browseBibPressed()));
+ selected_model_.insertColumns(0, 1);
selectionManager = new GuiSelectionManager(this, availableLV, selectedLV,
addBibPB, deletePB, upPB, downPB, &available_model_, &selected_model_);
connect(selectionManager, SIGNAL(selectionChanged()),
bc().addReadOnly(bibtocCB);
bc().addReadOnly(bibEncodingCO);
+#if (QT_VERSION < 0x050000)
+ selectedLV->horizontalHeader()->setResizeMode(QHeaderView::Stretch);
+#else
+ selectedLV->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
+#endif
+
// Always put the default encoding in the first position.
bibEncodingCO->addItem(qt_("Document Encoding"), "default");
- QMap<QString, QString> encodinglist;
for (auto const & encvar : encodings) {
if (!encvar.unsafe() && !encvar.guiName().empty())
- encodinglist.insert(qt_(encvar.guiName()), toqstr(encvar.name()));
+ encodings_.insert(qt_(encvar.guiName()), toqstr(encvar.name()));
}
- QMap<QString, QString>::const_iterator it = encodinglist.constBegin();
- while (it != encodinglist.constEnd()) {
+ QMap<QString, QString>::const_iterator it = encodings_.constBegin();
+ while (it != encodings_.constEnd()) {
bibEncodingCO->addItem(it.key(), it.value());
++it;
}
void GuiBibtex::selUpdated()
{
selectionManager->update();
+ editPB->setEnabled(deletePB->isEnabled());
changed();
}
QString const filen = changeExtension(file, "");
bool present = false;
- unsigned int pres = 0;
+ int pres = 0;
for (int i = 0; i != styleCB->count(); ++i) {
if (styleCB->itemText(i) == filen) {
}
+void GuiBibtex::on_editPB_clicked()
+{
+ QModelIndexList selIdx =
+ selectedLV->selectionModel()->selectedIndexes();
+ if (selIdx.isEmpty())
+ return;
+ QModelIndex idx = selIdx.first();
+ QString sel = idx.data().toString();
+ FuncRequest fr(LFUN_INSET_EDIT, fromqstr(sel));
+ dispatch(fr);
+}
+
+
void GuiBibtex::rescanClicked()
{
rescanBibStyles();
void GuiBibtex::setSelectedBibs(QStringList const sl)
{
selected_model_.clear();
+ QStringList headers;
+ headers << qt_("Database")
+ << qt_("File Encoding");
+ selected_model_.setHorizontalHeaderLabels(headers);
+ bool const moreencs = usingBiblatex() && sl.count() > 1;
+ selectedLV->setColumnHidden(1, !moreencs);
+ selectedLV->verticalHeader()->setVisible(false);
+ selectedLV->horizontalHeader()->setVisible(moreencs);
+ if (moreencs) {
+ bibEncodingLA->setText(qt_("General E&ncoding:"));
+ bibEncodingCO->setToolTip(qt_("If your bibliography databases use a different "
+ "encoding than the LyX document, specify it here. "
+ "If indivivual databases have different encodings, "
+ "you can set it in the list above."));
+ } else {
+ bibEncodingLA->setText(qt_("E&ncoding:"));
+ bibEncodingCO->setToolTip(qt_("If your bibliography databases use a different "
+ "encoding than the LyX document, specify it here"));
+ }
QStringList::const_iterator it = sl.begin();
QStringList::const_iterator end = sl.end();
for (int i = 0; it != end; ++it, ++i) {
si->setToolTip(*it);
si->setEditable(false);
selected_model_.insertRow(i, si);
+ QComboBox * cb = new QComboBox;
+ cb->addItem(qt_("General Encoding"), "general");
+ cb->addItem(qt_("Document Encoding"), "auto");
+ QMap<QString, QString>::const_iterator it = encodings_.constBegin();
+ while (it != encodings_.constEnd()) {
+ cb->addItem(it.key(), it.value());
+ ++it;
+ }
+ cb->setToolTip(qt_("If this bibliography database uses a different "
+ "encoding than specified below, set it here"));
+ selectedLV->setIndexWidget(selected_model_.index(i, 1), cb);
}
+ editPB->setEnabled(deletePB->isEnabled());
}
void GuiBibtex::databaseChanged()
{
- QString const item = selectionManager->getSelectedIndex().data().toString();
- if (!selected_bibs_.contains(item)) {
- selected_bibs_.append(item);
- } else
- selected_bibs_ = selectedBibs();
+ selected_bibs_ = selectedBibs();
setSelectedBibs(selected_bibs_);
}
styleCB->clearEditText();
} else
biblatexOptsLE->setText(toqstr(params_["biblatexopts"]));
+
+ setFileEncodings(getVectorFromString(params_["file_encodings"], from_ascii("\t")));
+ editPB->setEnabled(deletePB->isEnabled());
}
{
docstring dbs;
- unsigned int maxCount = selected_bibs_.count();
- for (unsigned int i = 0; i < maxCount; i++) {
+ int maxCount = selected_bibs_.count();
+ for (int i = 0; i < maxCount; i++) {
if (i != 0)
dbs += ',';
QString item = selected_bibs_.at(i);
params_["btprint"] = qstring_to_ucs4(btPrintCO->itemData(btPrintCO->currentIndex()).toString());
params_["encoding"] = qstring_to_ucs4(bibEncodingCO->itemData(bibEncodingCO->currentIndex()).toString());
+
+ if (usingBiblatex())
+ params_["file_encodings"] = getStringFromVector(getFileEncodings(), from_ascii("\t"));
}
}
+vector<docstring> GuiBibtex::getFileEncodings()
+{
+ vector<docstring> res;
+ for (int i = 0; i != selected_model_.rowCount(); ++i) {
+ QStandardItem const * key = selected_model_.item(i, 0);
+ QComboBox * cb = qobject_cast<QComboBox*>(selectedLV->indexWidget(selected_model_.index(i, 1)));
+ QString fenc = cb ? cb->itemData(cb->currentIndex()).toString() : QString();
+ if (key && !key->text().isEmpty() && !fenc.isEmpty() && fenc != "general")
+ res.push_back(qstring_to_ucs4(key->text()) + " " + qstring_to_ucs4(fenc));
+ }
+ return res;
+}
+
+
+void GuiBibtex::setFileEncodings(vector<docstring> const m)
+{
+ for (docstring const & s: m) {
+ docstring key;
+ QString enc = toqstr(split(s, key, ' '));
+ QModelIndexList qmil =
+ selected_model_.match(selected_model_.index(0, 0),
+ Qt::DisplayRole, toqstr(key), 1,
+ Qt::MatchFlags(Qt::MatchExactly | Qt::MatchWrap));
+ if (!qmil.empty()) {
+ QComboBox * cb = qobject_cast<QComboBox*>(selectedLV->indexWidget(selected_model_.index(qmil.front().row(), 1)));
+ cb->setCurrentIndex(cb->findData(enc));
+ }
+ }
+}
+
+
void GuiBibtex::rescanBibStyles() const
{
if (usingBiblatex())