manuskript/manuskript/exporter/manuskript/markdown.py

77 lines
2.7 KiB
Python
Raw Normal View History

2016-04-07 23:17:14 +12:00
#!/usr/bin/env python
# --!-- coding: utf8 --!--
from PyQt5.QtGui import QTextCharFormat, QFont
from PyQt5.QtWidgets import QPlainTextEdit, QGroupBox, qApp, QVBoxLayout, QCheckBox
from manuskript.exporter.manuskript.plainText import plainText
from manuskript.functions import mainWindow, safeTranslate
from manuskript.ui.highlighters import MMDHighlighter
2016-04-07 23:17:14 +12:00
from manuskript.ui.exporters.manuskript.plainTextSettings import exporterSettings
class markdown(plainText):
2016-04-08 00:47:29 +12:00
name = "Markdown"
description = safeTranslate(qApp, "Export", """Just like plain text, excepts adds markdown titles.
2016-04-08 00:27:51 +12:00
Presupposes that texts are formatted in markdown.""")
2016-04-07 23:17:14 +12:00
2016-04-08 22:02:50 +12:00
exportVarName = "lastManuskriptMarkdown"
exportFilter = "Markdown files (*.md);; Any files (*)"
exportDefaultSuffix = ".md"
2016-04-08 22:48:19 +12:00
icon = "text-x-markdown"
2016-04-08 22:02:50 +12:00
2016-04-15 00:30:42 +12:00
def settingsWidget(self):
w = markdownSettings(self)
2016-04-07 23:17:14 +12:00
w.loadSettings()
return w
2016-04-15 00:30:42 +12:00
def preparesTextEditViewMarkdown(self, view, settings):
if settings["Preview"]["MarkdownHighlighter"]:
self.highlighter = MMDHighlighter(view)
else:
self.highlighter = None
2016-04-07 23:17:14 +12:00
2016-04-15 00:30:42 +12:00
def preview(self, settingsWidget, previewWidget):
2016-04-07 23:17:14 +12:00
settings = settingsWidget.getSettings()
# Save settings
settingsWidget.writeSettings()
2016-04-15 00:30:42 +12:00
# Prepares text edit
self.preparesTextEditViewMarkdown(previewWidget, settingsWidget.settings)
self.preparesTextEditView(previewWidget, settings["Preview"]["PreviewFont"])
2016-04-07 23:17:14 +12:00
2016-04-15 21:58:09 +12:00
previewWidget.setPlainText(self.output(settingsWidget))
2016-04-07 23:17:14 +12:00
2016-04-15 00:30:42 +12:00
def processTitle(self, text, level, settings):
2016-04-07 23:17:14 +12:00
return "{} {}\n".format(
"#" * (level + 1),
text
)
class markdownSettings(exporterSettings):
def __init__(self, _format, parent=None):
exporterSettings.__init__(self, _format, parent)
# Adds markdown syntax highlighter setting
w = self.toolBox.widget(self.toolBox.count() - 1)
self.grpMarkdown = QGroupBox(self.tr("Markdown"))
self.grpMarkdown.setLayout(QVBoxLayout())
self.chkMarkdownHighlighter = QCheckBox(safeTranslate(qApp, "Export", "Preview with highlighter."))
2016-04-07 23:17:14 +12:00
self.grpMarkdown.layout().addWidget(self.chkMarkdownHighlighter)
w.layout().insertWidget(w.layout().count() - 1, self.grpMarkdown)
def updateFromSettings(self):
exporterSettings.updateFromSettings(self)
s = self.settings["Preview"]
val = s.get("MarkdownHighlighter", False)
self.chkMarkdownHighlighter.setChecked(val)
def getSettings(self):
self.settings = exporterSettings.getSettings(self)
self.settings["Preview"]["MarkdownHighlighter"] = self.chkMarkdownHighlighter.isChecked()
return self.settings