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):