X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffrontends%2Fqt2%2FQCitationDialog.C;h=cad9ab0ce91692249732dd4d3ddf3087f3686035;hb=1e394731004491d04abe436112b5a89521bbd19a;hp=bb0e07c516ec8f14f6275d22725b4fbec20f9899;hpb=03add3957a3807cdd9f7608aa9277c0177988a9e;p=lyx.git diff --git a/src/frontends/qt2/QCitationDialog.C b/src/frontends/qt2/QCitationDialog.C index bb0e07c516..cad9ab0ce9 100644 --- a/src/frontends/qt2/QCitationDialog.C +++ b/src/frontends/qt2/QCitationDialog.C @@ -7,19 +7,20 @@ */ #include - + +#include "gettext.h" + #include "QCitationDialog.h" #include "Dialogs.h" -#include "QCitation.h" -#include "qt2BC.h" #include "controllers/ControlCitation.h" #include +#include #include #include #include #include - + #include "QtLyXView.h" #include @@ -29,27 +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()), + 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(); @@ -78,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); @@ -90,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(); @@ -99,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()) { @@ -140,6 +160,7 @@ void QCitationDialog::slotAddClicked() form_->setBibButtons(QCitation::OFF); form_->setCiteButtons(QCitation::ON); + form_->changed(); } @@ -147,7 +168,7 @@ void QCitationDialog::slotDelClicked() { int const sel = citeLB->currentItem(); - // FIXME: why ? + // FIXME: why ? if (sel < 0 || sel >= (int)form_->citekeys.size()) { return; } @@ -158,6 +179,7 @@ void QCitationDialog::slotDelClicked() form_->setBibButtons(QCitation::ON); form_->setCiteButtons(QCitation::OFF); + form_->changed(); } @@ -181,6 +203,7 @@ void QCitationDialog::slotUpClicked() citeLB->setSelected(sel - 1, true); form_->citekeys.insert(it - 1, tmp); form_->setCiteButtons(QCitation::ON); + form_->changed(); } @@ -188,7 +211,7 @@ void QCitationDialog::slotDownClicked() { int const sel = citeLB->currentItem(); - // FIXME: ? + // FIXME: ? if (sel < 0 || sel >= (int)form_->citekeys.size() - 1) { return; } @@ -204,6 +227,7 @@ void QCitationDialog::slotDownClicked() citeLB->setSelected(sel + 1, true); form_->citekeys.insert(it + 1, tmp); form_->setCiteButtons(QCitation::ON); + form_->changed(); } @@ -219,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(); @@ -240,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()); @@ -258,20 +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 ) -{ -} - - -void QCitationDialog::slotTextBeforeReturn() -{ -} - - -void QCitationDialog::slotTextAfterReturn() -{ + slotBibHighlighted(0); }