3 * This file is part of LyX, the document processor.
4 * Licence details can be found in the file COPYING.
8 * Full author contact details are available in file CREDITS
14 #pragma implementation
17 #include "support/lstrings.h"
19 #include "ControlBibtex.h"
22 #include "support/filetools.h" // ChangeExtension
23 #include "support/lstrings.h" // getVectorFromString
24 #include <qlineedit.h>
25 #include <qcombobox.h>
26 #include <qpushbutton.h>
28 #include <qcheckbox.h>
30 #include "QBibtexDialog.h"
36 typedef Qt2CB<ControlBibtex, Qt2DB<QBibtexDialog> > base_class;
39 : base_class(_("BibTeX"))
44 void QBibtex::build_dialog()
46 dialog_.reset(new QBibtexDialog(this));
48 bc().setOK(dialog_->okPB);
49 bc().setCancel(dialog_->closePB);
50 bc().addReadOnly(dialog_->databaseLB);
51 bc().addReadOnly(dialog_->databasePB);
52 bc().addReadOnly(dialog_->stylePB);
53 bc().addReadOnly(dialog_->styleCB);
54 bc().addReadOnly(dialog_->bibtocCB);
55 bc().addReadOnly(dialog_->databasePB);
56 bc().addReadOnly(dialog_->deletePB);
60 void QBibtex::update_contents()
62 dialog_->databaseLB->clear();
64 string bibs(controller().params().getContents());
67 while (!bibs.empty()) {
68 bibs = split(bibs, bib, ',');
71 dialog_->databaseLB->inSort(bib.c_str());
74 string bibtotoc = "bibtotoc";
75 string bibstyle(controller().params().getOptions().c_str());
78 if (prefixIs(bibstyle,bibtotoc)) {
79 dialog_->bibtocCB->setChecked(true);
82 if (contains(bibstyle,','))
83 bibstyle = split(bibstyle, bibtotoc, ',');
87 dialog_->bibtocCB->setChecked(false);
90 vector<string> const str = getVectorFromString(
91 controller().getBibStyles(),"\n");
92 for (vector<string>::const_iterator it = str.begin();
93 it != str.end(); ++it) {
94 dialog_->styleCB->insertItem(ChangeExtension(*it,"").c_str());
96 dialog_->styleCB->insertItem(bibstyle.c_str(),0);
100 void QBibtex::apply()
104 for (unsigned int i = 0; i < dialog_->databaseLB->count(); ++i) {
105 dbs += dialog_->databaseLB->text(i).latin1();
106 if (i != dialog_->databaseLB->count())
109 controller().params().setContents(dbs);
111 string bibstyle(dialog_->styleCB->text(0).latin1());
113 bool const bibtotoc(dialog_->bibtocCB->isChecked());
115 if (bibtotoc && (!bibstyle.empty())) {
116 // both bibtotoc and style
117 controller().params().setOptions("bibtotoc," + bibstyle);
118 } else if (bibtotoc) {
119 // bibtotoc and no style
120 controller().params().setOptions("bibtotoc");
121 } else if (!bibstyle.empty()){
123 controller().params().setOptions(bibstyle);
128 bool QBibtex::isValid()
130 return dialog_->databaseLB->count() != 0 &&
131 !string(dialog_->styleCB->text(0)).empty();