]> git.lyx.org Git - lyx.git/blob - src/frontends/qt2/QBibtex.C
qt2 ert dialog
[lyx.git] / src / frontends / qt2 / QBibtex.C
1 /**
2  * \file QBibtex.C
3  * Copyright 2001 the LyX Team
4  * Read the file COPYING
5  *
6  * \author John Levon <moz@compsoc.man.ac.uk>
7  */
8
9 #include <config.h>
10
11 #include "support/lstrings.h"
12
13 #include "QBibtexDialog.h"
14 #include "ControlBibtex.h"
15 #include "QBibtex.h"
16 #include "Qt2BC.h"
17 #include "gettext.h"
18 #include "debug.h" 
19
20 #include <qlineedit.h>
21 #include <qcombobox.h>
22 #include <qpushbutton.h>
23 #include <qlistbox.h>
24 #include <qcheckbox.h>
25
26 typedef Qt2CB<ControlBibtex, Qt2DB<QBibtexDialog> > base_class;
27
28 QBibtex::QBibtex(ControlBibtex & c)
29         : base_class(c, _("BibTeX"))
30 {
31 }
32
33
34 void QBibtex::build_dialog()
35 {
36         dialog_.reset(new QBibtexDialog(this));
37
38         bc().setOK(dialog_->okPB);
39         bc().setCancel(dialog_->closePB);
40         bc().addReadOnly(dialog_->databaseLB);
41         bc().addReadOnly(dialog_->databasePB);
42         bc().addReadOnly(dialog_->styleCO);
43         bc().addReadOnly(dialog_->styleED);
44         bc().addReadOnly(dialog_->stylePB);
45         bc().addReadOnly(dialog_->bibtocCB);
46 }
47
48
49 void QBibtex::update_contents()
50 {
51         dialog_->databaseLB->clear();
52
53         string bibs(controller().params().getContents());
54         string bib;
55
56         while (!bibs.empty()) {
57                 bibs = split(bibs, bib, ',');
58                 dialog_->databaseLB->inSort(frontStrip(strip(bib)).c_str());
59         }
60
61         string bibtotoc = "bibtotoc";
62         string bibstyle(controller().params().getOptions().c_str());
63
64         // bibtotoc exists?
65         if (prefixIs(bibstyle,bibtotoc)) {
66                 dialog_->bibtocCB->setChecked(true);
67
68                 // bibstyle exists?
69                 if (contains(bibstyle,','))
70                         bibstyle = split(bibstyle, bibtotoc, ',');
71                 else
72                         bibstyle = "";
73         } else
74                 dialog_->bibtocCB->setChecked(false);
75
76         dialog_->styleED->setEnabled(false);
77         dialog_->stylePB->setEnabled(false);
78  
79         if (bibstyle == "plain") 
80                 dialog_->styleCO->setCurrentItem(0);
81         else if (bibstyle == "unsrt")
82                 dialog_->styleCO->setCurrentItem(1);
83         else if (bibstyle == "alpha")
84                 dialog_->styleCO->setCurrentItem(2);
85         else if (bibstyle == "abbrv")
86                 dialog_->styleCO->setCurrentItem(3);
87         else {
88                 dialog_->styleED->setEnabled(true);
89                 dialog_->stylePB->setEnabled(true);
90                 dialog_->styleED->setText(bibstyle.c_str());
91                 if (bibstyle.empty())
92                         dialog_->styleCO->setCurrentItem(0);
93                 else
94                         dialog_->styleCO->setCurrentItem(4);
95         }
96 }
97
98
99 void QBibtex::apply()
100 {
101         string dbs;
102
103         for (unsigned int i = 0; i < dialog_->databaseLB->count(); ++i) {
104                 dbs += dialog_->databaseLB->text(i).latin1();
105                 if (i != dialog_->databaseLB->count())
106                         dbs += ", ";
107         }
108         controller().params().setContents(dbs);
109
110         string bibstyle(dialog_->styleCO->currentText().latin1());
111         if (bibstyle == _("Other ..."))
112                 bibstyle = dialog_->styleED->text().latin1();
113
114         bool const bibtotoc(dialog_->bibtocCB->isChecked());
115         
116         if (bibtotoc && (!bibstyle.empty())) {
117                 // both bibtotoc and style
118                 controller().params().setOptions("bibtotoc," + bibstyle);
119         } else if (bibtotoc) {
120                 // bibtotoc and no style
121                 controller().params().setOptions("bibtotoc");
122         } else if (!bibstyle.empty()){
123                 // only style
124                 controller().params().setOptions(bibstyle);
125         }
126 }
127
128
129 bool QBibtex::isValid()
130 {
131         return dialog_->databaseLB->count() != 0;
132 }