]> git.lyx.org Git - lyx.git/blob - src/frontends/qt2/QBibtexDialog.C
qtabular skeleton
[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 "gettext.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 <qlistbox.h>
28 #include <qcheckbox.h>
29 #include <qfiledialog.h>
30
31 #include "QBibtexDialog.h"
32 #include "QBibtex.h"
33
34 #include <vector>
35
36
37 QBibtexDialog::QBibtexDialog(QBibtex * form)
38         : QBibtexDialogBase(0, 0, false, 0),
39         form_(form)
40 {
41         connect(okPB, SIGNAL(clicked()),
42                 form, SLOT(slotOK()));
43         connect(closePB, SIGNAL(clicked()),
44                 form, SLOT(slotClose()));
45 }
46
47
48 void QBibtexDialog::change_adaptor()
49 {
50         form_->changed();
51 }
52
53
54 void QBibtexDialog::browsePressed()
55 {
56         QString file =
57                 QFileDialog::getOpenFileName(QString::null,
58                                              _("BibTeX style files (*.bst)"),
59                                              this,
60                                              0,
61                                              _("Select a BibTeX style"));
62         if (!file.isNull()) {
63                 string const filen = ChangeExtension(OnlyFilename(file.latin1()), "");
64                 styleCB->insertItem(filen.c_str(),0);
65                 form_->changed();
66         }
67 }
68
69 void QBibtexDialog::addPressed()
70 {
71         QString file = QFileDialog::getOpenFileName(QString::null,
72                 _("BibTeX database files (*.bib)"), this, 0, _("Select a BibTeX database to add"));
73         if (!file.isNull()) {
74                 string const f = ChangeExtension(file.latin1(), "");
75                 bool present = false;
76                 for(unsigned int i = 0; i!=databaseLB->count(); i++) {
77                         if (databaseLB->text(i).latin1()==f)
78                                 present = true;
79
80                 }
81                 if (!present) {
82                         databaseLB->insertItem(f.c_str());
83                         form_->changed();
84                 }
85         }
86 }
87
88
89 void QBibtexDialog::deletePressed()
90 {
91         databaseLB->removeItem(databaseLB->currentItem());
92 }
93
94
95 void QBibtexDialog::styleChanged(QString const & sel)
96 {
97         styleCB->insertItem(sel,0);
98 }
99
100
101 void QBibtexDialog::databaseChanged()
102 {
103         deletePB->setEnabled(!form_->readOnly() && databaseLB->currentItem() != -1);
104 }
105
106
107 void QBibtexDialog::closeEvent(QCloseEvent *e)
108 {
109         form_->slotWMHide();
110         e->accept();
111 }