X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffrontends%2Fqt4%2FGuiCitation.cpp;h=5e35afca793dd75001c4aaa08f5f10c476b18493;hb=f973855bdea94f0c6edf8eace7548a440f005902;hp=44e887e40907c785eeea8459c44d63200d17f793;hpb=5685080356bebfb5d38b8597cf41f960d82e7a8e;p=lyx.git diff --git a/src/frontends/qt4/GuiCitation.cpp b/src/frontends/qt4/GuiCitation.cpp index 44e887e409..5e35afca79 100644 --- a/src/frontends/qt4/GuiCitation.cpp +++ b/src/frontends/qt4/GuiCitation.cpp @@ -27,6 +27,7 @@ #include "TextClass.h" #include "FuncRequest.h" +#include "insets/InsetCitation.h" #include "insets/InsetCommand.h" #include "support/debug.h" @@ -135,9 +136,9 @@ GuiCitation::GuiCitation(GuiView & lv) connect(textAfterED, SIGNAL(textChanged(QString)), this, SLOT(updateStyles())); connect(textBeforeED, SIGNAL(returnPressed()), - this, SLOT(on_okPB_clicked())); + this, SLOT(on_buttonBox_accepted())); connect(textAfterED, SIGNAL(returnPressed()), - this, SLOT(on_okPB_clicked())); + this, SLOT(on_buttonBox_accepted())); selectionManager = new GuiSelectionManager(this, availableLV, selectedLV, addPB, deletePB, upPB, downPB, &available_model_, &selected_model_, 1); @@ -146,7 +147,7 @@ GuiCitation::GuiCitation(GuiView & lv) connect(selectionManager, SIGNAL(updateHook()), this, SLOT(updateControls())); connect(selectionManager, SIGNAL(okHook()), - this, SLOT(on_okPB_clicked())); + this, SLOT(on_buttonBox_accepted())); connect(filter_, SIGNAL(rightButtonClicked()), this, SLOT(resetFilter())); @@ -174,6 +175,8 @@ GuiCitation::GuiCitation(GuiView & lv) selectedLV->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch); #endif + selectedLV->setToolTip(qt_("Ordered list of all cited references.\n" + "You can reorder, add and remove references with the buttons on the left.")); setFocusProxy(filter_); } @@ -188,7 +191,7 @@ void GuiCitation::closeEvent(QCloseEvent * e) void GuiCitation::applyView() { int const choice = max(0, citationStyleCO->currentIndex()); - style_ = citationStyleCO->currentData().toString(); + style_ = citationStyleCO->itemData(citationStyleCO->currentIndex()).toString(); bool const full = starredCB->isChecked(); bool const force = forceuppercaseCB->isChecked(); @@ -201,13 +204,14 @@ void GuiCitation::applyView() void GuiCitation::showEvent(QShowEvent * e) { - filter_->clear(); + if (!filter_->text().isEmpty()) + filterPressed(); availableLV->setFocus(); DialogView::showEvent(e); } -void GuiCitation::on_okPB_clicked() +void GuiCitation::on_buttonBox_accepted() { applyView(); clearSelection(); @@ -215,29 +219,33 @@ void GuiCitation::on_okPB_clicked() } -void GuiCitation::on_cancelPB_clicked() +void GuiCitation::on_buttonBox_rejected() { clearSelection(); hide(); } -void GuiCitation::on_applyPB_clicked() +void GuiCitation::on_buttonBox_clicked(QAbstractButton * button) { - applyView(); -} - - -void GuiCitation::on_restorePB_clicked() -{ - init(); - updateFilterHint(); + switch (buttonBox->standardButton(button)) { + case QDialogButtonBox::Apply: + applyView(); + break; + case QDialogButtonBox::Reset: + init(); + updateFilterHint(); + filterPressed(); + break; + default: + break; + } } void GuiCitation::on_literalCB_clicked() { - literal_ = literalCB->isChecked(); + InsetCitation::last_literal = literalCB->isChecked(); changed(); } @@ -311,10 +319,10 @@ void GuiCitation::updateFormatting(CitationStyle const & currentStyle) forceuppercaseCB->setEnabled(force && haveSelection); if (force && haveSelection) - forceuppercaseCB->setToolTip("Force upper case in names (\"Del Piero\", not \"del Piero\")."); + forceuppercaseCB->setToolTip(qt_("Force upper case in names (\"Del Piero\", not \"del Piero\").")); else - forceuppercaseCB->setToolTip("Force upper case in names (\"Del Piero\", not \"del Piero\"), " - "if the current citation style supports this."); + forceuppercaseCB->setToolTip(qt_("Force upper case in names (\"Del Piero\", not \"del Piero\"), " + "if the current citation style supports this.")); starredCB->setEnabled(full && haveSelection); textBeforeED->setEnabled(textbefore && haveSelection); textBeforeLA->setEnabled(textbefore && haveSelection); @@ -351,6 +359,12 @@ void GuiCitation::updateFormatting(CitationStyle const & currentStyle) starredCB->setToolTip(qt_("Always list all authors (rather than using \"et al.\"), " "if the current citation style supports this.")); } + if (availableLV->selectionModel()->selectedIndexes().isEmpty()) + availableLV->setToolTip(qt_("All references available for citing.")); + else + availableLV->setToolTip(qt_("All references available for citing.\n" + "To add the selected one, hit Add, press Enter or double-click.\n" + "Hit Ctrl-Enter to add and close the dialog.")); } @@ -392,7 +406,8 @@ void GuiCitation::updateStyles(BiblioInfo const & bi) citationStyleCO->blockSignals(true); // save old style selection - QString const curdata = citationStyleCO->currentData().toString(); + QString const curdata = + citationStyleCO->itemData(citationStyleCO->currentIndex()).toString(); QString const olddata = (curdata.isEmpty()) ? style_ : curdata; citationStyleCO->clear(); BiblioInfo::CiteStringMap::const_iterator cit = sty.begin(); @@ -449,8 +464,8 @@ bool GuiCitation::isSelected(QModelIndex const & idx) void GuiCitation::setButtons() { int const srows = selectedLV->model()->rowCount(); - applyPB->setEnabled(srows > 0); - okPB->setEnabled(srows > 0); + buttonBox->button(QDialogButtonBox::Apply)->setEnabled(srows > 0); + buttonBox->button(QDialogButtonBox::Ok)->setEnabled(srows > 0); } @@ -572,9 +587,10 @@ void GuiCitation::regexChanged() void GuiCitation::updateFilterHint() { - QString const hint = instant_->isChecked() ? + QString hint = instant_->isChecked() ? qt_("Enter string to filter the list of available citations") : qt_("Enter string to filter the list of available citations and press "); + hint += qt_("\nThe down arrow key will get you into the list of filtered citations."); filter_->setToolTip(hint); } @@ -726,7 +742,7 @@ vector GuiCitation::getPostTexts() for (int i = 0; i != selected_model_.rowCount(); ++i) { QStandardItem const * key = selected_model_.item(i, 1); QStandardItem const * post = selected_model_.item(i, 2); - if (key && post) + if (key && post && !key->text().isEmpty() && !post->text().isEmpty()) res.push_back(qstring_to_ucs4(key->text()) + " " + qstring_to_ucs4(post->text())); } return res; @@ -767,7 +783,7 @@ void GuiCitation::init() // if this is a new citation, we set the literal checkbox // to its last set value. if (cited_keys_.isEmpty()) - literalCB->setChecked(literal_); + literalCB->setChecked(InsetCitation::last_literal); else literalCB->setChecked(params_["literal"] == "true"); @@ -799,8 +815,8 @@ void GuiCitation::init() } else availableLV->setFocus(); - applyPB->setEnabled(false); - okPB->setEnabled(false); + buttonBox->button(QDialogButtonBox::Apply)->setEnabled(false); + buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false); } @@ -907,9 +923,9 @@ void GuiCitation::setCitedKeys() } -bool GuiCitation::initialiseParams(string const & data) +bool GuiCitation::initialiseParams(string const & sdata) { - InsetCommand::string2params(data, params_); + InsetCommand::string2params(sdata, params_); citeCmds_ = documentBuffer().params().citeCommands(); citeStyles_ = documentBuffer().params().citeStyles(); init(); @@ -1009,19 +1025,19 @@ vector GuiCitation::searchKeys(BiblioInfo const & bi, continue; BibTeXInfo const & kvm = info->second; - string data; + string sdata; if (only_keys) - data = to_utf8(*it); + sdata = to_utf8(*it); else if (field.empty()) - data = to_utf8(*it) + ' ' + to_utf8(kvm.allData()); + sdata = to_utf8(*it) + ' ' + to_utf8(kvm.allData()); else - data = to_utf8(kvm[field]); + sdata = to_utf8(kvm[field]); - if (data.empty()) + if (sdata.empty()) continue; try { - if (lyx::regex_search(data, reg_exp)) + if (lyx::regex_search(sdata, reg_exp)) foundKeys.push_back(*it); } catch (lyx::regex_error const & e) { @@ -1048,10 +1064,9 @@ BiblioInfo const & GuiCitation::bibInfo() const } -void GuiCitation::saveSession() const +void GuiCitation::saveSession(QSettings & settings) const { - Dialog::saveSession(); - QSettings settings; + Dialog::saveSession(settings); settings.setValue( sessionKey() + "/regex", regexp_->isChecked()); settings.setValue( @@ -1061,7 +1076,7 @@ void GuiCitation::saveSession() const settings.setValue( sessionKey() + "/citestyle", style_); settings.setValue( - sessionKey() + "/literal", literal_); + sessionKey() + "/literal", InsetCitation::last_literal); } @@ -1073,7 +1088,8 @@ void GuiCitation::restoreSession() casesense_->setChecked(settings.value(sessionKey() + "/casesensitive").toBool()); instant_->setChecked(settings.value(sessionKey() + "/autofind", true).toBool()); style_ = settings.value(sessionKey() + "/citestyle").toString(); - literal_ = settings.value(sessionKey() + "/literal", false).toBool(); + InsetCitation::last_literal = + settings.value(sessionKey() + "/literal", false).toBool(); updateFilterHint(); }