]> git.lyx.org Git - lyx.git/blob - src/frontends/qt2/QBibtex.C
build fixes, fixes to thesaurus and bibtex.
[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         bc().addReadOnly(dialog_->databasePB);
47         bc().addReadOnly(dialog_->deletePB); 
48 }
49
50
51 void QBibtex::update_contents()
52 {
53         dialog_->databaseLB->clear();
54
55         string bibs(controller().params().getContents());
56         string bib;
57
58         while (!bibs.empty()) {
59                 bibs = split(bibs, bib, ',');
60                 bib = frontStrip(strip(bib));
61                 if (!bib.empty())
62                         dialog_->databaseLB->inSort(bib.c_str());
63         }
64
65         string bibtotoc = "bibtotoc";
66         string bibstyle(controller().params().getOptions().c_str());
67
68         // bibtotoc exists?
69         if (prefixIs(bibstyle,bibtotoc)) {
70                 dialog_->bibtocCB->setChecked(true);
71
72                 // bibstyle exists?
73                 if (contains(bibstyle,','))
74                         bibstyle = split(bibstyle, bibtotoc, ',');
75                 else
76                         bibstyle = "";
77         } else
78                 dialog_->bibtocCB->setChecked(false);
79
80         dialog_->deletePB->setEnabled(false);
81         dialog_->styleED->setEnabled(false);
82         dialog_->stylePB->setEnabled(false);
83  
84         if (bibstyle == "plain" || bibstyle.empty())
85                 dialog_->styleCO->setCurrentItem(0);
86         else if (bibstyle == "unsrt")
87                 dialog_->styleCO->setCurrentItem(1);
88         else if (bibstyle == "alpha")
89                 dialog_->styleCO->setCurrentItem(2);
90         else if (bibstyle == "abbrv")
91                 dialog_->styleCO->setCurrentItem(3);
92         else {
93                 dialog_->styleED->setEnabled(true);
94                 dialog_->stylePB->setEnabled(true);
95                 dialog_->styleED->setText(bibstyle.c_str());
96                 dialog_->styleCO->setCurrentItem(4);
97         }
98
99 }
100
101
102 void QBibtex::apply()
103 {
104         string dbs;
105
106         for (unsigned int i = 0; i < dialog_->databaseLB->count(); ++i) {
107                 dbs += dialog_->databaseLB->text(i).latin1();
108                 if (i != dialog_->databaseLB->count())
109                         dbs += ",";
110         }
111         controller().params().setContents(dbs);
112
113         string bibstyle(dialog_->styleCO->currentText().latin1());
114         if (bibstyle == _("Other ..."))
115                 bibstyle = dialog_->styleED->text().latin1();
116
117         bool const bibtotoc(dialog_->bibtocCB->isChecked());
118         
119         if (bibtotoc && (!bibstyle.empty())) {
120                 // both bibtotoc and style
121                 controller().params().setOptions("bibtotoc," + bibstyle);
122         } else if (bibtotoc) {
123                 // bibtotoc and no style
124                 controller().params().setOptions("bibtotoc");
125         } else if (!bibstyle.empty()){
126                 // only style
127                 controller().params().setOptions(bibstyle);
128         }
129 }
130
131
132 bool QBibtex::isValid()
133 {
134         return dialog_->databaseLB->count() != 0 &&
135                 !(dialog_->styleCO->currentItem() == 4 && string(dialog_->styleED->text()).empty());
136 }