#!/usr/bin/env python
# --!-- coding: utf8 --!--
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 manuskript.functions import safeTranslate
from PyQt5.QtWidgets import qApp
class pandocImporter(abstractImporter):
formatFrom = ""
engine = "Pandoc"
extraArgs = []
@classmethod
def isValid(cls):
return pandocExporter().isValid()
def startImport(self, filePath, parentItem, settingsWidget):
formatTo = self.getSetting("formatTo").value().lower()
wrap = self.getSetting("wrap").value().lower()
# pandoc --from=markdown filename --to=opml --standalone
args = [
"--from={}".format(self.formatFrom),
filePath,
"--to={}".format(formatTo),
"--wrap={}".format(wrap),
]
if formatTo == "opml":
args.append("--standalone")
args += self.extraArgs
r = pandocExporter().run(args)
if r == None:
return None
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),
safeTranslate(qApp, "Import", "Pandoc import"))
self.addSetting("info", "label",
safeTranslate(qApp, "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",
safeTranslate(qApp, "Import", "Import using:"),
vals="markdown|OPML")
self.addSetting("wrap", "combo",
safeTranslate(qApp, "Import", "Wrap lines:"),
vals="auto|none|preserve",
default="none",
tooltip=safeTranslate(qApp, "Import", """
Should pandoc create cosmetic / non-semantic line-breaks?
auto: wraps at 72 characters.
none: no line wrap.
preserve: tries to preserves line wrap from the
original document.