mirror of
https://github.com/olivierkes/manuskript.git
synced 2024-05-17 11:22:28 +12:00
Adds: import with pandoc through either OPML or markdown. #200
This commit is contained in:
parent
34b55b511c
commit
9c99d186e5
|
@ -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 = []
|
||||
|
||||
|
|
|
@ -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", """<b>Info:</b> Manuskript can
|
||||
import from <b>markdown</b> or <b>OPML</b>. 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.
|
||||
<br/> """))
|
||||
|
||||
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):
|
||||
|
|
Loading…
Reference in a new issue