3 * Copyright 2001 the LyX Team
4 * Read the file COPYING
6 * \author Angus Leeming <a.leeming@ic.ac.uk>
7 * \author Kalle Dalheimer <kalle@klaralvdalens-datakonsult.se>
13 #pragma implementation
16 #include "QCitationDialog.h"
17 #include "QCitation.h"
19 #include <qcheckbox.h>
20 #include <qcombobox.h>
21 #include <qlineedit.h>
23 #include <qmultilineedit.h>
24 #include <qpushbutton.h>
26 #include "QtLyXView.h"
28 #include "ControlCitation.h"
30 #include "support/lstrings.h"
31 #include "helper_funcs.h"
41 typedef Qt2CB<ControlCitation, Qt2DB<QCitationDialog> > base_class;
43 QCitation::QCitation(ControlCitation & c)
44 : base_class(c, _("Citation"))
48 void QCitation::apply()
50 controller().params().setCmdName("cite");
51 controller().params().setContents(getStringFromVector(citekeys));
53 string const after = dialog_->textAfterED->text().latin1();
54 controller().params().setOptions(after);
58 void QCitation::hide()
67 void QCitation::build()
69 dialog_.reset(new QCitationDialog(this));
71 dialog_->searchTypeCB->setChecked(false);
72 dialog_->searchCaseCB->setChecked(false);
74 // Manage the ok, apply, restore and cancel/close buttons
75 bc().setOK(dialog_->okPB);
76 bc().setApply(dialog_->applyPB);
77 bc().setCancel(dialog_->cancelPB);
78 bc().setRestore(dialog_->restorePB);
80 bc().addReadOnly(dialog_->addPB);
81 bc().addReadOnly(dialog_->delPB);
82 bc().addReadOnly(dialog_->upPB);
83 bc().addReadOnly(dialog_->downPB);
84 bc().addReadOnly(dialog_->citationStyleCO);
85 bc().addReadOnly(dialog_->textBeforeED);
86 bc().addReadOnly(dialog_->textAfterED);
90 void QCitation::update()
92 // Make the list of all available bibliography keys
93 bibkeys = biblio::getKeys(controller().bibkeysInfo());
94 updateBrowser(dialog_->bibLB, bibkeys);
96 // Ditto for the keys cited in this inset
97 citekeys = getVectorFromString(controller().params().getContents());
98 updateBrowser(dialog_->citeLB, citekeys);
100 // No keys have been selected yet, so...
101 dialog_->infoML->clear();
105 dialog_->textAfterED->setText( controller().params().getOptions().c_str());
109 void QCitation::updateBrowser(QListBox* browser,
110 vector<string> const & keys) const
114 for (vector<string>::const_iterator it = keys.begin();
115 it < keys.end(); ++it) {
116 string const key = frontStrip(strip(*it));
117 // FIXME: why the .empty() test ?
119 browser->insertItem(key.c_str());
124 void QCitation::setBibButtons(State status) const
126 dialog_->addPB->setEnabled((status == ON));
130 void QCitation::setCiteButtons(State status) const
132 int const sel = dialog_->citeLB->currentItem();
133 int const maxline = dialog_->citeLB->count() - 1;
134 bool const activate = (status == ON);
135 bool const activate_up = (activate && sel != 0);
136 bool const activate_down = (activate && sel != maxline);
138 dialog_->delPB->setEnabled(activate);
139 dialog_->upPB->setEnabled(activate_up);
140 dialog_->downPB->setEnabled(activate_down);