Corrects things in manuskript exporter

This commit is contained in:
Olivier Keshavjee 2016-04-14 14:30:42 +02:00
parent dc82ef6a19
commit 26c42a56f1
4 changed files with 55 additions and 87 deletions

View file

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

View file

@ -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")
]

View file

@ -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

View file

@ -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"]: