[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [kbibtex] src: Descendants of QObject take 'QObject *parent' as constructor argument
From:       Thomas Fischer <null () kde ! org>
Date:       2017-03-31 21:56:22
Message-ID: E1cu4Ws-0004Se-5A () code ! kde ! org
[Download RAW message or body]

Git commit 02081394d7f03c7da6473ef516dddea8753d5bab by Thomas Fischer.
Committed on 31/03/2017 at 19:29.
Pushed by thomasfischer into branch 'master'.

Descendants of QObject take 'QObject *parent' as constructor argument

Classes that inherit from QObject, in this commit just FileImporter and
FileExporter and all of their descendants, now take a QObject* argument
in their constructor as their 'parent' that will then passed down as
argument to QObject's constructor.
This will allow for a cleaner relationship between QObject-derived
classes and, at least in some situations, proper memory management.

M  +23   -11   src/gui/element/elementwidgets.cpp
M  +2    -1    src/gui/element/elementwidgets.h
M  +3    -3    src/gui/field/fieldlineedit.cpp
M  +1    -1    src/gui/field/fieldlistedit.cpp
M  +2    -2    src/gui/file/clipboard.cpp
M  +1    -1    src/gui/preferences/settingsidsuggestionswidget.cpp
M  +3    -2    src/io/fileexporter.cpp
M  +1    -1    src/io/fileexporter.h
M  +3    -3    src/io/fileexporterbibtex.cpp
M  +1    -1    src/io/fileexporterbibtex.h
M  +9    -11   src/io/fileexporterbibtex2html.cpp
M  +1    -1    src/io/fileexporterbibtex2html.h
M  +9    -11   src/io/fileexporterbibtexoutput.cpp
M  +1    -1    src/io/fileexporterbibtexoutput.h
M  +13   -8    src/io/fileexporterbibutils.cpp
M  +1    -1    src/io/fileexporterbibutils.h
M  +18   -13   src/io/fileexporterpdf.cpp
M  +2    -1    src/io/fileexporterpdf.h
M  +8    -10   src/io/fileexporterps.cpp
M  +1    -1    src/io/fileexporterps.h
M  +3    -3    src/io/fileexporterris.cpp
M  +1    -1    src/io/fileexporterris.h
M  +9    -11   src/io/fileexporterrtf.cpp
M  +1    -1    src/io/fileexporterrtf.h
M  +2    -2    src/io/fileexportertoolchain.cpp
M  +1    -1    src/io/fileexportertoolchain.h
M  +2    -2    src/io/fileexporterxml.cpp
M  +1    -1    src/io/fileexporterxml.h
M  +17   -12   src/io/fileexporterxslt.cpp
M  +11   -2    src/io/fileexporterxslt.h
M  +2    -2    src/io/fileimporter.cpp
M  +1    -1    src/io/fileimporter.h
M  +7    -3    src/io/fileimporterbibtex.cpp
M  +6    -9    src/io/fileimporterbibtex.h
M  +10   -6    src/io/fileimporterbibutils.cpp
M  +1    -1    src/io/fileimporterbibutils.h
M  +4    -4    src/io/fileimporterpdf.cpp
M  +1    -1    src/io/fileimporterpdf.h
M  +2    -2    src/io/fileimporterris.cpp
M  +1    -1    src/io/fileimporterris.h
M  +1    -1    src/networking/onlinesearch/onlinesearchacmportal.cpp
M  +1    -1    src/networking/onlinesearch/onlinesearcharxiv.cpp
M  +1    -1    src/networking/onlinesearch/onlinesearchbibsonomy.cpp
M  +1    -1    src/networking/onlinesearch/onlinesearchbiorxiv.cpp
M  +1    -1    src/networking/onlinesearch/onlinesearchdoi.cpp
M  +8    -3    src/networking/onlinesearch/onlinesearchgooglescholar.cpp
M  +1    -1    src/networking/onlinesearch/onlinesearchideasrepec.cpp
M  +1    -1    src/networking/onlinesearch/onlinesearchieeexplore.cpp
M  +1    -1    src/networking/onlinesearch/onlinesearchingentaconnect.cpp
M  +1    -1    src/networking/onlinesearch/onlinesearchisbndb.cpp
M  +1    -1    src/networking/onlinesearch/onlinesearchjstor.cpp
M  +1    -1    src/networking/onlinesearch/onlinesearchmathscinet.cpp
M  +1    -1    src/networking/onlinesearch/onlinesearchmrlookup.cpp
M  +1    -1    src/networking/onlinesearch/onlinesearchpubmed.cpp
M  +1    -1    src/networking/onlinesearch/onlinesearchsciencedirect.cpp
M  +1    -1    src/networking/onlinesearch/onlinesearchsimplebibtexdownload.cpp
M  +1    -1    src/networking/onlinesearch/onlinesearchspringerlink.cpp
M  +1    -1    src/networking/zotero/items.cpp
M  +18   -16   src/parts/part.cpp
M  +1    -1    src/processing/checkbibtex.cpp
M  +5    -7    src/program/docklets/referencepreview.cpp
M  +4    -3    src/test/kbibtexfilestest.cpp

https://commits.kde.org/kbibtex/02081394d7f03c7da6473ef516dddea8753d5bab

diff --git a/src/gui/element/elementwidgets.cpp b/src/gui/element/elementwidgets.cpp
index d12a6ed1..a27676f9 100644
--- a/src/gui/element/elementwidgets.cpp
+++ b/src/gui/element/elementwidgets.cpp
@@ -1096,8 +1096,8 @@ public:
 
 protected:
     void dropEvent(QDropEvent *event) override {
-        FileImporterBibTeX importer;
-        FileExporterBibTeX exporter;
+        FileImporterBibTeX importer(this);
+        FileExporterBibTeX exporter(this);
         const File *file = importer.fromString(event->mimeData()->text());
         if (file != nullptr && file->count() == 1)
             document()->setPlainText(exporter.toString(file->first(), file));
@@ -1106,8 +1106,20 @@ protected:
     }
 };
 
+class SourceWidget::Private
+{
+public:
+    QPushButton *buttonRestore;
+    FileImporterBibTeX *importerBibTeX;
+
+    Private(SourceWidget *parent)
+            : buttonRestore(nullptr), importerBibTeX(new FileImporterBibTeX(parent)) \
{ +        /// nothing
+    }
+};
+
 SourceWidget::SourceWidget(QWidget *parent)
-        : ElementWidget(parent)
+        : ElementWidget(parent), d(new SourceWidget::Private(this))
 {
     createGUI();
 }
@@ -1115,6 +1127,7 @@ SourceWidget::SourceWidget(QWidget *parent)
 SourceWidget::~SourceWidget()
 {
     delete sourceEdit;
+    delete d;
 }
 
 bool SourceWidget::apply(QSharedPointer<Element> element) const
@@ -1122,8 +1135,7 @@ bool SourceWidget::apply(QSharedPointer<Element> element) const
     if (isReadOnly) return false; ///< never save data if in read-only mode
 
     const QString text = sourceEdit->document()->toPlainText();
-    FileImporterBibTeX importer;
-    File *file = importer.fromString(text);
+    File *file = d->importerBibTeX->fromString(text);
     if (file == nullptr) return false;
 
     bool result = false;
@@ -1161,7 +1173,7 @@ bool SourceWidget::reset(QSharedPointer<const Element> element)
     /// resetting the widget's value
     disconnect(sourceEdit, &SourceWidget::SourceWidgetTextEdit::textChanged, this, \
&SourceWidget::gotModified);  
-    FileExporterBibTeX exporter;
+    FileExporterBibTeX exporter(this);
     exporter.setEncoding(QStringLiteral("utf-8"));
     const QString exportedText = exporter.toString(element, m_file);
     if (!exportedText.isEmpty()) {
@@ -1178,7 +1190,7 @@ void SourceWidget::setReadOnly(bool isReadOnly)
 {
     ElementWidget::setReadOnly(isReadOnly);
 
-    m_buttonRestore->setEnabled(!isReadOnly);
+    d->buttonRestore->setEnabled(!isReadOnly);
     sourceEdit->setReadOnly(isReadOnly);
 }
 
@@ -1211,10 +1223,10 @@ void SourceWidget::createGUI()
     sourceEdit->document()->setDefaultFont(QFontDatabase::systemFont(QFontDatabase::FixedFont));
                
     sourceEdit->setTabStopWidth(QFontMetrics(sourceEdit->font()).averageCharWidth() \
* 4);  
-    m_buttonRestore = new QPushButton(QIcon::fromTheme(QStringLiteral("edit-undo")), \
                i18n("Restore"), this);
-    layout->addWidget(m_buttonRestore, 1, 1, 1, 1);
-    // FIXME connect(m_buttonRestore, &QPushButton::clicked, this, \
                &SourceWidget::reset);
-    connect(m_buttonRestore, SIGNAL(clicked(bool)), this, SLOT(reset()));
+    d->buttonRestore = new \
QPushButton(QIcon::fromTheme(QStringLiteral("edit-undo")), i18n("Restore"), this); +  \
layout->addWidget(d->buttonRestore, 1, 1, 1, 1); +    // FIXME \
connect(d->buttonRestore, &QPushButton::clicked, this, &SourceWidget::reset); +    \
connect(d->buttonRestore, SIGNAL(clicked(bool)), this, SLOT(reset()));  
     connect(sourceEdit, &SourceWidget::SourceWidgetTextEdit::textChanged, this, \
&SourceWidget::gotModified);  }
diff --git a/src/gui/element/elementwidgets.h b/src/gui/element/elementwidgets.h
index 41a669b6..83b9c8ab 100644
--- a/src/gui/element/elementwidgets.h
+++ b/src/gui/element/elementwidgets.h
@@ -303,7 +303,8 @@ private slots:
     void reset();
 
 private:
-    QPushButton *m_buttonRestore;
+    class Private;
+    Private *const d;
 };
 
 #endif // KBIBTEX_GUI_ELEMENTWIDGETS_H
