X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffrontends%2Fqt2%2FQCitationDialog.C;h=8b6588309de6c3fecce57faa879b7a9d2dcda181;hb=1fcedd4b635807e7046342f324d054c04c37f054;hp=3977b247c8d7b80160e7a7e1ec41770c04277cca;hpb=a63c7ca2079b3296d94aaff80d207b59cc958e41;p=lyx.git diff --git a/src/frontends/qt2/QCitationDialog.C b/src/frontends/qt2/QCitationDialog.C index 3977b247c8..8b6588309d 100644 --- a/src/frontends/qt2/QCitationDialog.C +++ b/src/frontends/qt2/QCitationDialog.C @@ -1,18 +1,22 @@ /** * \file QCitationDialog.C - * Copyright 2001 the LyX Team - * Read the file COPYING + * This file is part of LyX, the document processor. + * Licence details can be found in the file COPYING. * - * \author Kalle Dalheimer + * \author Kalle Dalheimer + * + * Full author contact details are available in file CREDITS */ #include -#include "gettext.h" -#include "QCitationDialog.h" -#include "Dialogs.h" +#include + +#include "qt_helpers.h" #include "controllers/ControlCitation.h" +#include "LyXView.h" +#include "buffer.h" #include #include @@ -21,15 +25,15 @@ #include #include -#include "QtLyXView.h" - -#include -#include "buffer.h" +#include "QCitationDialog.h" +#include "QCitation.h" +#include "support/lstrings.h" using std::vector; using std::find; using std::max; + QCitationDialog::QCitationDialog(QCitation * form) : QCitationDialogBase(0, 0, false, 0), form_(form) @@ -45,7 +49,7 @@ QCitationDialog::QCitationDialog(QCitation * form) connect(searchED, SIGNAL(returnPressed()), this, SLOT(slotNextClicked())); - textBeforeED->setText(_("Not yet supported")); + textBeforeED->setText(qt_("Not yet supported")); textBeforeED->setReadOnly(true); textBeforeED->setFocusPolicy(QWidget::NoFocus); citationStyleCO->setEnabled(false); @@ -61,14 +65,14 @@ QCitationDialog::~QCitationDialog() void QCitationDialog::slotBibSelected(int sel) { slotBibHighlighted(sel); - - if (form_->controller().isReadonly()) + + if (form_->readOnly()) return; - + slotAddClicked(); } - + void QCitationDialog::slotBibHighlighted(int sel) { biblio::InfoMap const & theMap = form_->controller().bibkeysInfo(); @@ -84,7 +88,7 @@ void QCitationDialog::slotBibHighlighted(int sel) // the selected browser_bib key infoML->clear(); - infoML->setText(biblio::getInfo(theMap, form_->bibkeys[sel]).c_str()); + infoML->setText(toqstr(biblio::getInfo(theMap, form_->bibkeys[sel]))); // Highlight the selected browser_bib key in browser_cite if // present @@ -98,7 +102,7 @@ void QCitationDialog::slotBibHighlighted(int sel) citeLB->setTopItem(n); } - if (!form_->controller().isReadonly()) { + if (!form_->readOnly()) { if (cit != form_->citekeys.end()) { form_->setBibButtons(QCitation::OFF); form_->setCiteButtons(QCitation::ON); @@ -119,7 +123,7 @@ void QCitationDialog::slotCiteHighlighted(int sel) return; } - if (!form_->controller().isReadonly()) { + if (!form_->readOnly()) { form_->setBibButtons(QCitation::OFF); form_->setCiteButtons(QCitation::ON); } @@ -137,7 +141,7 @@ void QCitationDialog::slotCiteHighlighted(int sel) // Put into browser_info the additional info associated // with the selected browser_cite key infoML->clear(); - infoML->setText(biblio::getInfo(theMap, form_->bibkeys[sel]).c_str()); + infoML->setText(toqstr(biblio::getInfo(theMap, form_->citekeys[sel]))); } } @@ -152,15 +156,17 @@ void QCitationDialog::slotAddClicked() } // Add the selected browser_bib key to browser_cite - citeLB->insertItem(form_->bibkeys[sel].c_str()); + citeLB->insertItem(toqstr(form_->bibkeys[sel])); form_->citekeys.push_back(form_->bibkeys[sel]); int const n = int(form_->citekeys.size()); citeLB->setSelected(n - 1, true); + slotBibHighlighted(sel); form_->setBibButtons(QCitation::OFF); form_->setCiteButtons(QCitation::ON); form_->changed(); + form_->fillStyles(); } @@ -180,6 +186,8 @@ void QCitationDialog::slotDelClicked() form_->setBibButtons(QCitation::ON); form_->setCiteButtons(QCitation::OFF); form_->changed(); + form_->fillStyles(); + form_->updateStyle(); } @@ -199,11 +207,12 @@ void QCitationDialog::slotUpClicked() citeLB->removeItem(sel); form_->citekeys.erase(it); - citeLB->insertItem(tmp.c_str(), sel - 1); + citeLB->insertItem(toqstr(tmp), sel - 1); citeLB->setSelected(sel - 1, true); form_->citekeys.insert(it - 1, tmp); form_->setCiteButtons(QCitation::ON); form_->changed(); + form_->fillStyles(); } @@ -223,11 +232,12 @@ void QCitationDialog::slotDownClicked() citeLB->removeItem(sel); form_->citekeys.erase(it); - citeLB->insertItem(tmp.c_str(), sel + 1); + citeLB->insertItem(toqstr(tmp), sel + 1); citeLB->setSelected(sel + 1, true); form_->citekeys.insert(it + 1, tmp); form_->setCiteButtons(QCitation::ON); form_->changed(); + form_->fillStyles(); } @@ -243,10 +253,16 @@ void QCitationDialog::slotNextClicked() } -void QCitationDialog::doFind(biblio::Direction const dir) +void QCitationDialog::changed_adaptor() +{ + form_->changed(); +} + + +void QCitationDialog::doFind(biblio::Direction dir) { biblio::InfoMap const & theMap = form_->controller().bibkeysInfo(); - string const str = searchED->text().latin1(); + string const str = fromqstr(searchED->text()); biblio::Search const type = searchTypeCB->isChecked() ? @@ -264,13 +280,23 @@ void QCitationDialog::doFind(biblio::Direction const dir) start -= 1; bool const caseSensitive = searchCaseCB->isChecked(); - - vector::const_iterator const cit = + + vector::const_iterator cit = biblio::searchKeys(theMap, form_->bibkeys, str, - start, type, dir, caseSensitive); + start, type, dir, caseSensitive); + // not found. let's loop round if (cit == form_->bibkeys.end()) { - return; + if (dir == biblio::FORWARD) { + start = form_->bibkeys.begin(); + } + else start = form_->bibkeys.end() - 1; + + cit = biblio::searchKeys(theMap, form_->bibkeys, str, + start, type, dir, caseSensitive); + + if (cit == form_->bibkeys.end()) + return; } int const found = int(cit - form_->bibkeys.begin()); @@ -282,5 +308,5 @@ void QCitationDialog::doFind(biblio::Direction const dir) int const top = max(found - 5, 1); bibLB->setTopItem(top); bibLB->setSelected(found, true); - slotBibHighlighted(0); + slotBibHighlighted(found); }