1 #ifndef Header_Bibtex_Dialog
2 #define Header_Bibtex_Dialog
3 
4 #include "mostQtHeaders.h"
5 
6 namespace Ui {
7 class BibTeXDialog;
8 }
9 
10 struct BibTeXType {
11 	QString name;
12 	QString description;
13 	QStringList mandatoryFields, optionalFields;
BibTeXTypeBibTeXType14 	BibTeXType (const BibTeXType &other):
15 		name(other.name), description(other.description),
16 		mandatoryFields(other.mandatoryFields), optionalFields(other.optionalFields) {}
BibTeXTypeBibTeXType17 	BibTeXType (const QString &d, const QString &n, const QStringList &mf, const QStringList &of):
18 		name(n), description(d), mandatoryFields(mf), optionalFields(of) {}
19 	BibTeXType & operator= (const BibTeXType &other) = default; // Silence -Wdeprecated-copy
20 };
21 
22 
23 class BibTeXDialog : public QDialog
24 {
25 	Q_OBJECT
26 	Q_DISABLE_COPY(BibTeXDialog)
27 
28 public:
29 	enum BibType {BIBTEX, BIBLATEX};
30 
31 	explicit BibTeXDialog(QWidget *parent = 0, const QStringList &fileList = QStringList(), int curFile = -1, const QString &defId = "");
32 	virtual ~BibTeXDialog();
33 
34 	QString resultString;
35 	int resultFileId; //-1 for new, 0..n for files from fileList, -2 for none
36 	static void setBibType(BibType type);
37 	static QString textToInsert(const BibTeXType &entry, bool keepOptionalFields, const QMap<QString, QString> &fields);
38 	static QString textToInsert(const QString &entryName);
39 	static QList<BibTeXType> getPossibleEntryTypes(BibType type);
40 protected:
41 	virtual void changeEvent(QEvent *e);
42 	virtual void accept();
43 private slots:
44 	void typeSelectionChanged();
45 private:
46 	Ui::BibTeXDialog *m_ui;
47 	static void needEntryTypes();
48 	static void generateBibtexEntryTypes(bool forceRecreate = false);
49 	static void generateBiblatexEntryTypes(bool forceRecreate = false);
50 	static QList<BibTeXType> *entryTypes;
51 	static QList<BibTeXType> bibtexEntryTypes;
52 	static QList<BibTeXType> biblatexEntryTypes;
53 	static BibType bibType;
54 };
55 
56 #endif // BIBTEXDIALOG_H
57