diff --git a/src/gui/field/fieldlineedit.cpp b/src/gui/field/fieldlineedit.cpp
index f3c7f40a..6d10149f 100644
--- a/src/gui/field/fieldlineedit.cpp
+++ b/src/gui/field/fieldlineedit.cpp
@@ -109,7 +109,7 @@ public:
         if (!value.isEmpty()) {
             if (typeFlag == KBibTeX::tfSource) {
                 /// simple case: field's value is to be shown as BibTeX code, \
                including surrounding curly braces
-                FileExporterBibTeX exporter;
+                FileExporterBibTeX exporter(parent);
                 text = exporter.valueToBibTeX(value);
                 result = true;
             } else {
@@ -185,7 +185,7 @@ public:
             return true;
         } else if (typeFlag == KBibTeX::tfSource) {
             QString key = typeFlags.testFlag(KBibTeX::tfPerson) ? \
                QStringLiteral("author") : QStringLiteral("title");
-            FileImporterBibTeX importer;
+            FileImporterBibTeX importer(parent);
             QString fakeBibTeXFile = QString(QStringLiteral("@article{dummy, \
%1=%2}")).arg(key, encodedText);  
             File *file = importer.fromString(fakeBibTeXFile);
@@ -486,7 +486,7 @@ void FieldLineEdit::dropEvent(QDropEvent *event)
 
     const File *file = nullptr;
     if (!d->fieldKey.isEmpty() && clipboardText.startsWith(QStringLiteral("@"))) {
-        FileImporterBibTeX importer;
+        FileImporterBibTeX importer(this);
         file = importer.fromString(clipboardText);
         const QSharedPointer<Entry> entry = (file != nullptr && file->count() == 1) \
? file->first().dynamicCast<Entry>() : QSharedPointer<Entry>();  if (!entry.isNull() \
                && d->fieldKey == Entry::ftCrossRef) {
diff --git a/src/gui/field/fieldlistedit.cpp b/src/gui/field/fieldlistedit.cpp
index 5c159781..2b7b90c9 100644
--- a/src/gui/field/fieldlistedit.cpp
+++ b/src/gui/field/fieldlistedit.cpp
@@ -326,7 +326,7 @@ void FieldListEdit::dropEvent(QDropEvent *event)
 
     const File *file = nullptr;
     if (!d->fieldKey.isEmpty() && clipboardText.startsWith(QStringLiteral("@"))) {
-        FileImporterBibTeX importer;
+        FileImporterBibTeX importer(this);
         file = importer.fromString(clipboardText);
         const QSharedPointer<Entry> entry = (file != nullptr && file->count() == 1) \
? file->first().dynamicCast<Entry>() : QSharedPointer<Entry>();  
diff --git a/src/gui/file/clipboard.cpp b/src/gui/file/clipboard.cpp
index 9057eabf..9177b288 100644
--- a/src/gui/file/clipboard.cpp
+++ b/src/gui/file/clipboard.cpp
@@ -60,7 +60,7 @@ public:
         for (const QModelIndex &index : mil)
             file->append(fileView->fileModel()->element(fileView->sortFilterProxyModel()->mapToSource(index).row()));
  
-        FileExporterBibTeX exporter;
+        FileExporterBibTeX exporter(fileView);
         exporter.setEncoding(QStringLiteral("latex"));
         QBuffer buffer(fileView);
         buffer.open(QBuffer::WriteOnly);
@@ -116,7 +116,7 @@ public:
 
         /// Assumption: user dropped a piece of BibTeX code,
         /// use BibTeX importer to generate representation from plain text
-        FileImporterBibTeX importer;
+        FileImporterBibTeX importer(fileView);
         File *file = importer.fromString(text);
         if (file != nullptr) {
             if (!file->isEmpty()) {
diff --git a/src/gui/preferences/settingsidsuggestionswidget.cpp \
b/src/gui/preferences/settingsidsuggestionswidget.cpp index f7eadc90..18a9893c 100644
--- a/src/gui/preferences/settingsidsuggestionswidget.cpp
+++ b/src/gui/preferences/settingsidsuggestionswidget.cpp
@@ -52,7 +52,7 @@ public:
         m_defaultFormatStringRow = -1;
 
         if (exampleBibTeXEntry.isNull()) {
-            static FileImporterBibTeX fileImporterBibTeX;
+            static FileImporterBibTeX fileImporterBibTeX(this);
             File *file = fileImporterBibTeX.fromString(exampleBibTeXEntryString);
             if (file != nullptr) {
                 if (!file->isEmpty())
diff --git a/src/io/fileexporter.cpp b/src/io/fileexporter.cpp
index 82539804..8846f016 100644
--- a/src/io/fileexporter.cpp
+++ b/src/io/fileexporter.cpp
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2004-2014 by Thomas Fischer <fischer@unix-ag.uni-kl.de> *
+ *   Copyright (C) 2004-2017 by Thomas Fischer <fischer@unix-ag.uni-kl.de> *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
  *   it under the terms of the GNU General Public License as published by  *
@@ -24,7 +24,8 @@ const QString FileExporter::defaultPaperSize = \
QStringLiteral("a4");  const QString FileExporter::keyFont = QStringLiteral("Font");
 const QString FileExporter::defaultFont = QStringLiteral("");
 
-FileExporter::FileExporter() : QObject()
+FileExporter::FileExporter(QObject *parent)
+        : QObject(parent)
 {
     // nothing
 }
diff --git a/src/io/fileexporter.h b/src/io/fileexporter.h
index 674260f2..65ad8b66 100644
--- a/src/io/fileexporter.h
+++ b/src/io/fileexporter.h
@@ -42,7 +42,7 @@ public:
     static const QString keyFont;
     static const QString defaultFont;
 
-    FileExporter();
+    FileExporter(QObject *parent);
     ~FileExporter() override;
 
     QString toString(const QSharedPointer<const Element> element, const File \
                *bibtexfile, QStringList *errorLog = nullptr);
diff --git a/src/io/fileexporterbibtex.cpp b/src/io/fileexporterbibtex.cpp
index 6275d246..617cbe51 100644
--- a/src/io/fileexporterbibtex.cpp
+++ b/src/io/fileexporterbibtex.cpp
@@ -340,8 +340,8 @@ public:
 };
 
 
-FileExporterBibTeX::FileExporterBibTeX()
-        : FileExporter(), d(new FileExporterBibTeXPrivate(this))
+FileExporterBibTeX::FileExporterBibTeX(QObject *parent)
+        : FileExporter(parent), d(new FileExporterBibTeXPrivate(this))
 {
     // nothing
 }
@@ -498,7 +498,7 @@ void FileExporterBibTeX::cancel()
 QString FileExporterBibTeX::valueToBibTeX(const Value &value, const QString &key, \
UseLaTeXEncoding useLaTeXEncoding)  {
     if (staticFileExporterBibTeX == nullptr) {
-        staticFileExporterBibTeX = new FileExporterBibTeX();
+        staticFileExporterBibTeX = new FileExporterBibTeX(nullptr);
         staticFileExporterBibTeX->d->loadState();
     }
     return staticFileExporterBibTeX->internalValueToBibTeX(value, key, \
                useLaTeXEncoding);
diff --git a/src/io/fileexporterbibtex.h b/src/io/fileexporterbibtex.h
index 512a8b4f..88afbb24 100644
--- a/src/io/fileexporterbibtex.h
+++ b/src/io/fileexporterbibtex.h
@@ -41,7 +41,7 @@ class KBIBTEXIO_EXPORT FileExporterBibTeX : public FileExporter
 public:
     enum UseLaTeXEncoding {leUTF8, leLaTeX, leRaw};
 
-    FileExporterBibTeX();
+    FileExporterBibTeX(QObject *parent);
     ~FileExporterBibTeX() override;
 
     void setEncoding(const QString &encoding);
diff --git a/src/io/fileexporterbibtex2html.cpp b/src/io/fileexporterbibtex2html.cpp
index cdbf73ef..74a794c3 100644
--- a/src/io/fileexporterbibtex2html.cpp
+++ b/src/io/fileexporterbibtex2html.cpp
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2004-2014 by Thomas Fischer <fischer@unix-ag.uni-kl.de> *
+ *   Copyright (C) 2004-2017 by Thomas Fischer <fischer@unix-ag.uni-kl.de> *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
  *   it under the terms of the GNU General Public License as published by  *
@@ -90,8 +90,8 @@ public:
     }
 };
 
-FileExporterBibTeX2HTML::FileExporterBibTeX2HTML()
-        : FileExporterToolchain(), d(new FileExporterBibTeX2HTMLPrivate(this, \
tempDir.path())) +FileExporterBibTeX2HTML::FileExporterBibTeX2HTML(QObject *parent)
+        : FileExporterToolchain(parent), d(new FileExporterBibTeX2HTMLPrivate(this, \
tempDir.path()))  {
     // nothing
 }
@@ -117,11 +117,10 @@ bool FileExporterBibTeX2HTML::save(QIODevice *iodevice, const \
File *bibtexfile,  
     QFile output(d->bibTeXFilename);
     if (output.open(QIODevice::WriteOnly)) {
-        FileExporterBibTeX *bibtexExporter = new FileExporterBibTeX();
-        bibtexExporter->setEncoding(QStringLiteral("latex"));
-        result = bibtexExporter->save(&output, bibtexfile, errorLog);
+        FileExporterBibTeX bibtexExporter(this);
+        bibtexExporter.setEncoding(QStringLiteral("latex"));
+        result = bibtexExporter.save(&output, bibtexfile, errorLog);
         output.close();
-        delete bibtexExporter;
     }
 
     if (result)
@@ -142,11 +141,10 @@ bool FileExporterBibTeX2HTML::save(QIODevice *iodevice, const \
QSharedPointer<con  
     QFile output(d->bibTeXFilename);
     if (output.open(QIODevice::WriteOnly)) {
-        FileExporterBibTeX *bibtexExporter = new FileExporterBibTeX();
-        bibtexExporter->setEncoding(QStringLiteral("latex"));
-        result = bibtexExporter->save(&output, element, bibtexfile, errorLog);
+        FileExporterBibTeX bibtexExporter(this);
+        bibtexExporter.setEncoding(QStringLiteral("latex"));
+        result = bibtexExporter.save(&output, element, bibtexfile, errorLog);
         output.close();
-        delete bibtexExporter;
     }
 
     if (result)
diff --git a/src/io/fileexporterbibtex2html.h b/src/io/fileexporterbibtex2html.h
index f6949a52..9d5cfc68 100644
--- a/src/io/fileexporterbibtex2html.h
+++ b/src/io/fileexporterbibtex2html.h
@@ -27,7 +27,7 @@ class KBIBTEXIO_EXPORT FileExporterBibTeX2HTML: public \
FileExporterToolchain  Q_OBJECT
 
 public:
-    FileExporterBibTeX2HTML();
+    FileExporterBibTeX2HTML(QObject *parent);
     ~FileExporterBibTeX2HTML() override;
 
     void reloadConfig() override;
diff --git a/src/io/fileexporterbibtexoutput.cpp \
b/src/io/fileexporterbibtexoutput.cpp index e49ceab9..b96ecefd 100644
--- a/src/io/fileexporterbibtexoutput.cpp
+++ b/src/io/fileexporterbibtexoutput.cpp
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2004-2014 by Thomas Fischer <fischer@unix-ag.uni-kl.de> *
+ *   Copyright (C) 2004-2017 by Thomas Fischer <fischer@unix-ag.uni-kl.de> *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
  *   it under the terms of the GNU General Public License as published by  *
@@ -30,8 +30,8 @@
 #include "kbibtex.h"
 #include "logging_io.h"
 
-FileExporterBibTeXOutput::FileExporterBibTeXOutput(OutputType outputType)
-        : FileExporterToolchain(), m_outputType(outputType), \
m_latexLanguage(QStringLiteral("english")), m_latexBibStyle(QStringLiteral("plain")) \
+FileExporterBibTeXOutput::FileExporterBibTeXOutput(OutputType outputType, QObject \
*parent) +        : FileExporterToolchain(parent), m_outputType(outputType), \
m_latexLanguage(QStringLiteral("english")), m_latexBibStyle(QStringLiteral("plain"))  \
{  m_fileBasename = QStringLiteral("bibtex-to-output");
     m_fileStem = tempDir.path() + QDir::separator() + m_fileBasename;
@@ -58,11 +58,10 @@ bool FileExporterBibTeXOutput::save(QIODevice *ioDevice, const \
File *bibtexfile,  
     QBuffer buffer(this);
     if (buffer.open(QIODevice::WriteOnly)) {
-        FileExporterBibTeX *bibtexExporter = new FileExporterBibTeX();
-        bibtexExporter->setEncoding(QStringLiteral("utf-8"));
-        result = bibtexExporter->save(&buffer, bibtexfile, errorLog);
+        FileExporterBibTeX bibtexExporter(this);
+        bibtexExporter.setEncoding(QStringLiteral("utf-8"));
+        result = bibtexExporter.save(&buffer, bibtexfile, errorLog);
         buffer.close();
-        delete bibtexExporter;
     }
 
     if (result)
@@ -86,11 +85,10 @@ bool FileExporterBibTeXOutput::save(QIODevice *ioDevice, const \
QSharedPointer<co  
     QBuffer buffer(this);
     if (buffer.open(QIODevice::WriteOnly)) {
-        FileExporterBibTeX *bibtexExporter = new FileExporterBibTeX();
-        bibtexExporter->setEncoding(QStringLiteral("utf-8"));
-        result = bibtexExporter->save(&buffer, element, bibtexfile, errorLog);
+        FileExporterBibTeX bibtexExporter(this);
+        bibtexExporter.setEncoding(QStringLiteral("utf-8"));
+        result = bibtexExporter.save(&buffer, element, bibtexfile, errorLog);
         buffer.close();
-        delete bibtexExporter;
     }
 
     if (result)
diff --git a/src/io/fileexporterbibtexoutput.h b/src/io/fileexporterbibtexoutput.h
index 7e3d2098..c90d9bca 100644
--- a/src/io/fileexporterbibtexoutput.h
+++ b/src/io/fileexporterbibtexoutput.h
@@ -30,7 +30,7 @@ class KBIBTEXIO_EXPORT FileExporterBibTeXOutput : public \
FileExporterToolchain  
 public:
     enum OutputType {BibTeXLogFile, BibTeXBlockList};
-    explicit FileExporterBibTeXOutput(OutputType outputType);
+    explicit FileExporterBibTeXOutput(OutputType outputType, QObject *parent);
     ~FileExporterBibTeXOutput() override;
 
     void reloadConfig() override;
diff --git a/src/io/fileexporterbibutils.cpp b/src/io/fileexporterbibutils.cpp
index bbbcf46e..4fbf3150 100644
--- a/src/io/fileexporterbibutils.cpp
+++ b/src/io/fileexporterbibutils.cpp
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2004-2014 by Thomas Fischer <fischer@unix-ag.uni-kl.de> *
+ *   Copyright (C) 2004-2017 by Thomas Fischer <fischer@unix-ag.uni-kl.de> *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
  *   it under the terms of the GNU General Public License as published by  *
@@ -28,17 +28,22 @@ private:
     // UNUSED FileExporterBibUtils *p;
 
 public:
-    FileExporterBibTeX bibtexExporter;
+    FileExporterBibTeX *bibtexExporter;
 
-    Private(FileExporterBibUtils */* UNUSED parent*/)
+    Private(FileExporterBibUtils *parent)
     // UNUSED : p(parent)
     {
-        bibtexExporter.setEncoding(QStringLiteral("utf-8"));
+        bibtexExporter = new FileExporterBibTeX(parent);
+        bibtexExporter->setEncoding(QStringLiteral("utf-8"));
+    }
+
+    ~Private() {
+        delete bibtexExporter;
     }
 };
 
-FileExporterBibUtils::FileExporterBibUtils()
-        : FileExporter(), BibUtils(), d(new FileExporterBibUtils::Private(this))
+FileExporterBibUtils::FileExporterBibUtils(QObject *parent)
+        : FileExporter(parent), BibUtils(), d(new \
FileExporterBibUtils::Private(this))  {
     // TODO
 }
@@ -56,7 +61,7 @@ bool FileExporterBibUtils::save(QIODevice *iodevice, const File \
*bibtexfile, QSt  }
 
     QBuffer buffer;
-    bool result = d->bibtexExporter.save(&buffer, bibtexfile, errorLog);
+    bool result = d->bibtexExporter->save(&buffer, bibtexfile, errorLog);
     if (result)
         result = convert(buffer, BibUtils::BibTeX, *iodevice, format());
 
@@ -70,7 +75,7 @@ bool FileExporterBibUtils::save(QIODevice *iodevice, const \
QSharedPointer<const  return false;
 
     QBuffer buffer;
-    bool result = d->bibtexExporter.save(&buffer, element, bibtexfile, errorLog);
+    bool result = d->bibtexExporter->save(&buffer, element, bibtexfile, errorLog);
     if (result)
         result = convert(buffer, BibUtils::BibTeX, *iodevice, format());
 
diff --git a/src/io/fileexporterbibutils.h b/src/io/fileexporterbibutils.h
index 96fd5049..3045bf4b 100644
--- a/src/io/fileexporterbibutils.h
+++ b/src/io/fileexporterbibutils.h
@@ -29,7 +29,7 @@ class KBIBTEXIO_EXPORT FileExporterBibUtils : public FileExporter, \
public BibUti  Q_OBJECT
 
 public:
-    explicit FileExporterBibUtils();
+    explicit FileExporterBibUtils(QObject *parent);
     ~FileExporterBibUtils() override;
 
     bool save(QIODevice *iodevice, const File *bibtexfile, QStringList *errorLog = \
                nullptr) override;
diff --git a/src/io/fileexporterpdf.cpp b/src/io/fileexporterpdf.cpp
index 1ab4133c..340f2104 100644
--- a/src/io/fileexporterpdf.cpp
+++ b/src/io/fileexporterpdf.cpp
@@ -33,15 +33,13 @@
 #include "kbibtex.h"
 #include "logging_io.h"
 
-FileExporterPDF::FileExporterPDF(FileEmbedding fileEmbedding)
-        : FileExporterToolchain(), m_fileEmbedding(fileEmbedding)
+FileExporterPDF::FileExporterPDF(QObject *parent)
+        : FileExporterToolchain(parent)
 {
     m_fileBasename = QStringLiteral("bibtex-to-pdf");
     m_fileStem = tempDir.path() + QDir::separator() + m_fileBasename;
 
-    /// If there is not embedfile.sty file, disable embedding
-    /// irrespective of user's wishes
-    if (!kpsewhich(QStringLiteral("embedfile.sty"))) m_fileEmbedding = \
NoFileEmbedding; +    \
setFileEmbedding(FileExporterPDF::EmbedBibTeXFileAndReferences);  
     reloadConfig();
 }
@@ -79,11 +77,10 @@ bool FileExporterPDF::save(QIODevice *iodevice, const File \
*bibtexfile, QStringL  
     QFile output(m_fileStem + KBibTeX::extensionBibTeX);
     if (output.open(QIODevice::WriteOnly)) {
-        FileExporterBibTeX *bibtexExporter = new FileExporterBibTeX();
-        bibtexExporter->setEncoding(QStringLiteral("latex"));
-        result = bibtexExporter->save(&output, bibtexfile, errorLog);
+        FileExporterBibTeX bibtexExporter(this);
+        bibtexExporter.setEncoding(QStringLiteral("latex"));
+        result = bibtexExporter.save(&output, bibtexfile, errorLog);
         output.close();
-        delete bibtexExporter;
     }
 
     if (result)
@@ -110,11 +107,10 @@ bool FileExporterPDF::save(QIODevice *iodevice, const \
QSharedPointer<const Eleme  
     QFile output(m_fileStem + KBibTeX::extensionBibTeX);
     if (output.open(QIODevice::WriteOnly)) {
-        FileExporterBibTeX *bibtexExporter = new FileExporterBibTeX();
-        bibtexExporter->setEncoding(QStringLiteral("latex"));
-        result = bibtexExporter->save(&output, element, bibtexfile, errorLog);
+        FileExporterBibTeX bibtexExporter(this);
+        bibtexExporter.setEncoding(QStringLiteral("latex"));
+        result = bibtexExporter.save(&output, element, bibtexfile, errorLog);
         output.close();
-        delete bibtexExporter;
     }
 
     if (result)
@@ -129,6 +125,15 @@ void FileExporterPDF::setDocumentSearchPaths(const QStringList \
&searchPaths)  m_searchPaths = searchPaths;
 }
 
+void FileExporterPDF::setFileEmbedding(FileEmbedding fileEmbedding) {
+    /// If there is not embedfile.sty file, disable embedding
+    /// irrespective of user's wishes
+    if (!kpsewhich(QStringLiteral("embedfile.sty")))
+        m_fileEmbedding = NoFileEmbedding;
+    else
+        m_fileEmbedding = fileEmbedding;
+}
+
 bool FileExporterPDF::generatePDF(QIODevice *iodevice, QStringList *errorLog)
 {
     QStringList cmdLines = QStringList() << QStringLiteral("pdflatex -halt-on-error \
") + m_fileStem + KBibTeX::extensionTeX << QStringLiteral("bibtex ") + m_fileStem + \
KBibTeX::extensionAux << QStringLiteral("pdflatex -halt-on-error ") + m_fileStem + \
KBibTeX::extensionTeX << QStringLiteral("pdflatex -halt-on-error ") + m_fileStem + \
                KBibTeX::extensionTeX;
diff --git a/src/io/fileexporterpdf.h b/src/io/fileexporterpdf.h
index e2a47d24..14922886 100644
--- a/src/io/fileexporterpdf.h
+++ b/src/io/fileexporterpdf.h
@@ -30,7 +30,7 @@ class KBIBTEXIO_EXPORT FileExporterPDF : public \
FileExporterToolchain  
 public:
     enum FileEmbedding { NoFileEmbedding = 0, EmbedBibTeXFile = 1, EmbedReferences = \
                2, EmbedBibTeXFileAndReferences = EmbedBibTeXFile | EmbedReferences};
-    explicit FileExporterPDF(FileEmbedding fileEmbedding = \
FileExporterPDF::EmbedBibTeXFileAndReferences); +    explicit FileExporterPDF(QObject \
*parent);  ~FileExporterPDF() override;
 
     void reloadConfig() override;
@@ -39,6 +39,7 @@ public:
     bool save(QIODevice *iodevice, const QSharedPointer<const Element> element, \
const File *bibtexfile, QStringList *errorLog = nullptr) override;  
     void setDocumentSearchPaths(const QStringList &searchPaths);
+    void setFileEmbedding(FileEmbedding fileEmbedding);
 
 private:
     QString m_fileBasename;
diff --git a/src/io/fileexporterps.cpp b/src/io/fileexporterps.cpp
index ca6eee6f..4a5e42df 100644
--- a/src/io/fileexporterps.cpp
+++ b/src/io/fileexporterps.cpp
@@ -30,8 +30,8 @@
 #include "kbibtex.h"
 #include "logging_io.h"
 
-FileExporterPS::FileExporterPS()
-        : FileExporterToolchain()
+FileExporterPS::FileExporterPS(QObject *parent)
+        : FileExporterToolchain(parent)
 {
     m_fileBasename = QStringLiteral("bibtex-to-ps");
     m_fileStem = tempDir.path() + QDir::separator() + m_fileBasename;
@@ -67,11 +67,10 @@ bool FileExporterPS::save(QIODevice *iodevice, const File \
*bibtexfile, QStringLi  
     QFile output(m_fileStem + KBibTeX::extensionBibTeX);
     if (output.open(QIODevice::WriteOnly)) {
-        FileExporterBibTeX *bibtexExporter = new FileExporterBibTeX();
-        bibtexExporter->setEncoding(QStringLiteral("latex"));
-        result = bibtexExporter->save(&output, bibtexfile, errorLog);
+        FileExporterBibTeX bibtexExporter(this);
+        bibtexExporter.setEncoding(QStringLiteral("latex"));
+        result = bibtexExporter.save(&output, bibtexfile, errorLog);
         output.close();
-        delete bibtexExporter;
     }
 
     if (result)
@@ -92,11 +91,10 @@ bool FileExporterPS::save(QIODevice *iodevice, const \
QSharedPointer<const Elemen  
     QFile output(m_fileStem + KBibTeX::extensionBibTeX);
     if (output.open(QIODevice::WriteOnly)) {
-        FileExporterBibTeX *bibtexExporter = new FileExporterBibTeX();
-        bibtexExporter->setEncoding(QStringLiteral("latex"));
-        result = bibtexExporter->save(&output, element, bibtexfile, errorLog);
+        FileExporterBibTeX bibtexExporter(this);
+        bibtexExporter.setEncoding(QStringLiteral("latex"));
+        result = bibtexExporter.save(&output, element, bibtexfile, errorLog);
         output.close();
-        delete bibtexExporter;
     }
 
     if (result)
diff --git a/src/io/fileexporterps.h b/src/io/fileexporterps.h
index 05822c5b..803cb800 100644
--- a/src/io/fileexporterps.h
+++ b/src/io/fileexporterps.h
@@ -29,7 +29,7 @@ class KBIBTEXIO_EXPORT FileExporterPS : public \
FileExporterToolchain  Q_OBJECT
 
 public:
-    FileExporterPS();
+    FileExporterPS(QObject *parent);
     ~FileExporterPS() override;
 
     void reloadConfig() override;
diff --git a/src/io/fileexporterris.cpp b/src/io/fileexporterris.cpp
index aefa33ac..a56a5ff4 100644
--- a/src/io/fileexporterris.cpp
+++ b/src/io/fileexporterris.cpp
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2004-2014 by Thomas Fischer <fischer@unix-ag.uni-kl.de> *
+ *   Copyright (C) 2004-2017 by Thomas Fischer <fischer@unix-ag.uni-kl.de> *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
  *   it under the terms of the GNU General Public License as published by  *
@@ -23,8 +23,8 @@
 #include "entry.h"
 #include "logging_io.h"
 
-FileExporterRIS::FileExporterRIS()
-        : FileExporter(), m_cancelFlag(false)
+FileExporterRIS::FileExporterRIS(QObject *parent)
+        : FileExporter(parent), m_cancelFlag(false)
 {
     // nothing
 }
diff --git a/src/io/fileexporterris.h b/src/io/fileexporterris.h
index 7af9a639..89501e94 100644
--- a/src/io/fileexporterris.h
+++ b/src/io/fileexporterris.h
@@ -30,7 +30,7 @@ class KBIBTEXIO_EXPORT FileExporterRIS : public FileExporter
     Q_OBJECT
 
 public:
-    FileExporterRIS();
+    FileExporterRIS(QObject *parent);
     ~FileExporterRIS() override;
 
     bool save(QIODevice *iodevice, const QSharedPointer<const Element> element, \
                const File *bibtexfile, QStringList *errorLog = nullptr) override;
diff --git a/src/io/fileexporterrtf.cpp b/src/io/fileexporterrtf.cpp
index 680d6e51..2cf0b23d 100644
--- a/src/io/fileexporterrtf.cpp
+++ b/src/io/fileexporterrtf.cpp
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2004-2014 by Thomas Fischer <fischer@unix-ag.uni-kl.de> *
+ *   Copyright (C) 2004-2017 by Thomas Fischer <fischer@unix-ag.uni-kl.de> *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
  *   it under the terms of the GNU General Public License as published by  *
@@ -30,8 +30,8 @@
 #include "kbibtex.h"
 #include "logging_io.h"
 
-FileExporterRTF::FileExporterRTF()
-        : FileExporterToolchain()
+FileExporterRTF::FileExporterRTF(QObject *parent)
+        : FileExporterToolchain(parent)
 {
     m_fileBasename = QStringLiteral("bibtex-to-rtf");
     m_fileStem = tempDir.path() + QDir::separator() + m_fileBasename;
@@ -66,11 +66,10 @@ bool FileExporterRTF::save(QIODevice *iodevice, const File \
*bibtexfile, QStringL  
     QFile output(m_fileStem + KBibTeX::extensionBibTeX);
     if (output.open(QIODevice::WriteOnly)) {
-        FileExporterBibTeX *bibtexExporter = new FileExporterBibTeX();
-        bibtexExporter->setEncoding(QStringLiteral("latex"));
-        result = bibtexExporter->save(&output, bibtexfile, errorLog);
+        FileExporterBibTeX bibtexExporter(this);
+        bibtexExporter.setEncoding(QStringLiteral("latex"));
+        result = bibtexExporter.save(&output, bibtexfile, errorLog);
         output.close();
-        delete bibtexExporter;
     }
 
     if (result)
@@ -91,11 +90,10 @@ bool FileExporterRTF::save(QIODevice *iodevice, const \
QSharedPointer<const Eleme  
     QFile output(m_fileStem + KBibTeX::extensionBibTeX);
     if (output.open(QIODevice::WriteOnly)) {
-        FileExporterBibTeX *bibtexExporter = new FileExporterBibTeX();
-        bibtexExporter->setEncoding(QStringLiteral("latex"));
-        result = bibtexExporter->save(&output, element, bibtexfile, errorLog);
+        FileExporterBibTeX bibtexExporter(this);
+        bibtexExporter.setEncoding(QStringLiteral("latex"));
+        result = bibtexExporter.save(&output, element, bibtexfile, errorLog);
         output.close();
-        delete bibtexExporter;
     }
 
     if (result)
diff --git a/src/io/fileexporterrtf.h b/src/io/fileexporterrtf.h
index af7b291e..9a0b2396 100644
--- a/src/io/fileexporterrtf.h
+++ b/src/io/fileexporterrtf.h
@@ -29,7 +29,7 @@ class KBIBTEXIO_EXPORT FileExporterRTF : public \
FileExporterToolchain  Q_OBJECT
 
 public:
-    FileExporterRTF();
+    FileExporterRTF(QObject *parent);
     ~FileExporterRTF() override;
 
     void reloadConfig() override;
diff --git a/src/io/fileexportertoolchain.cpp b/src/io/fileexportertoolchain.cpp
index 43d62bdd..d919b999 100644
--- a/src/io/fileexportertoolchain.cpp
+++ b/src/io/fileexportertoolchain.cpp
@@ -32,8 +32,8 @@ const QString FileExporterToolchain::defaultBabelLanguage = \
QStringLiteral("engl  const QString FileExporterToolchain::keyBibliographyStyle = \
QStringLiteral("bibliographyStyle");  const QString \
FileExporterToolchain::defaultBibliographyStyle = QStringLiteral("plain");  
-FileExporterToolchain::FileExporterToolchain()
-        : FileExporter(), m_process(nullptr), m_errorLog(nullptr)
+FileExporterToolchain::FileExporterToolchain(QObject *parent)
+        : FileExporter(parent), m_process(nullptr), m_errorLog(nullptr)
 {
     tempDir.setAutoRemove(true);
 }
diff --git a/src/io/fileexportertoolchain.h b/src/io/fileexportertoolchain.h
index e57fc43f..37a2c205 100644
--- a/src/io/fileexportertoolchain.h
+++ b/src/io/fileexportertoolchain.h
@@ -40,7 +40,7 @@ public:
     static const QString keyBibliographyStyle;
     static const QString defaultBibliographyStyle;
 
-    FileExporterToolchain();
+    FileExporterToolchain(QObject *parent);
 
     virtual void reloadConfig() = 0;
 
diff --git a/src/io/fileexporterxml.cpp b/src/io/fileexporterxml.cpp
index 388158da..3320130a 100644
--- a/src/io/fileexporterxml.cpp
+++ b/src/io/fileexporterxml.cpp
@@ -28,8 +28,8 @@
 #include "encoderxml.h"
 #include "logging_io.h"
 
-FileExporterXML::FileExporterXML()
-        : FileExporter(), m_cancelFlag(false)
+FileExporterXML::FileExporterXML(QObject *parent)
+        : FileExporter(parent), m_cancelFlag(false)
 {
     /// nothing
 }
diff --git a/src/io/fileexporterxml.h b/src/io/fileexporterxml.h
index b5757e36..ef54858c 100644
--- a/src/io/fileexporterxml.h
+++ b/src/io/fileexporterxml.h
@@ -35,7 +35,7 @@ class KBIBTEXIO_EXPORT FileExporterXML : public FileExporter
     Q_OBJECT
 
 public:
-    FileExporterXML();
+    FileExporterXML(QObject *parent);
     ~FileExporterXML() override;
 
     bool save(QIODevice *iodevice, const File *bibtexfile, QStringList *errorLog = \
                nullptr) override;
diff --git a/src/io/fileexporterxslt.cpp b/src/io/fileexporterxslt.cpp
index 0b2b3e52..eb39540b 100644
--- a/src/io/fileexporterxslt.cpp
+++ b/src/io/fileexporterxslt.cpp
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2004-2014 by Thomas Fischer <fischer@unix-ag.uni-kl.de> *
+ *   Copyright (C) 2004-2017 by Thomas Fischer <fischer@unix-ag.uni-kl.de> *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
  *   it under the terms of the GNU General Public License as published by  *
@@ -33,13 +33,11 @@
 #include "xsltransform.h"
 #include "logging_io.h"
 
-FileExporterXSLT::FileExporterXSLT(const QString &xsltFilename)
-        : FileExporter(), m_cancelFlag(false)
+FileExporterXSLT::FileExporterXSLT(const QString &xsltFilename, QObject *parent)
+        : FileExporter(parent), m_cancelFlag(false), m_xsltFilename(xsltFilename)
 {
     if (xsltFilename.isEmpty() || !QFile(xsltFilename).exists())
-        setXSLTFilename(QStandardPaths::locate(QStandardPaths::GenericDataLocation, \
                QStringLiteral("kbibtex/standard.xsl")));
-    else
-        setXSLTFilename(xsltFilename);
+        qCWarning(LOG_KBIBTEX_IO) << "Invalid XSLT filename: " << xsltFilename;
 }
 
 
@@ -53,11 +51,14 @@ bool FileExporterXSLT::save(QIODevice *iodevice, const File \
                *bibtexfile, QString
     if (!iodevice->isWritable() && !iodevice->open(QIODevice::WriteOnly)) {
         qCWarning(LOG_KBIBTEX_IO) << "Output device not writable";
         return false;
+    } else if (m_xsltFilename.isEmpty() || !QFile(m_xsltFilename).exists()) {
+        qCWarning(LOG_KBIBTEX_IO) << "Invalid XSLT filename: " << m_xsltFilename;
+        return false;
     }
 
     m_cancelFlag = false;
     XSLTransform xsltransformer(m_xsltFilename);
-    FileExporterXML xmlExporter;
+    FileExporterXML xmlExporter(this);
 
     QBuffer buffer;
     buffer.open(QIODevice::WriteOnly);
@@ -84,11 +85,14 @@ bool FileExporterXSLT::save(QIODevice *iodevice, const \
                QSharedPointer<const Elem
     if (!iodevice->isWritable() && !iodevice->open(QIODevice::WriteOnly)) {
         qCWarning(LOG_KBIBTEX_IO) << "Output device not writable";
         return false;
+    } else if (m_xsltFilename.isEmpty() || !QFile(m_xsltFilename).exists()) {
+        qCWarning(LOG_KBIBTEX_IO) << "Invalid XSLT filename: " << m_xsltFilename;
+        return false;
     }
 
     m_cancelFlag = false;
     XSLTransform xsltransformer(m_xsltFilename);
-    FileExporterXML xmlExporter;
+    FileExporterXML xmlExporter(this);
 
     QBuffer buffer;
     buffer.open(QIODevice::WriteOnly);
@@ -110,12 +114,13 @@ bool FileExporterXSLT::save(QIODevice *iodevice, const \
QSharedPointer<const Elem  return false;
 }
 
-void FileExporterXSLT::setXSLTFilename(const QString &xsltFilename)
+void FileExporterXSLT::cancel()
 {
-    m_xsltFilename = xsltFilename;
+    m_cancelFlag = true;
 }
 
-void FileExporterXSLT::cancel()
+FileExporterHTML::FileExporterHTML(QObject *parent)
+        : FileExporterXSLT(QStandardPaths::locate(QStandardPaths::GenericDataLocation, \
QStringLiteral("kbibtex/standard.xsl")), parent)  {
-    m_cancelFlag = true;
+    /// nothing
 }
diff --git a/src/io/fileexporterxslt.h b/src/io/fileexporterxslt.h
index 5273c91d..19421597 100644
--- a/src/io/fileexporterxslt.h
+++ b/src/io/fileexporterxslt.h
@@ -35,13 +35,12 @@ class KBIBTEXIO_EXPORT FileExporterXSLT : public FileExporter
     Q_OBJECT
 
 public:
-    explicit FileExporterXSLT(const QString &xsltFilename = QString());
+    explicit FileExporterXSLT(const QString &xsltFilename, QObject *parent);
     ~FileExporterXSLT() override;
 
     bool save(QIODevice *iodevice, const File *bibtexfile, QStringList *errorLog = \
                nullptr) override;
     bool save(QIODevice *iodevice, const QSharedPointer<const Element> element, \
const File *bibtexfile, QStringList *errorLog = nullptr) override;  
-    void setXSLTFilename(const QString &xsltFilename);
 
 public slots:
     void cancel() override;
@@ -51,4 +50,14 @@ private:
     QString m_xsltFilename;
 };
 
+
+/**
+ * @author Thomas Fischer <fischer@unix-ag.uni-kl.de>
+ */
+class KBIBTEXIO_EXPORT FileExporterHTML : public FileExporterXSLT
+{
+    Q_OBJECT
+public:
+    explicit FileExporterHTML(QObject *parent);
+};
 #endif
diff --git a/src/io/fileimporter.cpp b/src/io/fileimporter.cpp
index 60b8797e..b3fee4ca 100644
--- a/src/io/fileimporter.cpp
+++ b/src/io/fileimporter.cpp
@@ -25,8 +25,8 @@
 #include "value.h"
 #include "logging_io.h"
 
-FileImporter::FileImporter()
-        : QObject()
+FileImporter::FileImporter(QObject *parent)
+        : QObject(parent)
 {
     // nothing
 }
diff --git a/src/io/fileimporter.h b/src/io/fileimporter.h
index 45348fb7..6ed5d4ca 100644
--- a/src/io/fileimporter.h
+++ b/src/io/fileimporter.h
@@ -34,7 +34,7 @@ class KBIBTEXIO_EXPORT FileImporter : public QObject
     Q_OBJECT
 
 public:
-    FileImporter();
+    FileImporter(QObject *parent);
     ~FileImporter() override;
 
     File *fromString(const QString &text);
diff --git a/src/io/fileimporterbibtex.cpp b/src/io/fileimporterbibtex.cpp
index db965542..c772a875 100644
--- a/src/io/fileimporterbibtex.cpp
+++ b/src/io/fileimporterbibtex.cpp
@@ -39,8 +39,8 @@
 
 const char *FileImporterBibTeX::defaultCodecName = "utf-8";
 
-FileImporterBibTeX::FileImporterBibTeX(bool ignoreComments, KBibTeX::Casing \
                keywordCasing)
-        : FileImporter(), m_cancelFlag(false), m_textStream(nullptr), \
m_ignoreComments(ignoreComments), m_keywordCasing(keywordCasing), m_lineNo(1) \
+FileImporterBibTeX::FileImporterBibTeX(QObject *parent) +        : \
FileImporter(parent), m_cancelFlag(false), m_textStream(nullptr), \
m_commentHandling(IgnoreComments), m_keywordCasing(KBibTeX::cLowerCase), m_lineNo(1)  \
{  m_keysForPersonDetection.append(Entry::ftAuthor);
     m_keysForPersonDetection.append(Entry::ftEditor);
@@ -113,7 +113,7 @@ File *FileImporterBibTeX::load(QIODevice *iodevice)
         Element *element = nextElement();
 
         if (element != nullptr) {
-            if (!m_ignoreComments || !Comment::isComment(*element))
+            if (m_commentHandling == KeepComments || !Comment::isComment(*element))
                 result->append(QSharedPointer<Element>(element));
             else
                 delete element;
@@ -1164,3 +1164,7 @@ QString FileImporterBibTeX::tokenidToString(Token token)
     default: return QString(QStringLiteral("<Unknown>"));
     }
 }
+
+void FileImporterBibTeX::setCommentHandling(CommentHandling commentHandling) {
+    m_commentHandling = commentHandling;
+}
diff --git a/src/io/fileimporterbibtex.h b/src/io/fileimporterbibtex.h
index ccd79404..66069d33 100644
--- a/src/io/fileimporterbibtex.h
+++ b/src/io/fileimporterbibtex.h
@@ -48,17 +48,12 @@ class KBIBTEXIO_EXPORT FileImporterBibTeX : public FileImporter
 public:
     static const char *defaultCodecName;
 
+    enum CommentHandling {IgnoreComments = 0, KeepComments = 1};
+
     /**
      * Creates an importer class to read a BibTeX file.
-     * @param encoding the file's encoding.
-     *     Supports all of iconv's encodings plus "latex",
-     *     which performs no encoding but relies on that
-     *     this file is pure ASCII only.
-     * @param ignoreComments ignore comments in file.
-     *     Useful if you for example read from an HTML file,
-     *     as all HTML content you be treated as comments otherwise.
      */
-    explicit FileImporterBibTeX(bool ignoreComments = true, KBibTeX::Casing \
keywordCasing = KBibTeX::cLowerCase); +    explicit FileImporterBibTeX(QObject \
*parent);  ~FileImporterBibTeX() override;
 
     /**
@@ -103,6 +98,8 @@ public:
 
     static void parsePersonList(const QString &text, Value &value);
 
+    void setCommentHandling(CommentHandling commentHandling);
+
 public slots:
     void cancel() override;
 
@@ -122,7 +119,7 @@ private:
 
     bool m_cancelFlag;
     QTextStream *m_textStream;
-    bool m_ignoreComments;
+    CommentHandling m_commentHandling;
     KBibTeX::Casing m_keywordCasing;
     QStringList m_keysForPersonDetection;
     QSet<QString> m_knownElementIds;
diff --git a/src/io/fileimporterbibutils.cpp b/src/io/fileimporterbibutils.cpp
index 2042766b..66127839 100644
--- a/src/io/fileimporterbibutils.cpp
+++ b/src/io/fileimporterbibutils.cpp
@@ -28,17 +28,21 @@ private:
     // UNUSED FileImporterBibUtils *p;
 
 public:
-    FileImporterBibTeX bibtexImporter;
+    FileImporterBibTeX *bibtexImporter;
 
-    Private(FileImporterBibUtils */* UNUSED parent*/)
+    Private(FileImporterBibUtils *parent)
     // UNUSED : p(parent)
     {
-        /// nothing
+        bibtexImporter = new FileImporterBibTeX(parent);
+    }
+
+    ~Private() {
+        delete bibtexImporter;
     }
 };
 
-FileImporterBibUtils::FileImporterBibUtils()
-        : FileImporter(), BibUtils(), d(new FileImporterBibUtils::Private(this))
+FileImporterBibUtils::FileImporterBibUtils(QObject *parent)
+        : FileImporter(parent), BibUtils(), d(new \
FileImporterBibUtils::Private(this))  {
     /// nothing
 }
@@ -60,7 +64,7 @@ File *FileImporterBibUtils::load(QIODevice *iodevice)
     iodevice->close();
 
     if (result)
-        return d->bibtexImporter.load(&buffer);
+        return d->bibtexImporter->load(&buffer);
     else
         return nullptr;
 }
diff --git a/src/io/fileimporterbibutils.h b/src/io/fileimporterbibutils.h
index fb414db6..e9092023 100644
--- a/src/io/fileimporterbibutils.h
+++ b/src/io/fileimporterbibutils.h
@@ -29,7 +29,7 @@ class KBIBTEXIO_EXPORT FileImporterBibUtils : public FileImporter, \
public BibUti  Q_OBJECT
 
 public:
-    explicit FileImporterBibUtils();
+    explicit FileImporterBibUtils(QObject *parent);
     ~FileImporterBibUtils() override;
 
     File *load(QIODevice *iodevice) override;
diff --git a/src/io/fileimporterpdf.cpp b/src/io/fileimporterpdf.cpp
index d648546f..c243c5fc 100644
--- a/src/io/fileimporterpdf.cpp
+++ b/src/io/fileimporterpdf.cpp
@@ -26,10 +26,10 @@
 #include "fileimporterbibtex.h"
 #include "logging_io.h"
 
-FileImporterPDF::FileImporterPDF()
-        : FileImporter(), m_cancelFlag(false)
+FileImporterPDF::FileImporterPDF(QObject *parent)
+        : FileImporter(parent), m_cancelFlag(false)
 {
-    m_bibTeXimporter = new FileImporterBibTeX();
+    m_bibTeXimporter = new FileImporterBibTeX(this);
 }
 
 FileImporterPDF::~FileImporterPDF()
@@ -66,7 +66,7 @@ File *FileImporterPDF::load(QIODevice *iodevice)
                 // Poppler::EmbeddedFile to operate on const objects?
                 QByteArray data(file->data());
                 QBuffer buffer(&data);
-                FileImporterBibTeX bibTeXimporter;
+                FileImporterBibTeX bibTeXimporter(this);
                 connect(&bibTeXimporter, &FileImporter::progress, this, \
&FileImporter::progress);  buffer.open(QIODevice::ReadOnly);
                 result = bibTeXimporter.load(&buffer);
diff --git a/src/io/fileimporterpdf.h b/src/io/fileimporterpdf.h
index 65b10f0b..44cd4d44 100644
--- a/src/io/fileimporterpdf.h
+++ b/src/io/fileimporterpdf.h
@@ -33,7 +33,7 @@ class KBIBTEXIO_EXPORT FileImporterPDF : public FileImporter
     Q_OBJECT
 
 public:
-    FileImporterPDF();
+    FileImporterPDF(QObject *parent);
     ~FileImporterPDF() override;
 
     File *load(QIODevice *iodevice) override;
diff --git a/src/io/fileimporterris.cpp b/src/io/fileimporterris.cpp
index 6b0206e4..8d6bac06 100644
--- a/src/io/fileimporterris.cpp
+++ b/src/io/fileimporterris.cpp
@@ -239,8 +239,8 @@ public:
 
 };
 
-FileImporterRIS::FileImporterRIS()
-        : FileImporter(), d(new FileImporterRISPrivate(this))
+FileImporterRIS::FileImporterRIS(QObject *parent)
+        : FileImporter(parent), d(new FileImporterRISPrivate(this))
 {
 // nothing
 }
diff --git a/src/io/fileimporterris.h b/src/io/fileimporterris.h
index d8e14fd3..1fd869c6 100644
--- a/src/io/fileimporterris.h
+++ b/src/io/fileimporterris.h
@@ -28,7 +28,7 @@ class KBIBTEXIO_EXPORT FileImporterRIS : public FileImporter
     Q_OBJECT
 
 public:
-    FileImporterRIS();
+    FileImporterRIS(QObject *parent);
     ~FileImporterRIS() override;
 
     File *load(QIODevice *iodevice) override;
diff --git a/src/networking/onlinesearch/onlinesearchacmportal.cpp \
b/src/networking/onlinesearch/onlinesearchacmportal.cpp index 5d2b43dc..04df4516 \
                100644
--- a/src/networking/onlinesearch/onlinesearchacmportal.cpp
+++ b/src/networking/onlinesearch/onlinesearchacmportal.cpp
@@ -241,7 +241,7 @@ void OnlineSearchAcmPortal::doneFetchingBibTeX()
         /// ensure proper treatment of UTF-8 characters
         QString bibTeXcode = QString::fromUtf8(reply->readAll().constData());
 
-        FileImporterBibTeX importer;
+        FileImporterBibTeX importer(this);
         d->sanitizeBibTeXCode(bibTeXcode);
         File *bibtexFile = importer.fromString(bibTeXcode);
 
diff --git a/src/networking/onlinesearch/onlinesearcharxiv.cpp \
b/src/networking/onlinesearch/onlinesearcharxiv.cpp index 2f0baa6e..e3a12832 100644
--- a/src/networking/onlinesearch/onlinesearcharxiv.cpp
+++ b/src/networking/onlinesearch/onlinesearcharxiv.cpp
@@ -676,7 +676,7 @@ void OnlineSearchArXiv::downloadDone()
             qCWarning(LOG_KBIBTEX_NETWORKING) << "XSL tranformation failed for data \
from " << reply->url().toDisplayString();  stopSearch(resultInvalidArguments);
         } else {
-            FileImporterBibTeX importer;
+            FileImporterBibTeX importer(this);
             File *bibtexFile = importer.fromString(bibTeXcode);
 
             bool hasEntries = false;
diff --git a/src/networking/onlinesearch/onlinesearchbibsonomy.cpp \
b/src/networking/onlinesearch/onlinesearchbibsonomy.cpp index d08f02f9..0e81df7f \
                100644
--- a/src/networking/onlinesearch/onlinesearchbibsonomy.cpp
+++ b/src/networking/onlinesearch/onlinesearchbibsonomy.cpp
@@ -238,7 +238,7 @@ void OnlineSearchBibsonomy::downloadDone()
         QString bibTeXcode = QString::fromUtf8(reply->readAll().constData());
 
         if (!bibTeXcode.isEmpty()) {
-            FileImporterBibTeX importer;
+            FileImporterBibTeX importer(this);
             const File *bibtexFile = importer.fromString(bibTeXcode);
 
             bool hasEntries = false;
diff --git a/src/networking/onlinesearch/onlinesearchbiorxiv.cpp \
b/src/networking/onlinesearch/onlinesearchbiorxiv.cpp index 0b732843..bc01b422 100644
--- a/src/networking/onlinesearch/onlinesearchbiorxiv.cpp
+++ b/src/networking/onlinesearch/onlinesearchbiorxiv.cpp
@@ -151,7 +151,7 @@ void OnlineSearchBioRxiv::bibTeXDownloadDone() {
         const QString bibTeXcode = QString::fromUtf8(reply->readAll().constData());
 
         if (!bibTeXcode.isEmpty()) {
-            FileImporterBibTeX importer;
+            FileImporterBibTeX importer(this);
             File *bibtexFile = importer.fromString(bibTeXcode);
 
             if (bibtexFile != nullptr) {
diff --git a/src/networking/onlinesearch/onlinesearchdoi.cpp \
b/src/networking/onlinesearch/onlinesearchdoi.cpp index dc9d657c..a9c2b539 100644
--- a/src/networking/onlinesearch/onlinesearchdoi.cpp
+++ b/src/networking/onlinesearch/onlinesearchdoi.cpp
@@ -201,7 +201,7 @@ void OnlineSearchDOI::downloadDone()
             const QString bibTeXcode = \
QString::fromUtf8(reply->readAll().constData());  
             if (!bibTeXcode.isEmpty()) {
-                FileImporterBibTeX importer;
+                FileImporterBibTeX importer(this);
                 File *bibtexFile = importer.fromString(bibTeXcode);
 
                 bool hasEntries = false;
diff --git a/src/networking/onlinesearch/onlinesearchgooglescholar.cpp \
b/src/networking/onlinesearch/onlinesearchgooglescholar.cpp index 52929978..1ec60fa5 \
                100644
--- a/src/networking/onlinesearch/onlinesearchgooglescholar.cpp
+++ b/src/networking/onlinesearch/onlinesearchgooglescholar.cpp
@@ -48,17 +48,22 @@ public:
     QString configPageUrl;
     QString setConfigPageUrl;
     QString queryPageUrl;
-    FileImporterBibTeX importer;
+    FileImporterBibTeX *importer;
 
-    OnlineSearchGoogleScholarPrivate(OnlineSearchGoogleScholar */* UNUSED parent*/)
+    OnlineSearchGoogleScholarPrivate(OnlineSearchGoogleScholar *parent)
         : /* UNUSED p(parent), */ numResults(0)
     {
+        importer = new FileImporterBibTeX(parent);
         startPageUrl = QStringLiteral("https://scholar.google.com/");
         configPageUrl = QStringLiteral("https://%1/scholar_settings");
         setConfigPageUrl = QStringLiteral("https://%1/scholar_setprefs");
         queryPageUrl = QStringLiteral("https://%1/scholar");
     }
 
+    ~OnlineSearchGoogleScholarPrivate() {
+        delete importer;
+    }
+
     QString documentUrlForBibTeXEntry(const QString &htmlText, int bibLinkPos) {
         /// Regular expression to detect text of a link to a document
         static const QRegExp \
documentLinkIndicator(QStringLiteral("\\[(PDF|HTML)\\]"), Qt::CaseSensitive); @@ \
-309,7 +314,7 @@ void OnlineSearchGoogleScholar::doneFetchingBibTeX()  } else {
             /// ensure proper treatment of UTF-8 characters
             QString rawText = QString::fromUtf8(reply->readAll().constData());
-            File *bibtexFile = d->importer.fromString(rawText);
+            File *bibtexFile = d->importer->fromString(rawText);
 
             bool hasEntry = false;
             if (bibtexFile != nullptr) {
diff --git a/src/networking/onlinesearch/onlinesearchideasrepec.cpp \
b/src/networking/onlinesearch/onlinesearchideasrepec.cpp index 0649ba11..3185a264 \
                100644
--- a/src/networking/onlinesearch/onlinesearchideasrepec.cpp
+++ b/src/networking/onlinesearch/onlinesearchideasrepec.cpp
@@ -214,7 +214,7 @@ void OnlineSearchIDEASRePEc::downloadBibTeXDone()
         const QString bibTeXcode = QString::fromUtf8(reply->readAll().constData());
 
         if (!bibTeXcode.isEmpty()) {
-            FileImporterBibTeX importer;
+            FileImporterBibTeX importer(this);
             File *bibtexFile = importer.fromString(bibTeXcode);
 
             if (bibtexFile != nullptr) {
diff --git a/src/networking/onlinesearch/onlinesearchieeexplore.cpp \
b/src/networking/onlinesearch/onlinesearchieeexplore.cpp index fe87cc12..9a7f22d0 \
                100644
--- a/src/networking/onlinesearch/onlinesearchieeexplore.cpp
+++ b/src/networking/onlinesearch/onlinesearchieeexplore.cpp
@@ -132,7 +132,7 @@ void OnlineSearchIEEEXplore::doneFetchingXML()
                 qCWarning(LOG_KBIBTEX_NETWORKING) << "XSL tranformation failed for \
data from " << reply->url().toDisplayString();  stopSearch(resultInvalidArguments);
             } else {
-                FileImporterBibTeX importer;
+                FileImporterBibTeX importer(this);
                 File *bibtexFile = importer.fromString(bibTeXcode);
 
                 bool hasEntries = false;
diff --git a/src/networking/onlinesearch/onlinesearchingentaconnect.cpp \
b/src/networking/onlinesearch/onlinesearchingentaconnect.cpp index 64ffd18f..7710eff2 \
                100644
--- a/src/networking/onlinesearch/onlinesearchingentaconnect.cpp
+++ b/src/networking/onlinesearch/onlinesearchingentaconnect.cpp
@@ -367,7 +367,7 @@ void OnlineSearchIngentaConnect::downloadDone()
         QString bibTeXcode = QString::fromUtf8(reply->readAll().constData());
 
         if (!bibTeXcode.isEmpty()) {
-            FileImporterBibTeX importer;
+            FileImporterBibTeX importer(this);
             File *bibtexFile = importer.fromString(bibTeXcode);
 
             bool hasEntries = false;
diff --git a/src/networking/onlinesearch/onlinesearchisbndb.cpp \
b/src/networking/onlinesearch/onlinesearchisbndb.cpp index 202cbc5e..813ff750 100644
--- a/src/networking/onlinesearch/onlinesearchisbndb.cpp
+++ b/src/networking/onlinesearch/onlinesearchisbndb.cpp
@@ -126,7 +126,7 @@ void OnlineSearchIsbnDB::downloadDone()
             qCWarning(LOG_KBIBTEX_NETWORKING) << "XSL tranformation failed for data \
from " << reply->url().toDisplayString();  stopSearch(resultInvalidArguments);
         } else {
-            FileImporterBibTeX importer;
+            FileImporterBibTeX importer(this);
             File *bibtexFile = importer.fromString(bibTeXcode);
 
             bool hasEntries = false;
diff --git a/src/networking/onlinesearch/onlinesearchjstor.cpp \
b/src/networking/onlinesearch/onlinesearchjstor.cpp index ac72158c..52073287 100644
--- a/src/networking/onlinesearch/onlinesearchjstor.cpp
+++ b/src/networking/onlinesearch/onlinesearchjstor.cpp
@@ -204,7 +204,7 @@ void OnlineSearchJStor::doneFetchingBibTeXCode()
         /// ensure proper treatment of UTF-8 characters
         const QString bibTeXcode = QString::fromUtf8(reply->readAll().constData());
 
-        FileImporterBibTeX importer;
+        FileImporterBibTeX importer(this);
         File *bibtexFile = importer.fromString(bibTeXcode);
         int numFoundResults = 0;
         if (bibtexFile != nullptr) {
diff --git a/src/networking/onlinesearch/onlinesearchmathscinet.cpp \
b/src/networking/onlinesearch/onlinesearchmathscinet.cpp index 31f5fa09..c2627b88 \
                100644
--- a/src/networking/onlinesearch/onlinesearchmathscinet.cpp
+++ b/src/networking/onlinesearch/onlinesearchmathscinet.cpp
@@ -221,7 +221,7 @@ void OnlineSearchMathSciNet::doneFetchingBibTeXcode()
             bibtexCode += QLatin1Char('\n');
         }
 
-        FileImporterBibTeX importer;
+        FileImporterBibTeX importer(this);
         const File *bibtexFile = importer.fromString(bibtexCode);
 
         bool hasEntry = false;
diff --git a/src/networking/onlinesearch/onlinesearchmrlookup.cpp \
b/src/networking/onlinesearch/onlinesearchmrlookup.cpp index 4c548bee..0140d609 \
                100644
--- a/src/networking/onlinesearch/onlinesearchmrlookup.cpp
+++ b/src/networking/onlinesearch/onlinesearchmrlookup.cpp
@@ -98,7 +98,7 @@ void OnlineSearchMRLookup::doneFetchingResultPage()
             bibtexCode += QLatin1Char('\n');
         }
 
-        FileImporterBibTeX importer;
+        FileImporterBibTeX importer(this);
         File *bibtexFile = importer.fromString(bibtexCode);
 
         bool hasEntry = false;
diff --git a/src/networking/onlinesearch/onlinesearchpubmed.cpp \
b/src/networking/onlinesearch/onlinesearchpubmed.cpp index 66c8d343..23342020 100644
--- a/src/networking/onlinesearch/onlinesearchpubmed.cpp
+++ b/src/networking/onlinesearch/onlinesearchpubmed.cpp
@@ -206,7 +206,7 @@ void OnlineSearchPubMed::eFetchDone()
             if (bibTeXcode[0] == '<')
                 bibTeXcode = bibTeXcode.mid(bibTeXcode.indexOf(QStringLiteral(">")) \
+ 1);  
-            FileImporterBibTeX importer;
+            FileImporterBibTeX importer(this);
             File *bibtexFile = importer.fromString(bibTeXcode);
 
             if (bibtexFile != nullptr) {
diff --git a/src/networking/onlinesearch/onlinesearchsciencedirect.cpp \
b/src/networking/onlinesearch/onlinesearchsciencedirect.cpp index b6f5adfa..c474a3c7 \
                100644
--- a/src/networking/onlinesearch/onlinesearchsciencedirect.cpp
+++ b/src/networking/onlinesearch/onlinesearchsciencedirect.cpp
@@ -275,7 +275,7 @@ void OnlineSearchScienceDirect::doneFetchingBibTeX()
         QString bibTeXcode = QString::fromUtf8(reply->readAll().constData());
         d->sanitizeBibTeXCode(bibTeXcode);
 
-        FileImporterBibTeX importer;
+        FileImporterBibTeX importer(this);
         File *bibtexFile = importer.fromString(bibTeXcode);
 
         bool hasEntry = false;
diff --git a/src/networking/onlinesearch/onlinesearchsimplebibtexdownload.cpp \
b/src/networking/onlinesearch/onlinesearchsimplebibtexdownload.cpp index \
                574a5de0..3ba32300 100644
--- a/src/networking/onlinesearch/onlinesearchsimplebibtexdownload.cpp
+++ b/src/networking/onlinesearch/onlinesearchsimplebibtexdownload.cpp
@@ -77,7 +77,7 @@ void OnlineSearchSimpleBibTeXDownload::downloadDone()
         }
 
         if (!bibTeXcode.isEmpty()) {
-            FileImporterBibTeX importer;
+            FileImporterBibTeX importer(this);
             File *bibtexFile = importer.fromString(bibTeXcode);
 
             bool hasEntries = false;
diff --git a/src/networking/onlinesearch/onlinesearchspringerlink.cpp \
b/src/networking/onlinesearch/onlinesearchspringerlink.cpp index 350ea4b4..e8aa00de \
                100644
--- a/src/networking/onlinesearch/onlinesearchspringerlink.cpp
+++ b/src/networking/onlinesearch/onlinesearchspringerlink.cpp
@@ -299,7 +299,7 @@ void OnlineSearchSpringerLink::doneFetchingPAM()
             qCWarning(LOG_KBIBTEX_NETWORKING) << "XSL tranformation failed for data \
from " << reply->url().toDisplayString();  stopSearch(resultInvalidArguments);
         } else {
-            FileImporterBibTeX importer;
+            FileImporterBibTeX importer(this);
             const File *bibtexFile = importer.fromString(bibTeXcode);
 
             bool hasEntries = false;
diff --git a/src/networking/zotero/items.cpp b/src/networking/zotero/items.cpp
index 8bb39004..47e9c3e8 100644
--- a/src/networking/zotero/items.cpp
+++ b/src/networking/zotero/items.cpp
@@ -130,7 +130,7 @@ void Items::finishedFetchingItems()
         const QString bibTeXcode = QString::fromUtf8(reply->readAll().constData());
         /// Non-empty result?
         if (!bibTeXcode.isEmpty()) {
-            static FileImporterBibTeX importer;
+            static FileImporterBibTeX importer(this);
             /// Parse text into bibliography object
             File *bibtexFile = importer.fromString(bibTeXcode);
 
diff --git a/src/parts/part.cpp b/src/parts/part.cpp
index 67f2d12d..dc9bc24e 100644
--- a/src/parts/part.cpp
+++ b/src/parts/part.cpp
@@ -275,45 +275,47 @@ public:
 
     FileImporter *fileImporterFactory(const QUrl &url) {
         QString ending = url.path().toLower();
-        int p = ending.lastIndexOf(QStringLiteral("."));
-        ending = ending.mid(p + 1);
+        const auto pos = ending.lastIndexOf(QStringLiteral("."));
+        ending = ending.mid(pos + 1);
 
         if (ending == QStringLiteral("pdf")) {
-            return new FileImporterPDF();
+            return new FileImporterPDF(p);
         } else if (ending == QStringLiteral("ris")) {
-            return new FileImporterRIS();
+            return new FileImporterRIS(p);
         } else if (BibUtils::available() && ending == QStringLiteral("isi")) {
-            FileImporterBibUtils *fileImporterBibUtils = new FileImporterBibUtils();
+            FileImporterBibUtils *fileImporterBibUtils = new \
FileImporterBibUtils(p);  fileImporterBibUtils->setFormat(BibUtils::ISI);
             return fileImporterBibUtils;
         } else {
-            return new FileImporterBibTeX(false);
+            FileImporterBibTeX *fileImporterBibTeX = new FileImporterBibTeX(p);
+            fileImporterBibTeX->setCommentHandling(FileImporterBibTeX::KeepComments);
 +            return fileImporterBibTeX;
         }
     }
 
     FileExporter *fileExporterFactory(const QString &ending) {
         if (ending == QStringLiteral("html")) {
-            return new FileExporterXSLT();
+            return new FileExporterHTML(p);
         } else if (ending == QStringLiteral("xml")) {
-            return new FileExporterXML();
+            return new FileExporterXML(p);
         } else if (ending == QStringLiteral("ris")) {
-            return new FileExporterRIS();
+            return new FileExporterRIS(p);
         } else if (ending == QStringLiteral("pdf")) {
-            return new FileExporterPDF();
+            return new FileExporterPDF(p);
         } else if (ending == QStringLiteral("ps")) {
-            return new FileExporterPS();
+            return new FileExporterPS(p);
         } else if (BibUtils::available() && ending == QStringLiteral("isi")) {
-            FileExporterBibUtils *fileExporterBibUtils = new FileExporterBibUtils();
+            FileExporterBibUtils *fileExporterBibUtils = new \
FileExporterBibUtils(p);  fileExporterBibUtils->setFormat(BibUtils::ISI);
             return fileExporterBibUtils;
         } else if (ending == QStringLiteral("rtf")) {
-            return new FileExporterRTF();
+            return new FileExporterRTF(p);
         } else if (ending == QStringLiteral("html") || ending == \
                QStringLiteral("htm")) {
-            return new FileExporterBibTeX2HTML();
+            return new FileExporterBibTeX2HTML(p);
         } else if (ending == QStringLiteral("bbl")) {
-            return new \
FileExporterBibTeXOutput(FileExporterBibTeXOutput::BibTeXBlockList); +            \
return new FileExporterBibTeXOutput(FileExporterBibTeXOutput::BibTeXBlockList, p);  } \
                else {
-            return new FileExporterBibTeX();
+            return new FileExporterBibTeX(p);
         }
     }
 
diff --git a/src/processing/checkbibtex.cpp b/src/processing/checkbibtex.cpp
index d5dc5c59..60f0a88b 100644
--- a/src/processing/checkbibtex.cpp
+++ b/src/processing/checkbibtex.cpp
@@ -74,7 +74,7 @@ CheckBibTeX::CheckBibTeXResult \
CheckBibTeX::checkBibTeX(QSharedPointer<Entry> &e  QByteArray ba;
     QBuffer buffer(&ba);
     buffer.open(QIODevice::WriteOnly);
-    FileExporterBibTeXOutput exporter(FileExporterBibTeXOutput::BibTeXLogFile);
+    FileExporterBibTeXOutput exporter(FileExporterBibTeXOutput::BibTeXLogFile, \
                parent);
     bool exporterResult = exporter.save(&buffer, &dummyFile, &bibtexOuput);
     buffer.close();
 
diff --git a/src/program/docklets/referencepreview.cpp \
b/src/program/docklets/referencepreview.cpp index d20b299c..753912e4 100644
--- a/src/program/docklets/referencepreview.cpp
+++ b/src/program/docklets/referencepreview.cpp
@@ -254,24 +254,22 @@ void ReferencePreview::renderHTML()
 
     if (previewStyle.type == QStringLiteral("exporter")) {
         if (previewStyle.style == QStringLiteral("bibtex")) {
-            FileExporterBibTeX *exporterBibTeX = new FileExporterBibTeX();
+            FileExporterBibTeX *exporterBibTeX = new FileExporterBibTeX(this);
             exporterBibTeX->setEncoding(QStringLiteral("utf-8"));
             exporter = exporterBibTeX;
         } else if (previewStyle.style == QStringLiteral("ris"))
-            exporter = new FileExporterRIS();
+            exporter = new FileExporterRIS(this);
         else
             qCWarning(LOG_KBIBTEX_PROGRAM) << "Don't know how to handle output style \
" << previewStyle.style << " for type " << previewStyle.type;  } else if \
(previewStyle.type == QStringLiteral("bibtex2html")) {  crossRefHandling = merge;
-        FileExporterBibTeX2HTML *exporterHTML = new FileExporterBibTeX2HTML();
+        FileExporterBibTeX2HTML *exporterHTML = new FileExporterBibTeX2HTML(this);
         exporterHTML->setLaTeXBibliographyStyle(previewStyle.style);
         exporter = exporterHTML;
     } else if (previewStyle.type == QStringLiteral("xml") || \
previewStyle.type.endsWith(QStringLiteral("_xml"))) {  crossRefHandling = merge;
-        FileExporterXSLT *exporterXSLT = new FileExporterXSLT();
-        QString filename = previewStyle.style + ".xsl";
-        exporterXSLT->setXSLTFilename(QStandardPaths::locate(QStandardPaths::GenericDataLocation, \
                QStringLiteral("kbibtex/") + filename));
-        exporter = exporterXSLT;
+        const QString filename = previewStyle.style + ".xsl";
+        exporter = new \
FileExporterXSLT(QStandardPaths::locate(QStandardPaths::GenericDataLocation, \
QStringLiteral("kbibtex/") + filename), this);  } else
         qCWarning(LOG_KBIBTEX_PROGRAM) << "Don't know how to handle output type " << \
previewStyle.type;  
diff --git a/src/test/kbibtexfilestest.cpp b/src/test/kbibtexfilestest.cpp
index 5273a176..cbf6d1ff 100644
--- a/src/test/kbibtexfilestest.cpp
+++ b/src/test/kbibtexfilestest.cpp
@@ -138,9 +138,10 @@ void KBibTeXFilesTest::loadFile(const QString &absoluteFilename, \
const TestFile  {
     *outFile = nullptr;
 
-    FileImporter *importer = nullptr;
+    FileImporterBibTeX *importer = nullptr;
     if (currentTestFile.filename.endsWith(QStringLiteral(".bib"))) {
-        importer = new FileImporterBibTeX(false);
+        importer = new FileImporterBibTeX(this);
+        importer->setCommentHandling(FileImporterBibTeX::KeepComments);
     } else {
         QFAIL(qPrintable(QString::fromLatin1("Don't know format of \
'%1'").arg(currentTestFile.filename)));  }
@@ -244,7 +245,7 @@ void KBibTeXFilesTest::saveFile(File *file, const TestFile \
&currentTestFile, QSt  
     FileExporter *exporter = nullptr;
     if (currentTestFile.filename.endsWith(QStringLiteral(".bib"))) {
-        FileExporterBibTeX *bibTeXExporter = new FileExporterBibTeX();
+        FileExporterBibTeX *bibTeXExporter = new FileExporterBibTeX(this);
         bibTeXExporter->setEncoding(QStringLiteral("utf-8"));
         exporter = bibTeXExporter;
     } else {


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic