X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Ffrontends%2Fqt2%2FQBibtexDialog.C;h=38f5938b0995867f677ac17fae545166baa6a6cf;hb=8c93f63b48a1b15d4f3e163b7305213f2f73879e;hp=e4505fe4f567317b07c69af7057c1e22aec41025;hpb=ce044d86c4e9363d6c20f98327ce13a90b13d7d7;p=lyx.git diff --git a/src/frontends/qt2/QBibtexDialog.C b/src/frontends/qt2/QBibtexDialog.C index e4505fe4f5..38f5938b09 100644 --- a/src/frontends/qt2/QBibtexDialog.C +++ b/src/frontends/qt2/QBibtexDialog.C @@ -5,34 +5,38 @@ * * \author John Levon * - * Full author contact details are available in file CREDITS + * Full author contact details are available in file CREDITS. */ #include +#include "QBibtexDialog.h" +#include "ui/QBibtexAddDialogBase.h" +#include "QBibtex.h" -#include "ControlBibtex.h" +#include "checkedwidgets.h" +#include "Qt2BC.h" #include "qt_helpers.h" -#include "debug.h" +#include "validators.h" + +#include "controllers/ControlBibtex.h" +#include "controllers/ButtonPolicies.h" #include "support/filetools.h" -#include "support/lyxalgo.h" // eliminate_duplicates +#include "support/lstrings.h" -#include #include #include #include #include -#include -#include -#include "ui/QBibtexAddDialogBase.h" -#include "QBibtexDialog.h" -#include "QBibtex.h" +using lyx::support::changeExtension; +using lyx::support::trim; -#include +using std::string; -using namespace lyx::support; +namespace lyx { +namespace frontend { QBibtexDialog::QBibtexDialog(QBibtex * form) : QBibtexDialogBase(0, 0, false, 0), @@ -44,12 +48,41 @@ QBibtexDialog::QBibtexDialog(QBibtex * form) form, SLOT(slotClose())); add_ = new QBibtexAddDialogBase(this, "", true); - connect(add_->addPB, SIGNAL(clicked()), this, SLOT(addDatabase())); - connect(add_->addPB, SIGNAL(clicked()), this, SLOT(addDatabase())); - connect(add_->bibLB, SIGNAL(selected(QListBoxItem *)), this, SLOT(addDatabase())); - connect(add_->bibLB, SIGNAL(selected(QListBoxItem *)), add_, SLOT(accept())); - connect(add_->bibLB, SIGNAL(currentChanged(QListBoxItem *)), this, SLOT(availableChanged())); - connect(add_->browsePB, SIGNAL(clicked()), this, SLOT(browseBibPressed())); + Qt2BC * bcview = new Qt2BC(add_bc_); + add_bc_.view(bcview); + add_bc_.bp(new OkCancelPolicy); + + bcview->setOK(add_->addPB); + bcview->setCancel(add_->closePB); + + add_->bibED->setValidator(new PathValidator(false, add_->bibED)); + addCheckedLineEdit(add_bc_.view(), add_->bibED, 0); + + connect(add_->bibED, SIGNAL(textChanged(const QString&)), + this, SLOT(bibEDChanged())); + connect(add_->addPB, SIGNAL(clicked()), + this, SLOT(addDatabase())); + connect(add_->bibLB, SIGNAL(selected(QListBoxItem *)), + this, SLOT(addDatabase())); + connect(add_->bibLB, SIGNAL(selected(QListBoxItem *)), + add_, SLOT(accept())); + connect(add_->bibLB, SIGNAL(currentChanged(QListBoxItem *)), + this, SLOT(availableChanged())); + connect(add_->browsePB, SIGNAL(clicked()), + this, SLOT(browseBibPressed())); +} + + +QBibtexDialog::~QBibtexDialog() +{} + + +void QBibtexDialog::bibEDChanged() +{ + // Indicate to the button controller that the contents have + // changed. The actual test of validity is carried out by + // the checkedLineEdit. + add_bc_.valid(true); } @@ -61,14 +94,10 @@ void QBibtexDialog::change_adaptor() void QBibtexDialog::browsePressed() { - QString const file = - QFileDialog::getOpenFileName(QString::null, - qt_("BibTeX style files (*.bst)"), - this, - 0, - qt_("Select a BibTeX style")); - if (!file.isNull()) { - string const filen = ChangeExtension(fromqstr(file), ""); + string const file = form_->controller().browseBst(""); + + if (!file.empty()) { + string const filen = changeExtension(file, ""); bool present = false; unsigned int pres = 0; @@ -90,11 +119,10 @@ void QBibtexDialog::browsePressed() void QBibtexDialog::browseBibPressed() { - QString const file = QFileDialog::getOpenFileName(QString::null, - qt_("BibTeX database files (*.bib)"), add_, 0, qt_("Select a BibTeX database to add")); + string const file = trim(form_->controller().browseBib("")); - if (!file.isNull()) { - string const f = ChangeExtension(fromqstr(file), ""); + if (!file.empty()) { + string const f = changeExtension(file, ""); bool present = false; for (unsigned int i = 0; i != add_->bibLB->count(); i++) { @@ -111,18 +139,20 @@ void QBibtexDialog::browseBibPressed() } } + void QBibtexDialog::addPressed() { add_->exec(); + add_bc_.valid(false); } void QBibtexDialog::addDatabase() { int const sel = add_->bibLB->currentItem(); - QString const file = add_->bibED->text(); + string const file = trim(fromqstr(add_->bibED->text())); - if (sel < 0 && file.isNull()) + if (sel < 0 && file.empty()) return; // Add the selected browser_bib keys to browser_database @@ -135,8 +165,8 @@ void QBibtexDialog::addDatabase() } } - if (!file.isEmpty()) { - QString const f = toqstr(ChangeExtension(fromqstr(file), "")); + if (!file.empty()) { + QString const f = toqstr(changeExtension(file, "")); if ((databaseLB->findItem(f)) == 0) databaseLB->insertItem(f); } @@ -169,3 +199,6 @@ void QBibtexDialog::closeEvent(QCloseEvent *e) form_->slotWMHide(); e->accept(); } + +} // namespace frontend +} // namespace lyx