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