diff --git a/manuskript/importer/markdownImporter.py b/manuskript/importer/markdownImporter.py
index 69df32cc..089aec06 100644
--- a/manuskript/importer/markdownImporter.py
+++ b/manuskript/importer/markdownImporter.py
@@ -1,7 +1,6 @@
#!/usr/bin/env python
# --!-- coding: utf8 --!--
-from manuskript.importer.abstractImporter import abstractImporter
from manuskript.importer.abstractImporter import abstractImporter
from manuskript.models.outlineModel import outlineItem
from manuskript.enums import Outline
@@ -62,9 +61,12 @@ class markdownImporter(abstractImporter):
```
"""
- # Read file
- with open(filePath, "r") as f:
- txt = f.read()
+ if not fromString:
+ # Read file
+ with open(filePath, "r") as f:
+ txt = f.read()
+ else:
+ txt = fromString
items = []
diff --git a/manuskript/importer/pandocImporters.py b/manuskript/importer/pandocImporters.py
index c23eefc2..c81c8c74 100644
--- a/manuskript/importer/pandocImporters.py
+++ b/manuskript/importer/pandocImporters.py
@@ -4,6 +4,9 @@
from manuskript.importer.abstractImporter import abstractImporter
from manuskript.exporter.pandoc import pandocExporter
from manuskript.importer.opmlImporter import opmlImporter
+from manuskript.importer.markdownImporter import markdownImporter
+from PyQt5.QtWidgets import qApp
+
class pandocImporter(abstractImporter):
@@ -13,21 +16,57 @@ class pandocImporter(abstractImporter):
def isValid(cls):
return pandocExporter().isValid()
- @classmethod
- def startImport(cls, filePath, parentItem, settingsWidget):
+ def startImport(self, filePath, parentItem, settingsWidget):
+
+ formatTo = self.getSetting("formatTo").value().lower()
# pandoc --from=markdown filename --to=opml --standalone
args = [
- "--from={}".format(cls.formatFrom),
+ "--from={}".format(self.formatFrom),
filePath,
- "--to=opml",
+ "--to={}".format(formatTo),
"--standalone"
]
r = pandocExporter().run(args)
- return opmlImporter.startImport("", parentItem,
- settingsWidget, fromString=r)
+ if formatTo == "opml":
+ return self.opmlImporter.startImport("", parentItem,
+ settingsWidget, fromString=r)
+ elif formatTo == "markdown":
+ return self.mdImporter.startImport(filePath, parentItem,
+ settingsWidget, fromString=r)
+
+ def settingsWidget(self, widget):
+ """
+ Takes a QWidget that can be modified and must be returned.
+ """
+
+ # Add group
+ group = self.addGroup(widget.toolBox.widget(0),
+ qApp.translate("Import", "Pandoc import"))
+
+ self.addSetting("info", "label",
+ qApp.translate("Import", """Info: Manuskript can
+ import from markdown or OPML. Pandoc will
+ convert your document to either (see option below), and
+ then it will be imported in manuskript. One or the other
+ might give better result depending on your document.
+
"""))
+
+ self.addSetting("formatTo", "combo",
+ qApp.translate("Import", "Import using:"),
+ vals="markdown|OPML")
+
+ for s in self.settings:
+ self.settings[s].widget(group)
+
+ self.mdImporter = markdownImporter()
+ widget = self.mdImporter.settingsWidget(widget)
+ self.opmlImporter = opmlImporter()
+ widget = self.opmlImporter.settingsWidget(widget)
+
+ return widget
class markdownPandocImporter(pandocImporter):