mirror of
https://github.com/olivierkes/manuskript.git
synced 2024-05-21 21:32:26 +12:00
Corrects things in manuskript exporter
This commit is contained in:
parent
dc82ef6a19
commit
26c42a56f1
|
@ -4,7 +4,7 @@ from PyQt5.QtCore import Qt
|
|||
from PyQt5.QtWebKitWidgets import QWebView
|
||||
from PyQt5.QtWidgets import QPlainTextEdit, qApp, QTabWidget, QFrame
|
||||
|
||||
from manuskript.exporter.manuskript.markdown import markdown
|
||||
from manuskript.exporter.manuskript.markdown import markdown, markdownSettings
|
||||
from manuskript.ui.exporters.manuskript.plainTextSettings import exporterSettings
|
||||
|
||||
try:
|
||||
|
@ -21,18 +21,15 @@ class HTML(markdown):
|
|||
exportVarName = "lastManuskriptHTML"
|
||||
exportFilter = "HTML files (*.html);; Any files (*)"
|
||||
|
||||
@classmethod
|
||||
def isValid(cls):
|
||||
def isValid(self):
|
||||
return MD is not None
|
||||
|
||||
@classmethod
|
||||
def settingsWidget(cls):
|
||||
w = exporterSettings(cls)
|
||||
def settingsWidget(self):
|
||||
w = markdownSettings(self)
|
||||
w.loadSettings()
|
||||
return w
|
||||
|
||||
@classmethod
|
||||
def previewWidget(cls):
|
||||
def previewWidget(self):
|
||||
t = QTabWidget()
|
||||
t.setDocumentMode(True)
|
||||
t.setStyleSheet("""
|
||||
|
@ -60,24 +57,23 @@ class HTML(markdown):
|
|||
t.setCurrentIndex(2)
|
||||
return t
|
||||
|
||||
@classmethod
|
||||
def output(cls, settings):
|
||||
html = MD.markdown(markdown.output(settings))
|
||||
def output(self, settings):
|
||||
html = MD.markdown(markdown.output(self, settings))
|
||||
return html
|
||||
|
||||
@classmethod
|
||||
def preview(cls, settingsWidget, previewWidget):
|
||||
def preview(self, settingsWidget, previewWidget):
|
||||
settings = settingsWidget.getSettings()
|
||||
|
||||
# Save settings
|
||||
settingsWidget.writeSettings()
|
||||
|
||||
md = markdown.output(settings)
|
||||
md = markdown.output(self, settings)
|
||||
html = MD.markdown(md)
|
||||
|
||||
cls.preparesTextEditView(previewWidget.widget(0), settings["Preview"]["PreviewFont"])
|
||||
self.preparesTextEditView(previewWidget.widget(0), settings["Preview"]["PreviewFont"])
|
||||
self.preparesTextEditViewMarkdown(previewWidget.widget(0), settings)
|
||||
previewWidget.widget(0).setPlainText(md)
|
||||
cls.preparesTextEditView(previewWidget.widget(1), settings["Preview"]["PreviewFont"])
|
||||
self.preparesTextEditView(previewWidget.widget(1), settings["Preview"]["PreviewFont"])
|
||||
previewWidget.widget(1).setPlainText(html)
|
||||
previewWidget.widget(2).setHtml(html)
|
||||
|
||||
|
|
|
@ -13,9 +13,9 @@ class manuskriptExporter(basicExporter):
|
|||
name = "Manuskript"
|
||||
description = qApp.translate("Export", "Default exporter, provides basic formats used by other exporters.")
|
||||
exportTo = [
|
||||
plainText,
|
||||
markdown,
|
||||
HTML,
|
||||
plainText(),
|
||||
markdown(),
|
||||
HTML(),
|
||||
basicFormat("OPML", icon="text-x-opml+xml")
|
||||
]
|
||||
|
||||
|
|
|
@ -18,51 +18,31 @@ class markdown(plainText):
|
|||
exportFilter = "Markdown files (*.md);; Any files (*)"
|
||||
icon = "text-x-markdown"
|
||||
|
||||
@classmethod
|
||||
def settingsWidget(cls):
|
||||
w = markdownSettings(cls)
|
||||
def settingsWidget(self):
|
||||
w = markdownSettings(self)
|
||||
w.loadSettings()
|
||||
return w
|
||||
|
||||
@classmethod
|
||||
def preview(cls, settingsWidget, previewWidget):
|
||||
# plainText.preview(settingsWidget, previewWidget)
|
||||
# Don't know why, if I call superclass here, then concatenate does not call this processTitle function,
|
||||
# But that of of plainText.
|
||||
|
||||
# ---------------------------
|
||||
# From plainText:
|
||||
def preparesTextEditViewMarkdown(self, view, settings):
|
||||
if settings["Preview"]["MarkdownHighlighter"]:
|
||||
self.highlighter = MMDHighlighter(view)
|
||||
else:
|
||||
self.highlighter = None
|
||||
|
||||
def preview(self, settingsWidget, previewWidget):
|
||||
settings = settingsWidget.getSettings()
|
||||
|
||||
# Save settings
|
||||
settingsWidget.writeSettings()
|
||||
|
||||
# ---------------------------
|
||||
# Specific to markdown
|
||||
|
||||
s = settingsWidget.settings
|
||||
if s["Preview"]["MarkdownHighlighter"]:
|
||||
cls.highlighter = MMDHighlighter(previewWidget)
|
||||
else:
|
||||
cls.highlighter = None
|
||||
|
||||
# ---------------------------
|
||||
# From plainText:
|
||||
|
||||
r = cls.concatenate(mainWindow().mdlOutline.rootItem, settings)
|
||||
|
||||
# Set preview font
|
||||
cf = QTextCharFormat()
|
||||
f = QFont()
|
||||
f.fromString(settings["Preview"]["PreviewFont"])
|
||||
cf.setFont(f)
|
||||
previewWidget.setCurrentCharFormat(cf)
|
||||
# Prepares text edit
|
||||
self.preparesTextEditViewMarkdown(previewWidget, settingsWidget.settings)
|
||||
self.preparesTextEditView(previewWidget, settings["Preview"]["PreviewFont"])
|
||||
|
||||
r = self.concatenate(mainWindow().mdlOutline.rootItem, settings)
|
||||
previewWidget.setPlainText(r)
|
||||
|
||||
@classmethod
|
||||
def processTitle(cls, text, level, settings):
|
||||
def processTitle(self, text, level, settings):
|
||||
return "{} {}\n".format(
|
||||
"#" * (level + 1),
|
||||
text
|
||||
|
|
|
@ -21,36 +21,34 @@ class plainText(basicFormat):
|
|||
}
|
||||
icon = "text-plain"
|
||||
|
||||
# Default settings used in cls.getExportFilename. For easy subclassing when exporting plaintext.
|
||||
# Default settings used in self.getExportFilename. For easy subclassing when exporting plaintext.
|
||||
exportVarName = "lastPlainText"
|
||||
exportFilter = "Text files (*.txt);; Any files (*)"
|
||||
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
@classmethod
|
||||
def settingsWidget(cls):
|
||||
w = exporterSettings(cls)
|
||||
def settingsWidget(self):
|
||||
w = exporterSettings(self)
|
||||
w.loadSettings()
|
||||
return w
|
||||
|
||||
@classmethod
|
||||
def previewWidget(cls):
|
||||
def previewWidget(self):
|
||||
w = QPlainTextEdit()
|
||||
w.setFrameShape(QFrame.NoFrame)
|
||||
w.setReadOnly(True)
|
||||
return w
|
||||
|
||||
@classmethod
|
||||
def output(cls, settings):
|
||||
return cls.concatenate(mainWindow().mdlOutline.rootItem, settings)
|
||||
def output(self, settings):
|
||||
return self.concatenate(mainWindow().mdlOutline.rootItem, settings)
|
||||
|
||||
@classmethod
|
||||
def getExportFilename(cls, settingsWidget, varName=None, filter=None):
|
||||
def getExportFilename(self, settingsWidget, varName=None, filter=None):
|
||||
|
||||
if varName is None:
|
||||
varName = cls.exportVarName
|
||||
varName = self.exportVarName
|
||||
|
||||
if filter is None:
|
||||
filter = cls.exportFilter
|
||||
filter = self.exportFilter
|
||||
|
||||
settings = settingsWidget.getSettings()
|
||||
|
||||
|
@ -87,41 +85,37 @@ class plainText(basicFormat):
|
|||
|
||||
return filename
|
||||
|
||||
@classmethod
|
||||
def export(cls, settingsWidget):
|
||||
def export(self, settingsWidget):
|
||||
settings = settingsWidget.getSettings()
|
||||
settingsWidget.writeSettings()
|
||||
|
||||
filename = cls.getExportFilename(settingsWidget)
|
||||
filename = self.getExportFilename(settingsWidget)
|
||||
settingsWidget.writeSettings()
|
||||
|
||||
if filename:
|
||||
with open(filename, "w") as f:
|
||||
f.write(cls.output(settingsWidget.settings))
|
||||
f.write(self.output(settingsWidget.settings))
|
||||
|
||||
@classmethod
|
||||
def preview(cls, settingsWidget, previewWidget):
|
||||
def preview(self, settingsWidget, previewWidget):
|
||||
settings = settingsWidget.getSettings()
|
||||
|
||||
# Save settings
|
||||
settingsWidget.writeSettings()
|
||||
|
||||
r = cls.output(settings)
|
||||
r = self.output(settings)
|
||||
|
||||
# Set preview font
|
||||
cls.preparesTextEditView(previewWidget, settings["Preview"]["PreviewFont"])
|
||||
self.preparesTextEditView(previewWidget, settings["Preview"]["PreviewFont"])
|
||||
|
||||
previewWidget.setPlainText(r)
|
||||
|
||||
@classmethod
|
||||
def preparesTextEditView(cls, view, textFont):
|
||||
def preparesTextEditView(self, view, textFont):
|
||||
cf = QTextCharFormat()
|
||||
f = QFont()
|
||||
f.fromString(textFont)
|
||||
cf.setFont(f)
|
||||
view.setCurrentCharFormat(cf)
|
||||
|
||||
@classmethod
|
||||
def concatenate(cls, item: outlineItem, settings) -> str:
|
||||
def concatenate(self, item: outlineItem, settings) -> str:
|
||||
s = settings
|
||||
r = ""
|
||||
|
||||
|
@ -137,18 +131,18 @@ class plainText(basicFormat):
|
|||
if not s["Content"]["More"] and s["Content"]["FolderTitle"] or\
|
||||
s["Content"]["More"] and s["Content"]["FolderTitle"][l]:
|
||||
|
||||
r += cls.processTitle(item.title(), l, settings)
|
||||
r += self.processTitle(item.title(), l, settings)
|
||||
|
||||
elif item.isText():
|
||||
if not s["Content"]["More"] and s["Content"]["TextTitle"] or \
|
||||
s["Content"]["More"] and s["Content"]["TextTitle"][l]:
|
||||
|
||||
r += cls.processTitle(item.title(), l, settings)
|
||||
r += self.processTitle(item.title(), l, settings)
|
||||
|
||||
if not s["Content"]["More"] and s["Content"]["TextText"] or \
|
||||
s["Content"]["More"] and s["Content"]["TextText"][l]:
|
||||
|
||||
r += cls.processText(item.text(), settings)
|
||||
r += self.processText(item.text(), settings)
|
||||
|
||||
content = ""
|
||||
|
||||
|
@ -171,21 +165,19 @@ class plainText(basicFormat):
|
|||
elif last == "md" and c.type() == "folder":
|
||||
content += s["Separator"]["TF"]
|
||||
|
||||
content += cls.concatenate(c, settings)
|
||||
content += self.concatenate(c, settings)
|
||||
|
||||
last = c.type()
|
||||
|
||||
# r += cls.processContent(content, settings)
|
||||
# r += self.processContent(content, settings)
|
||||
r += content
|
||||
|
||||
return r
|
||||
|
||||
@classmethod
|
||||
def processTitle(cls, text, level, settings):
|
||||
def processTitle(self, text, level, settings):
|
||||
return text + "\n"
|
||||
|
||||
@classmethod
|
||||
def processText(cls, content, settings):
|
||||
def processText(self, content, settings):
|
||||
s = settings["Transform"]
|
||||
|
||||
if s["Dash"]:
|
||||
|
|
Loading…
Reference in a new issue