manuskript/manuskript/exporter/manuskript/HTML.py

90 lines
2.8 KiB
Python
Raw Normal View History

2016-04-08 00:27:51 +12:00
#!/usr/bin/env python
# --!-- coding: utf8 --!--
from PyQt5.QtCore import Qt, QUrl
from PyQt5.QtWidgets import QPlainTextEdit, qApp, QTabWidget, QFrame, QTextEdit
2016-04-08 00:27:51 +12:00
2016-04-15 00:30:42 +12:00
from manuskript.exporter.manuskript.markdown import markdown, markdownSettings
from manuskript.ui.views.webView import webView
2016-04-08 00:27:51 +12:00
from manuskript.ui.exporters.manuskript.plainTextSettings import exporterSettings
from manuskript.functions import safeTranslate
import os
2016-04-08 00:27:51 +12:00
try:
import markdown as MD
except ImportError:
MD = None
class HTML(markdown):
2016-04-08 00:47:29 +12:00
name = "HTML"
description = safeTranslate(qApp, "Export", "Basic HTML output using the Python module 'markdown'.")
InvalidBecause = safeTranslate(qApp, "Export", "Python module 'markdown'.")
2016-04-08 22:48:19 +12:00
icon = "text-html"
2016-04-08 00:27:51 +12:00
2016-04-08 22:02:50 +12:00
exportVarName = "lastManuskriptHTML"
exportFilter = "HTML files (*.html);; Any files (*)"
exportDefaultSuffix = ".html"
2016-04-08 22:02:50 +12:00
2016-04-15 00:30:42 +12:00
def isValid(self):
2021-02-22 11:45:34 +13:00
return MD != None
2016-04-08 00:27:51 +12:00
2016-04-15 00:30:42 +12:00
def settingsWidget(self):
w = markdownSettings(self)
2016-04-08 00:27:51 +12:00
w.loadSettings()
return w
2016-04-15 00:30:42 +12:00
def previewWidget(self):
2016-04-08 00:27:51 +12:00
t = QTabWidget()
t.setDocumentMode(True)
t.setStyleSheet("""
QTabBar::tab{
background-color: #BBB;
2016-04-08 22:02:50 +12:00
padding: 3px 25px;
2016-04-08 00:27:51 +12:00
border: none;
}
2016-04-08 22:02:50 +12:00
QTabBar::tab:selected, QTabBar::tab:hover{
2016-04-08 00:27:51 +12:00
background-color:skyblue;
}
""")
2016-04-08 22:02:50 +12:00
w0 = QPlainTextEdit()
w0.setFrameShape(QFrame.NoFrame)
w0.setReadOnly(True)
2016-04-08 00:27:51 +12:00
w1 = QPlainTextEdit()
w1.setFrameShape(QFrame.NoFrame)
w1.setReadOnly(True)
t.addTab(w0, safeTranslate(qApp, "Export", "Markdown source"))
t.addTab(w1, safeTranslate(qApp, "Export", "HTML Source"))
if webView:
w2 = webView()
t.addTab(w2, safeTranslate(qApp, "Export", "HTML Output"))
2016-04-08 22:02:50 +12:00
t.setCurrentIndex(2)
2016-04-08 00:27:51 +12:00
return t
2016-04-15 21:58:09 +12:00
def output(self, settingsWidget):
html = MD.markdown(markdown.output(self, settingsWidget))
2016-04-08 22:02:50 +12:00
return html
2016-04-15 00:30:42 +12:00
def preview(self, settingsWidget, previewWidget):
2016-04-08 00:27:51 +12:00
settings = settingsWidget.getSettings()
# Save settings
settingsWidget.writeSettings()
2016-04-15 21:58:09 +12:00
md = markdown.output(self, settingsWidget)
2016-04-08 22:02:50 +12:00
html = MD.markdown(md)
path = os.path.join(self.projectPath(), "dummy.html")
2016-04-08 00:27:51 +12:00
2016-04-15 00:30:42 +12:00
self.preparesTextEditView(previewWidget.widget(0), settings["Preview"]["PreviewFont"])
self.preparesTextEditViewMarkdown(previewWidget.widget(0), settings)
2016-04-08 22:02:50 +12:00
previewWidget.widget(0).setPlainText(md)
2016-04-15 00:30:42 +12:00
self.preparesTextEditView(previewWidget.widget(1), settings["Preview"]["PreviewFont"])
2016-04-08 00:27:51 +12:00
previewWidget.widget(1).setPlainText(html)
w2 = previewWidget.widget(2)
if isinstance(w2, QTextEdit):
w2.setHtml(html)
else:
w2.setHtml(html, QUrl.fromLocalFile(path))