]> git.lyx.org Git - lyx.git/blob - src/frontends/qt2/QBibtexDialog.C
24ff2bba28eb1520c1af8b063c6c33833acc8f64
[lyx.git] / src / frontends / qt2 / QBibtexDialog.C
1 /**
2  * \file QBibtexDialog.C
3  * This file is part of LyX, the document processor.
4  * Licence details can be found in the file COPYING.
5  *
6  * \author John Levon
7  *
8  * Full author contact details are available in file CREDITS
9  */
10
11 #include <config.h>
12
13 #ifdef __GNUG__
14 #pragma implementation
15 #endif
16
17 #include "ControlBibtex.h"
18 #include "qt_helpers.h"
19 #include "debug.h"
20
21 #include "support/filetools.h"
22 #include "support/lyxalgo.h" // eliminate_duplicates
23
24 #include <qwidget.h>
25 #include <qpushbutton.h>
26 #include <qcombobox.h>
27 #include <qlineedit.h>
28 #include <qlistbox.h>
29 #include <qcheckbox.h>
30 #include <qfiledialog.h>
31
32 #include "QBibtexDialog.h"
33 #include "QBibtex.h"
34
35 #include <vector>
36
37
38 QBibtexDialog::QBibtexDialog(QBibtex * form)
39         : QBibtexDialogBase(0, 0, false, 0),
40         form_(form)
41 {
42         connect(okPB, SIGNAL(clicked()),
43                 form, SLOT(slotOK()));
44         connect(closePB, SIGNAL(clicked()),
45                 form, SLOT(slotClose()));
46 }
47
48
49 void QBibtexDialog::change_adaptor()
50 {
51         form_->changed();
52 }
53
54
55 void QBibtexDialog::browsePressed()
56 {
57         QString const file =
58                 QFileDialog::getOpenFileName(QString::null,
59                                              qt_("BibTeX style files (*.bst)"),
60                                              this,
61                                              0,
62                                              qt_("Select a BibTeX style"));
63         if (!file.isNull()) {
64                 string const filen = ChangeExtension(OnlyFilename(fromqstr(file)), "");
65                 styleCB->insertItem(toqstr(filen),0);
66                 form_->changed();
67         }
68 }
69
70 void QBibtexDialog::browseBibPressed()
71 {
72         QString const file = QFileDialog::getOpenFileName(QString::null,
73                 qt_("BibTeX database files (*.bib)"), this, 0, qt_("Select a BibTeX database to add"));
74
75         if (!file.isNull()) {
76                 string const f = ChangeExtension(fromqstr(file), "");
77                 bool present = false;
78
79                 for (unsigned int i = 0; i != databaseLB->count(); i++) {
80                         if (fromqstr(databaseLB->text(i)) == f)
81                                 present = true;
82                 }
83
84                 if (!present) {
85                         databaseLB->insertItem(toqstr(f));
86                         form_->changed();
87                 }
88         }
89 }
90
91 void QBibtexDialog::addPressed()
92 {
93         QString const file = addBibED->text();
94         if (!file.isNull()) {
95                 string const f = ChangeExtension(file.latin1(), "");
96                 bool present = false;
97                 for(unsigned int i = 0; i != databaseLB->count(); ++i) {
98                         if (databaseLB->text(i).latin1() == f)
99                                 present = true;
100
101                 }
102                 if (!present) {
103                         databaseLB->insertItem(f.c_str());
104                         form_->changed();
105                 }
106         }
107 }
108
109 void QBibtexDialog::deletePressed()
110 {
111         databaseLB->removeItem(databaseLB->currentItem());
112 }
113
114
115 void QBibtexDialog::styleChanged(QString const & sel)
116 {
117         styleCB->insertItem(sel,0);
118 }
119
120
121 void QBibtexDialog::databaseChanged()
122 {
123         deletePB->setEnabled(!form_->readOnly() && databaseLB->currentItem() != -1);
124 }
125
126
127 void QBibtexDialog::closeEvent(QCloseEvent *e)
128 {
129         form_->slotWMHide();
130         e->accept();
131 }