X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Ffrontends%2Fqt2%2FQCitationDialog.C;h=cad9ab0ce91692249732dd4d3ddf3087f3686035;hb=1e394731004491d04abe436112b5a89521bbd19a;hp=aeaaae23c4ec8685676896df8c98da9689750bc6;hpb=6dac02d3bbbb3327ea2f92c37cd6ce8fd91f3462;p=lyx.git diff --git a/src/frontends/qt2/QCitationDialog.C b/src/frontends/qt2/QCitationDialog.C index aeaaae23c4..cad9ab0ce9 100644 --- a/src/frontends/qt2/QCitationDialog.C +++ b/src/frontends/qt2/QCitationDialog.C @@ -7,18 +7,20 @@ */ #include - + +#include "gettext.h" + #include "QCitationDialog.h" #include "Dialogs.h" -#include "QCitation.h" #include "controllers/ControlCitation.h" #include +#include #include #include #include #include - + #include "QtLyXView.h" #include @@ -28,29 +30,46 @@ using std::vector; using std::find; using std::max; -QCitationDialog::QCitationDialog(QCitation * form, QWidget * parent, const char * name, bool modal, WFlags fl) - : QCitationDialogBase(parent, name, modal, fl), +QCitationDialog::QCitationDialog(QCitation * form) + : QCitationDialogBase(0, 0, false, 0), form_(form) { - connect(okPB, SIGNAL(clicked()), - form, SLOT(slotOK())); - connect(cancelPB, SIGNAL(clicked()), - form, SLOT(slotCancel())); connect(restorePB, SIGNAL(clicked()), form, SLOT(slotRestore())); + connect(okPB, SIGNAL(clicked()), + form, SLOT(slotOK())); connect(applyPB, SIGNAL(clicked()), form, SLOT(slotApply())); + connect(closePB, SIGNAL(clicked()), + form, SLOT(slotClose())); connect(searchED, SIGNAL(returnPressed()), - form, SLOT(slotNextClicked())); + this, SLOT(slotNextClicked())); + + textBeforeED->setText(_("Not yet supported")); + textBeforeED->setReadOnly(true); + textBeforeED->setFocusPolicy(QWidget::NoFocus); + citationStyleCO->setEnabled(false); + citationStyleCO->setFocusPolicy(QWidget::NoFocus); } - + QCitationDialog::~QCitationDialog() { } -void QCitationDialog::slotBibSelected( int sel ) +void QCitationDialog::slotBibSelected(int sel) +{ + slotBibHighlighted(sel); + + if (form_->readOnly()) + return; + + slotAddClicked(); +} + + +void QCitationDialog::slotBibHighlighted(int sel) { biblio::InfoMap const & theMap = form_->controller().bibkeysInfo(); @@ -79,7 +98,7 @@ void QCitationDialog::slotBibSelected( 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); @@ -91,7 +110,7 @@ void QCitationDialog::slotBibSelected( int sel ) } -void QCitationDialog::slotCiteSelected(int sel) +void QCitationDialog::slotCiteHighlighted(int sel) { biblio::InfoMap const & theMap = form_->controller().bibkeysInfo(); @@ -100,14 +119,14 @@ void QCitationDialog::slotCiteSelected(int sel) return; } - if (!form_->controller().isReadonly()) { + if (!form_->readOnly()) { form_->setBibButtons(QCitation::OFF); form_->setCiteButtons(QCitation::ON); } // Highlight the selected browser_cite key in browser_bib vector::const_iterator cit = - std::find(form_->bibkeys.begin(), + std::find(form_->bibkeys.begin(), form_->bibkeys.end(), form_->citekeys[sel]); if (cit != form_->bibkeys.end()) { @@ -149,7 +168,7 @@ void QCitationDialog::slotDelClicked() { int const sel = citeLB->currentItem(); - // FIXME: why ? + // FIXME: why ? if (sel < 0 || sel >= (int)form_->citekeys.size()) { return; } @@ -192,7 +211,7 @@ void QCitationDialog::slotDownClicked() { int const sel = citeLB->currentItem(); - // FIXME: ? + // FIXME: ? if (sel < 0 || sel >= (int)form_->citekeys.size() - 1) { return; } @@ -224,7 +243,7 @@ void QCitationDialog::slotNextClicked() } -void QCitationDialog::doFind(biblio::Direction const dir) +void QCitationDialog::doFind(biblio::Direction dir) { biblio::InfoMap const & theMap = form_->controller().bibkeysInfo(); string const str = searchED->text().latin1(); @@ -245,13 +264,24 @@ 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); + // FIXME: should work ... if (cit == form_->bibkeys.end()) { - return; + // not found. let's loop round + if (dir == biblio::FORWARD) + start = form_->bibkeys.begin(); + else + start = form_->bibkeys.end(); + + 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()); @@ -263,23 +293,5 @@ void QCitationDialog::doFind(biblio::Direction const dir) int const top = max(found - 5, 1); bibLB->setTopItem(top); bibLB->setSelected(found, true); - slotBibSelected(0); -} - - -void QCitationDialog::slotCitationStyleSelected( int ) -{ - form_->changed(); -} - - -void QCitationDialog::slotTextBeforeReturn() -{ - form_->changed(); -} - - -void QCitationDialog::slotTextAfterReturn() -{ - form_->changed(); + slotBibHighlighted(0); }