eric7/UI/Previewers/PreviewerHTML.py

Sun, 19 Sep 2021 16:26:29 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sun, 19 Sep 2021 16:26:29 +0200
branch
eric7
changeset 8617
3ea0b67205b6
parent 8600
f95586787d90
child 8631
b2c4c2f3fda7
permissions
-rw-r--r--

Implemented four workarounds to suppress use of QtWebEngine on non-Linux systems because of issues in Qt 6.2.0 rc0.

3458
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
7923
91e843545d9a Updated copyright for 2021.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7836
diff changeset
3 # Copyright (c) 2014 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
3458
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
3459
275cb00c83e2 Continued adding QSS preview support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3458
diff changeset
7 Module implementing a previewer widget for HTML, Markdown and ReST files.
3458
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10 import os
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11 import threading
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
12 import re
3979
307b09aae43b Added capability to use 'Sphinx' to preview ReST files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
13 import shutil
307b09aae43b Added capability to use 'Sphinx' to preview ReST files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
14 import tempfile
307b09aae43b Added capability to use 'Sphinx' to preview ReST files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
15 import sys
7192
a22eee00b052 Started removing runtime support for Python2 and PyQt4.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
16 import io
8243
cc717c2ae956 Applied some more code simplifications suggested by the new Simplify checker (Y105: use contextlib.suppress) (batch 2).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8235
diff changeset
17 import contextlib
3458
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18
8318
962bce857696 Replaced all imports of PyQt5 to PyQt6 and started to replace code using obsoleted methods and adapt to the PyQt6 enum usage.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
19 from PyQt6.QtCore import pyqtSlot, pyqtSignal, Qt, QUrl, QThread
962bce857696 Replaced all imports of PyQt5 to PyQt6 and started to replace code using obsoleted methods and adapt to the PyQt6 enum usage.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
20 from PyQt6.QtGui import QCursor
962bce857696 Replaced all imports of PyQt5 to PyQt6 and started to replace code using obsoleted methods and adapt to the PyQt6 enum usage.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
21 from PyQt6.QtWidgets import (
7264
bedbe458d792 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
22 QWidget, QVBoxLayout, QLabel, QCheckBox, QSizePolicy, QToolTip
bedbe458d792 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
23 )
3458
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24
8358
144a6b854f70 Sorted the eric specific extensions into packages named like the corresponding PyQt packages (i.e. EricCore,EricGui and EricWidgets).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8356
diff changeset
25 from EricWidgets.EricApplication import ericApp
3458
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27 import Utilities
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28 import Preferences
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30
4615
7c090c9d389d Changed the HTML Previewer to use a QWebEngineView, if QtWebKit is not available.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
31 class PreviewerHTML(QWidget):
3458
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 """
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 Class implementing a previewer widget for HTML, Markdown and ReST files.
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 """
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35 def __init__(self, parent=None):
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36 """
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37 Constructor
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 @param parent reference to the parent widget (QWidget)
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 """
8218
7c09585bd960 Applied some more code simplifications suggested by the new Simplify checker (super(Foo, self) => super()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8143
diff changeset
41 super().__init__(parent)
4615
7c090c9d389d Changed the HTML Previewer to use a QWebEngineView, if QtWebKit is not available.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
42
7c090c9d389d Changed the HTML Previewer to use a QWebEngineView, if QtWebKit is not available.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
43 self.__layout = QVBoxLayout(self)
7c090c9d389d Changed the HTML Previewer to use a QWebEngineView, if QtWebKit is not available.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
44
7c090c9d389d Changed the HTML Previewer to use a QWebEngineView, if QtWebKit is not available.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
45 self.titleLabel = QLabel(self)
7c090c9d389d Changed the HTML Previewer to use a QWebEngineView, if QtWebKit is not available.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
46 self.titleLabel.setWordWrap(True)
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7960
diff changeset
47 self.titleLabel.setTextInteractionFlags(
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7960
diff changeset
48 Qt.TextInteractionFlag.NoTextInteraction)
4615
7c090c9d389d Changed the HTML Previewer to use a QWebEngineView, if QtWebKit is not available.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
49 self.__layout.addWidget(self.titleLabel)
7c090c9d389d Changed the HTML Previewer to use a QWebEngineView, if QtWebKit is not available.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
50
6372
ae44c83fccab CodeDocumentationViewer, PreviewerHTML: prepared the code for the non-availability of either QtWebEngine or QtWebKit (e.g. in the Win-32 PyQt5 wheels as of 5.11).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6287
diff changeset
51 self.__previewAvailable = True
ae44c83fccab CodeDocumentationViewer, PreviewerHTML: prepared the code for the non-availability of either QtWebEngine or QtWebKit (e.g. in the Win-32 PyQt5 wheels as of 5.11).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6287
diff changeset
52
4615
7c090c9d389d Changed the HTML Previewer to use a QWebEngineView, if QtWebKit is not available.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
53 try:
8617
3ea0b67205b6 Implemented four workarounds to suppress use of QtWebEngine on non-Linux systems because of issues in Qt 6.2.0 rc0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8600
diff changeset
54 # TODO: remove this workaround once rc0 issue is fixed
3ea0b67205b6 Implemented four workarounds to suppress use of QtWebEngine on non-Linux systems because of issues in Qt 6.2.0 rc0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8600
diff changeset
55 # Workaround for a bug in Qt 6.2.0 rc0 on non-Linux
3ea0b67205b6 Implemented four workarounds to suppress use of QtWebEngine on non-Linux systems because of issues in Qt 6.2.0 rc0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8600
diff changeset
56 if not sys.platform.startswith("linux"):
3ea0b67205b6 Implemented four workarounds to suppress use of QtWebEngine on non-Linux systems because of issues in Qt 6.2.0 rc0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8600
diff changeset
57 raise ImportError
3ea0b67205b6 Implemented four workarounds to suppress use of QtWebEngine on non-Linux systems because of issues in Qt 6.2.0 rc0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8600
diff changeset
58
8318
962bce857696 Replaced all imports of PyQt5 to PyQt6 and started to replace code using obsoleted methods and adapt to the PyQt6 enum usage.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
59 from PyQt6.QtWebEngineWidgets import QWebEngineView
4625
ac72a3d8f89e Improved the QtWebEngine based HTML previewer variant by including JavaScript to save and restore the current scrollbar positions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4615
diff changeset
60 self.previewView = QWebEngineView(self)
5845
f3d2172d663e Some slight improvements for the HTML previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5837
diff changeset
61 self.previewView.page().linkHovered.connect(self.__showLink)
4625
ac72a3d8f89e Improved the QtWebEngine based HTML previewer variant by including JavaScript to save and restore the current scrollbar positions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4615
diff changeset
62 except ImportError:
7196
ab0a91b82b37 Removed support for QtWebKit and the old web rowser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7192
diff changeset
63 self.__previewAvailable = False
ab0a91b82b37 Removed support for QtWebKit and the old web rowser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7192
diff changeset
64 self.titleLabel.setText(self.tr(
ab0a91b82b37 Removed support for QtWebKit and the old web rowser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7192
diff changeset
65 "<b>HTML Preview is not available!<br/>"
7724
a4950a978e8c PreviewerHTML: made a user message a bit clearer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7675
diff changeset
66 "Install PyQtWebEngine.</b>"))
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7960
diff changeset
67 self.titleLabel.setAlignment(Qt.AlignmentFlag.AlignHCenter)
7196
ab0a91b82b37 Removed support for QtWebKit and the old web rowser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7192
diff changeset
68 self.__layout.addStretch()
ab0a91b82b37 Removed support for QtWebKit and the old web rowser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7192
diff changeset
69 return
4615
7c090c9d389d Changed the HTML Previewer to use a QWebEngineView, if QtWebKit is not available.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
70
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7960
diff changeset
71 sizePolicy = QSizePolicy(QSizePolicy.Policy.Preferred,
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7960
diff changeset
72 QSizePolicy.Policy.Expanding)
4615
7c090c9d389d Changed the HTML Previewer to use a QWebEngineView, if QtWebKit is not available.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
73 sizePolicy.setHorizontalStretch(0)
7c090c9d389d Changed the HTML Previewer to use a QWebEngineView, if QtWebKit is not available.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
74 sizePolicy.setVerticalStretch(0)
7c090c9d389d Changed the HTML Previewer to use a QWebEngineView, if QtWebKit is not available.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
75 sizePolicy.setHeightForWidth(
7c090c9d389d Changed the HTML Previewer to use a QWebEngineView, if QtWebKit is not available.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
76 self.previewView.sizePolicy().hasHeightForWidth())
7c090c9d389d Changed the HTML Previewer to use a QWebEngineView, if QtWebKit is not available.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
77 self.previewView.setSizePolicy(sizePolicy)
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7960
diff changeset
78 self.previewView.setContextMenuPolicy(
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7960
diff changeset
79 Qt.ContextMenuPolicy.NoContextMenu)
4615
7c090c9d389d Changed the HTML Previewer to use a QWebEngineView, if QtWebKit is not available.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
80 self.previewView.setUrl(QUrl("about:blank"))
7c090c9d389d Changed the HTML Previewer to use a QWebEngineView, if QtWebKit is not available.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
81 self.__layout.addWidget(self.previewView)
7c090c9d389d Changed the HTML Previewer to use a QWebEngineView, if QtWebKit is not available.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
82
7c090c9d389d Changed the HTML Previewer to use a QWebEngineView, if QtWebKit is not available.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
83 self.jsCheckBox = QCheckBox(self.tr("Enable JavaScript"), self)
7c090c9d389d Changed the HTML Previewer to use a QWebEngineView, if QtWebKit is not available.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
84 self.jsCheckBox.setToolTip(self.tr(
7c090c9d389d Changed the HTML Previewer to use a QWebEngineView, if QtWebKit is not available.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
85 "Select to enable JavaScript for HTML previews"))
7c090c9d389d Changed the HTML Previewer to use a QWebEngineView, if QtWebKit is not available.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
86 self.__layout.addWidget(self.jsCheckBox)
7c090c9d389d Changed the HTML Previewer to use a QWebEngineView, if QtWebKit is not available.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
87
7c090c9d389d Changed the HTML Previewer to use a QWebEngineView, if QtWebKit is not available.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
88 self.ssiCheckBox = QCheckBox(self.tr("Enable Server Side Includes"),
7c090c9d389d Changed the HTML Previewer to use a QWebEngineView, if QtWebKit is not available.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
89 self)
7c090c9d389d Changed the HTML Previewer to use a QWebEngineView, if QtWebKit is not available.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
90 self.ssiCheckBox.setToolTip(self.tr(
7c090c9d389d Changed the HTML Previewer to use a QWebEngineView, if QtWebKit is not available.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
91 "Select to enable support for Server Side Includes"))
7c090c9d389d Changed the HTML Previewer to use a QWebEngineView, if QtWebKit is not available.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
92 self.__layout.addWidget(self.ssiCheckBox)
7c090c9d389d Changed the HTML Previewer to use a QWebEngineView, if QtWebKit is not available.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
93
7c090c9d389d Changed the HTML Previewer to use a QWebEngineView, if QtWebKit is not available.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
94 self.jsCheckBox.clicked[bool].connect(self.on_jsCheckBox_clicked)
7c090c9d389d Changed the HTML Previewer to use a QWebEngineView, if QtWebKit is not available.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
95 self.ssiCheckBox.clicked[bool].connect(self.on_ssiCheckBox_clicked)
7c090c9d389d Changed the HTML Previewer to use a QWebEngineView, if QtWebKit is not available.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
96 self.previewView.titleChanged.connect(self.on_previewView_titleChanged)
3458
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
97
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
98 self.jsCheckBox.setChecked(
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
99 Preferences.getUI("ShowFilePreviewJS"))
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
100 self.ssiCheckBox.setChecked(
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
101 Preferences.getUI("ShowFilePreviewSSI"))
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
102
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
103 self.__scrollBarPositions = {}
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
104 self.__vScrollBarAtEnd = {}
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
105 self.__hScrollBarAtEnd = {}
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
106
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
107 self.__processingThread = PreviewProcessingThread()
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
108 self.__processingThread.htmlReady.connect(self.__setHtml)
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
109
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
110 self.__previewedPath = None
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
111 self.__previewedEditor = None
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
112
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
113 def shutdown(self):
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114 """
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
115 Public method to perform shutdown actions.
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
116 """
6372
ae44c83fccab CodeDocumentationViewer, PreviewerHTML: prepared the code for the non-availability of either QtWebEngine or QtWebKit (e.g. in the Win-32 PyQt5 wheels as of 5.11).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6287
diff changeset
117 if self.__previewAvailable:
ae44c83fccab CodeDocumentationViewer, PreviewerHTML: prepared the code for the non-availability of either QtWebEngine or QtWebKit (e.g. in the Win-32 PyQt5 wheels as of 5.11).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6287
diff changeset
118 self.__processingThread.wait()
3458
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
119
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
120 @pyqtSlot(bool)
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
121 def on_jsCheckBox_clicked(self, checked):
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
122 """
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
123 Private slot to enable/disable JavaScript.
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
124
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
125 @param checked state of the checkbox (boolean)
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
126 """
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
127 Preferences.setUI("ShowFilePreviewJS", checked)
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
128 self.__setJavaScriptEnabled(checked)
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
129
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
130 def __setJavaScriptEnabled(self, enable):
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
131 """
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
132 Private method to enable/disable JavaScript.
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
133
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
134 @param enable flag indicating the enable state (boolean)
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
135 """
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
136 self.jsCheckBox.setChecked(enable)
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
137
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
138 settings = self.previewView.settings()
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
139 settings.setAttribute(settings.JavascriptEnabled, enable)
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
140
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
141 self.processEditor()
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
142
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
143 @pyqtSlot(bool)
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
144 def on_ssiCheckBox_clicked(self, checked):
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
145 """
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
146 Private slot to enable/disable SSI.
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
147
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
148 @param checked state of the checkbox (boolean)
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
149 """
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
150 Preferences.setUI("ShowFilePreviewSSI", checked)
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
151 self.processEditor()
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
152
5845
f3d2172d663e Some slight improvements for the HTML previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5837
diff changeset
153 @pyqtSlot(str)
f3d2172d663e Some slight improvements for the HTML previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5837
diff changeset
154 def __showLink(self, urlStr):
f3d2172d663e Some slight improvements for the HTML previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5837
diff changeset
155 """
f3d2172d663e Some slight improvements for the HTML previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5837
diff changeset
156 Private slot to show the hovered link in a tooltip.
f3d2172d663e Some slight improvements for the HTML previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5837
diff changeset
157
f3d2172d663e Some slight improvements for the HTML previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5837
diff changeset
158 @param urlStr hovered URL
f3d2172d663e Some slight improvements for the HTML previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5837
diff changeset
159 @type str
f3d2172d663e Some slight improvements for the HTML previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5837
diff changeset
160 """
f3d2172d663e Some slight improvements for the HTML previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5837
diff changeset
161 QToolTip.showText(QCursor.pos(), urlStr, self.previewView)
f3d2172d663e Some slight improvements for the HTML previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5837
diff changeset
162
3458
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
163 def processEditor(self, editor=None):
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
164 """
3591
2f2a4a76dd22 Corrected a bunch of source docu issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3539
diff changeset
165 Public slot to process an editor's text.
3458
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
166
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
167 @param editor editor to be processed (Editor)
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
168 """
6372
ae44c83fccab CodeDocumentationViewer, PreviewerHTML: prepared the code for the non-availability of either QtWebEngine or QtWebKit (e.g. in the Win-32 PyQt5 wheels as of 5.11).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6287
diff changeset
169 if not self.__previewAvailable:
ae44c83fccab CodeDocumentationViewer, PreviewerHTML: prepared the code for the non-availability of either QtWebEngine or QtWebKit (e.g. in the Win-32 PyQt5 wheels as of 5.11).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6287
diff changeset
170 return
ae44c83fccab CodeDocumentationViewer, PreviewerHTML: prepared the code for the non-availability of either QtWebEngine or QtWebKit (e.g. in the Win-32 PyQt5 wheels as of 5.11).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6287
diff changeset
171
3458
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
172 if editor is None:
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
173 editor = self.__previewedEditor
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
174 else:
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
175 self.__previewedEditor = editor
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
176
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
177 if editor is not None:
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
178 fn = editor.getFileName()
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
179
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
180 if fn:
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
181 extension = os.path.normcase(os.path.splitext(fn)[1][1:])
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
182 else:
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
183 extension = ""
7264
bedbe458d792 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
184 if (
bedbe458d792 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
185 extension in Preferences.getEditor(
bedbe458d792 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
186 "PreviewHtmlFileNameExtensions") or
bedbe458d792 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
187 editor.getLanguage() == "HTML"
bedbe458d792 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
188 ):
3458
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
189 language = "HTML"
7264
bedbe458d792 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
190 elif (
bedbe458d792 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
191 extension in Preferences.getEditor(
bedbe458d792 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
192 "PreviewMarkdownFileNameExtensions") or
bedbe458d792 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
193 editor.getLanguage().lower() == "markdown"
bedbe458d792 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
194 ):
3458
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
195 language = "Markdown"
7264
bedbe458d792 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
196 elif (
bedbe458d792 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
197 extension in Preferences.getEditor(
bedbe458d792 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
198 "PreviewRestFileNameExtensions") or
bedbe458d792 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
199 editor.getLanguage().lower() == "restructuredtext"
bedbe458d792 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
200 ):
3458
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
201 language = "ReST"
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
202 else:
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
203 self.__setHtml(fn, self.tr(
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
204 "<p>No preview available for this type of file.</p>"))
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
205 return
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
206
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
207 if fn:
8600
f95586787d90 PreviewerHTML: changed the determination of the root path for the editor to be previewed.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
208 rootPath = os.path.dirname(os.path.abspath(fn))
3458
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
209 else:
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
210 rootPath = ""
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
211
5396
8d8940307e44 Little enhancement to the previewers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5394
diff changeset
212 if bool(editor.text()):
8d8940307e44 Little enhancement to the previewers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5394
diff changeset
213 self.__processingThread.process(
8d8940307e44 Little enhancement to the previewers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5394
diff changeset
214 fn, language, editor.text(),
8d8940307e44 Little enhancement to the previewers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5394
diff changeset
215 self.ssiCheckBox.isChecked(), rootPath,
5837
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5801
diff changeset
216 Preferences.getEditor("PreviewRestUseSphinx"),
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5801
diff changeset
217 Preferences.getEditor("PreviewMarkdownNLtoBR"),
7301
6df711503ec0 PreviewerHTML: enhanced the Markdown previewer by using the PyMdown extensions, if they are available and have been enabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7264
diff changeset
218 Preferences.getEditor(
6df711503ec0 PreviewerHTML: enhanced the Markdown previewer by using the PyMdown extensions, if they are available and have been enabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7264
diff changeset
219 "PreviewMarkdownUsePyMdownExtensions"),
5837
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5801
diff changeset
220 Preferences.getEditor("PreviewMarkdownHTMLFormat"),
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5801
diff changeset
221 Preferences.getEditor("PreviewRestDocutilsHTMLFormat"))
3458
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
222
5845
f3d2172d663e Some slight improvements for the HTML previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5837
diff changeset
223 def __setHtml(self, filePath, html, rootPath):
3458
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
224 """
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
225 Private method to set the HTML to the view and restore the scroll bars
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
226 positions.
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
227
5845
f3d2172d663e Some slight improvements for the HTML previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5837
diff changeset
228 @param filePath file path of the previewed editor
f3d2172d663e Some slight improvements for the HTML previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5837
diff changeset
229 @type str
f3d2172d663e Some slight improvements for the HTML previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5837
diff changeset
230 @param html processed HTML text ready to be shown
f3d2172d663e Some slight improvements for the HTML previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5837
diff changeset
231 @type str
f3d2172d663e Some slight improvements for the HTML previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5837
diff changeset
232 @param rootPath path of the web site root
f3d2172d663e Some slight improvements for the HTML previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5837
diff changeset
233 @type str
3458
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
234 """
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
235 self.__previewedPath = Utilities.normcasepath(
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
236 Utilities.fromNativeSeparators(filePath))
4625
ac72a3d8f89e Improved the QtWebEngine based HTML previewer variant by including JavaScript to save and restore the current scrollbar positions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4615
diff changeset
237 self.__saveScrollBarPositions()
7196
ab0a91b82b37 Removed support for QtWebKit and the old web rowser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7192
diff changeset
238 self.previewView.page().loadFinished.connect(
ab0a91b82b37 Removed support for QtWebKit and the old web rowser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7192
diff changeset
239 self.__restoreScrollBarPositions)
ab0a91b82b37 Removed support for QtWebKit and the old web rowser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7192
diff changeset
240 if not filePath:
ab0a91b82b37 Removed support for QtWebKit and the old web rowser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7192
diff changeset
241 filePath = "/"
8260
2161475d9639 Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8243
diff changeset
242 baseUrl = (
2161475d9639 Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8243
diff changeset
243 QUrl.fromLocalFile(rootPath + "/index.html")
2161475d9639 Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8243
diff changeset
244 if rootPath else
2161475d9639 Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8243
diff changeset
245 QUrl.fromLocalFile(filePath)
2161475d9639 Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8243
diff changeset
246 )
5845
f3d2172d663e Some slight improvements for the HTML previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5837
diff changeset
247 self.previewView.setHtml(html, baseUrl=baseUrl)
4929
fcab21c80811 Fixed the focus stealing issue with the QtWebEngine based HTML previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
248 if self.__previewedEditor:
fcab21c80811 Fixed the focus stealing issue with the QtWebEngine based HTML previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
249 self.__previewedEditor.setFocus()
3458
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
250
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
251 @pyqtSlot(str)
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
252 def on_previewView_titleChanged(self, title):
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
253 """
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
254 Private slot to handle a change of the title.
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
255
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
256 @param title new title (string)
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
257 """
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
258 if title:
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
259 self.titleLabel.setText(self.tr("Preview - {0}").format(title))
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
260 else:
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
261 self.titleLabel.setText(self.tr("Preview"))
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
262
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
263 def __saveScrollBarPositions(self):
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
264 """
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
265 Private method to save scroll bar positions for a previewed editor.
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
266 """
8318
962bce857696 Replaced all imports of PyQt5 to PyQt6 and started to replace code using obsoleted methods and adapt to the PyQt6 enum usage.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
267 from PyQt6.QtCore import QPoint
7196
ab0a91b82b37 Removed support for QtWebKit and the old web rowser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7192
diff changeset
268 try:
ab0a91b82b37 Removed support for QtWebKit and the old web rowser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7192
diff changeset
269 pos = self.previewView.scrollPosition()
ab0a91b82b37 Removed support for QtWebKit and the old web rowser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7192
diff changeset
270 except AttributeError:
ab0a91b82b37 Removed support for QtWebKit and the old web rowser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7192
diff changeset
271 pos = self.__execJavaScript(
ab0a91b82b37 Removed support for QtWebKit and the old web rowser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7192
diff changeset
272 "(function() {"
ab0a91b82b37 Removed support for QtWebKit and the old web rowser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7192
diff changeset
273 "var res = {"
ab0a91b82b37 Removed support for QtWebKit and the old web rowser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7192
diff changeset
274 " x: 0,"
ab0a91b82b37 Removed support for QtWebKit and the old web rowser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7192
diff changeset
275 " y: 0,"
ab0a91b82b37 Removed support for QtWebKit and the old web rowser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7192
diff changeset
276 "};"
ab0a91b82b37 Removed support for QtWebKit and the old web rowser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7192
diff changeset
277 "res.x = window.scrollX;"
ab0a91b82b37 Removed support for QtWebKit and the old web rowser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7192
diff changeset
278 "res.y = window.scrollY;"
ab0a91b82b37 Removed support for QtWebKit and the old web rowser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7192
diff changeset
279 "return res;"
ab0a91b82b37 Removed support for QtWebKit and the old web rowser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7192
diff changeset
280 "})()"
ab0a91b82b37 Removed support for QtWebKit and the old web rowser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7192
diff changeset
281 )
8235
78e6d29eb773 Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator) (batch 3).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8227
diff changeset
282 pos = QPoint(0, 0) if pos is None else QPoint(pos["x"], pos["y"])
7196
ab0a91b82b37 Removed support for QtWebKit and the old web rowser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7192
diff changeset
283 self.__scrollBarPositions[self.__previewedPath] = pos
ab0a91b82b37 Removed support for QtWebKit and the old web rowser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7192
diff changeset
284 self.__hScrollBarAtEnd[self.__previewedPath] = False
ab0a91b82b37 Removed support for QtWebKit and the old web rowser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7192
diff changeset
285 self.__vScrollBarAtEnd[self.__previewedPath] = False
3458
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
286
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
287 def __restoreScrollBarPositions(self):
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
288 """
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
289 Private method to restore scroll bar positions for a previewed editor.
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
290 """
7196
ab0a91b82b37 Removed support for QtWebKit and the old web rowser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7192
diff changeset
291 if self.__previewedPath not in self.__scrollBarPositions:
ab0a91b82b37 Removed support for QtWebKit and the old web rowser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7192
diff changeset
292 return
3458
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
293
7196
ab0a91b82b37 Removed support for QtWebKit and the old web rowser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7192
diff changeset
294 pos = self.__scrollBarPositions[self.__previewedPath]
ab0a91b82b37 Removed support for QtWebKit and the old web rowser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7192
diff changeset
295 self.previewView.page().runJavaScript(
ab0a91b82b37 Removed support for QtWebKit and the old web rowser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7192
diff changeset
296 "window.scrollTo({0}, {1});".format(pos.x(), pos.y()))
4625
ac72a3d8f89e Improved the QtWebEngine based HTML previewer variant by including JavaScript to save and restore the current scrollbar positions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4615
diff changeset
297
ac72a3d8f89e Improved the QtWebEngine based HTML previewer variant by including JavaScript to save and restore the current scrollbar positions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4615
diff changeset
298 def __execJavaScript(self, script):
ac72a3d8f89e Improved the QtWebEngine based HTML previewer variant by including JavaScript to save and restore the current scrollbar positions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4615
diff changeset
299 """
ac72a3d8f89e Improved the QtWebEngine based HTML previewer variant by including JavaScript to save and restore the current scrollbar positions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4615
diff changeset
300 Private function to execute a JavaScript function Synchroneously.
ac72a3d8f89e Improved the QtWebEngine based HTML previewer variant by including JavaScript to save and restore the current scrollbar positions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4615
diff changeset
301
ac72a3d8f89e Improved the QtWebEngine based HTML previewer variant by including JavaScript to save and restore the current scrollbar positions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4615
diff changeset
302 @param script JavaScript script source to be executed
ac72a3d8f89e Improved the QtWebEngine based HTML previewer variant by including JavaScript to save and restore the current scrollbar positions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4615
diff changeset
303 @type str
ac72a3d8f89e Improved the QtWebEngine based HTML previewer variant by including JavaScript to save and restore the current scrollbar positions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4615
diff changeset
304 @return result of the script
ac72a3d8f89e Improved the QtWebEngine based HTML previewer variant by including JavaScript to save and restore the current scrollbar positions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4615
diff changeset
305 @rtype depending upon script result
ac72a3d8f89e Improved the QtWebEngine based HTML previewer variant by including JavaScript to save and restore the current scrollbar positions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4615
diff changeset
306 """
8318
962bce857696 Replaced all imports of PyQt5 to PyQt6 and started to replace code using obsoleted methods and adapt to the PyQt6 enum usage.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
307 from PyQt6.QtCore import QEventLoop
4625
ac72a3d8f89e Improved the QtWebEngine based HTML previewer variant by including JavaScript to save and restore the current scrollbar positions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4615
diff changeset
308 loop = QEventLoop()
ac72a3d8f89e Improved the QtWebEngine based HTML previewer variant by including JavaScript to save and restore the current scrollbar positions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4615
diff changeset
309 resultDict = {"res": None}
ac72a3d8f89e Improved the QtWebEngine based HTML previewer variant by including JavaScript to save and restore the current scrollbar positions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4615
diff changeset
310
ac72a3d8f89e Improved the QtWebEngine based HTML previewer variant by including JavaScript to save and restore the current scrollbar positions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4615
diff changeset
311 def resultCallback(res, resDict=resultDict):
ac72a3d8f89e Improved the QtWebEngine based HTML previewer variant by including JavaScript to save and restore the current scrollbar positions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4615
diff changeset
312 if loop and loop.isRunning():
ac72a3d8f89e Improved the QtWebEngine based HTML previewer variant by including JavaScript to save and restore the current scrollbar positions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4615
diff changeset
313 resDict["res"] = res
ac72a3d8f89e Improved the QtWebEngine based HTML previewer variant by including JavaScript to save and restore the current scrollbar positions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4615
diff changeset
314 loop.quit()
ac72a3d8f89e Improved the QtWebEngine based HTML previewer variant by including JavaScript to save and restore the current scrollbar positions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4615
diff changeset
315
ac72a3d8f89e Improved the QtWebEngine based HTML previewer variant by including JavaScript to save and restore the current scrollbar positions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4615
diff changeset
316 self.previewView.page().runJavaScript(
ac72a3d8f89e Improved the QtWebEngine based HTML previewer variant by including JavaScript to save and restore the current scrollbar positions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4615
diff changeset
317 script, resultCallback)
ac72a3d8f89e Improved the QtWebEngine based HTML previewer variant by including JavaScript to save and restore the current scrollbar positions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4615
diff changeset
318
7759
51aa6c6b66f7 Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7724
diff changeset
319 loop.exec()
4625
ac72a3d8f89e Improved the QtWebEngine based HTML previewer variant by including JavaScript to save and restore the current scrollbar positions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4615
diff changeset
320 return resultDict["res"]
3458
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
321
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
322
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
323 class PreviewProcessingThread(QThread):
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
324 """
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
325 Class implementing a thread to process some text into HTML usable by the
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
326 previewer view.
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
327
5845
f3d2172d663e Some slight improvements for the HTML previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5837
diff changeset
328 @signal htmlReady(str, str, str) emitted with the file name, the processed
f3d2172d663e Some slight improvements for the HTML previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5837
diff changeset
329 HTML and the web site root path to signal the availability of the
f3d2172d663e Some slight improvements for the HTML previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5837
diff changeset
330 processed HTML
3458
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
331 """
5845
f3d2172d663e Some slight improvements for the HTML previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5837
diff changeset
332 htmlReady = pyqtSignal(str, str, str)
3458
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
333
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
334 def __init__(self, parent=None):
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
335 """
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
336 Constructor
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
337
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
338 @param parent reference to the parent object (QObject)
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
339 """
8218
7c09585bd960 Applied some more code simplifications suggested by the new Simplify checker (super(Foo, self) => super()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8143
diff changeset
340 super().__init__()
3458
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
341
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
342 self.__lock = threading.Lock()
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
343
3979
307b09aae43b Added capability to use 'Sphinx' to preview ReST files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
344 def process(self, filePath, language, text, ssiEnabled, rootPath,
7301
6df711503ec0 PreviewerHTML: enhanced the Markdown previewer by using the PyMdown extensions, if they are available and have been enabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7264
diff changeset
345 useSphinx, convertNewLineToBreak, usePyMdownExtensions,
6df711503ec0 PreviewerHTML: enhanced the Markdown previewer by using the PyMdown extensions, if they are available and have been enabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7264
diff changeset
346 markdownHtmlFormat, restDocutilsHtmlFormat):
3458
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
347 """
3591
2f2a4a76dd22 Corrected a bunch of source docu issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3539
diff changeset
348 Public method to convert the given text to HTML.
3458
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
349
7301
6df711503ec0 PreviewerHTML: enhanced the Markdown previewer by using the PyMdown extensions, if they are available and have been enabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7264
diff changeset
350 @param filePath file path of the text
6df711503ec0 PreviewerHTML: enhanced the Markdown previewer by using the PyMdown extensions, if they are available and have been enabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7264
diff changeset
351 @type str
6df711503ec0 PreviewerHTML: enhanced the Markdown previewer by using the PyMdown extensions, if they are available and have been enabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7264
diff changeset
352 @param language language of the text
6df711503ec0 PreviewerHTML: enhanced the Markdown previewer by using the PyMdown extensions, if they are available and have been enabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7264
diff changeset
353 @type str
6df711503ec0 PreviewerHTML: enhanced the Markdown previewer by using the PyMdown extensions, if they are available and have been enabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7264
diff changeset
354 @param text text to be processed
6df711503ec0 PreviewerHTML: enhanced the Markdown previewer by using the PyMdown extensions, if they are available and have been enabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7264
diff changeset
355 @type str
3458
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
356 @param ssiEnabled flag indicating to do some (limited) SSI processing
7301
6df711503ec0 PreviewerHTML: enhanced the Markdown previewer by using the PyMdown extensions, if they are available and have been enabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7264
diff changeset
357 @type bool
6df711503ec0 PreviewerHTML: enhanced the Markdown previewer by using the PyMdown extensions, if they are available and have been enabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7264
diff changeset
358 @param rootPath root path to be used for SSI processing
6df711503ec0 PreviewerHTML: enhanced the Markdown previewer by using the PyMdown extensions, if they are available and have been enabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7264
diff changeset
359 @type str
3979
307b09aae43b Added capability to use 'Sphinx' to preview ReST files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
360 @param useSphinx flag indicating to use Sphinx to generate the
7301
6df711503ec0 PreviewerHTML: enhanced the Markdown previewer by using the PyMdown extensions, if they are available and have been enabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7264
diff changeset
361 ReST preview
6df711503ec0 PreviewerHTML: enhanced the Markdown previewer by using the PyMdown extensions, if they are available and have been enabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7264
diff changeset
362 @type bool
5837
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5801
diff changeset
363 @param convertNewLineToBreak flag indicating to convert new lines
7301
6df711503ec0 PreviewerHTML: enhanced the Markdown previewer by using the PyMdown extensions, if they are available and have been enabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7264
diff changeset
364 to HTML break (Markdown only)
6df711503ec0 PreviewerHTML: enhanced the Markdown previewer by using the PyMdown extensions, if they are available and have been enabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7264
diff changeset
365 @type bool
6df711503ec0 PreviewerHTML: enhanced the Markdown previewer by using the PyMdown extensions, if they are available and have been enabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7264
diff changeset
366 @param usePyMdownExtensions flag indicating to enable the PyMdown
6df711503ec0 PreviewerHTML: enhanced the Markdown previewer by using the PyMdown extensions, if they are available and have been enabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7264
diff changeset
367 extensions, if they are available
6df711503ec0 PreviewerHTML: enhanced the Markdown previewer by using the PyMdown extensions, if they are available and have been enabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7264
diff changeset
368 @type bool
5837
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5801
diff changeset
369 @param markdownHtmlFormat HTML format to be generated by markdown
7301
6df711503ec0 PreviewerHTML: enhanced the Markdown previewer by using the PyMdown extensions, if they are available and have been enabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7264
diff changeset
370 @type str
5837
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5801
diff changeset
371 @param restDocutilsHtmlFormat HTML format to be generated by docutils
7301
6df711503ec0 PreviewerHTML: enhanced the Markdown previewer by using the PyMdown extensions, if they are available and have been enabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7264
diff changeset
372 @type str
3458
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
373 """
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
374 with self.__lock:
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
375 self.__filePath = filePath
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
376 self.__language = language
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
377 self.__text = text
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
378 self.__ssiEnabled = ssiEnabled
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
379 self.__rootPath = rootPath
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
380 self.__haveData = True
3979
307b09aae43b Added capability to use 'Sphinx' to preview ReST files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
381 self.__useSphinx = useSphinx
5837
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5801
diff changeset
382 self.__convertNewLineToBreak = convertNewLineToBreak
7301
6df711503ec0 PreviewerHTML: enhanced the Markdown previewer by using the PyMdown extensions, if they are available and have been enabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7264
diff changeset
383 self.__usePyMdownExtensions = usePyMdownExtensions
5837
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5801
diff changeset
384 self.__markdownHtmlFormat = markdownHtmlFormat
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5801
diff changeset
385 self.__restDocutilsHtmlFormat = restDocutilsHtmlFormat
3458
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
386 if not self.isRunning():
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7960
diff changeset
387 self.start(QThread.Priority.LowPriority)
3458
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
388
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
389 def run(self):
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
390 """
3591
2f2a4a76dd22 Corrected a bunch of source docu issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3539
diff changeset
391 Public thread method to convert the stored data.
3458
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
392 """
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
393 while True:
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
394 # exits with break
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
395 with self.__lock:
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
396 filePath = self.__filePath
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
397 language = self.__language
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
398 text = self.__text
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
399 ssiEnabled = self.__ssiEnabled
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
400 rootPath = self.__rootPath
3979
307b09aae43b Added capability to use 'Sphinx' to preview ReST files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
401 useSphinx = self.__useSphinx
5837
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5801
diff changeset
402 convertNewLineToBreak = self.__convertNewLineToBreak
7301
6df711503ec0 PreviewerHTML: enhanced the Markdown previewer by using the PyMdown extensions, if they are available and have been enabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7264
diff changeset
403 usePyMdownExtensions = self.__usePyMdownExtensions
5837
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5801
diff changeset
404 markdownHtmlFormat = self.__markdownHtmlFormat
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5801
diff changeset
405 restDocutilsHtmlFormat = self.__restDocutilsHtmlFormat
3458
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
406
5837
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5801
diff changeset
407 self.__haveData = False
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5801
diff changeset
408
3458
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
409 html = self.__getHtml(language, text, ssiEnabled, filePath,
5837
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5801
diff changeset
410 rootPath, useSphinx, convertNewLineToBreak,
7301
6df711503ec0 PreviewerHTML: enhanced the Markdown previewer by using the PyMdown extensions, if they are available and have been enabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7264
diff changeset
411 usePyMdownExtensions, markdownHtmlFormat,
6df711503ec0 PreviewerHTML: enhanced the Markdown previewer by using the PyMdown extensions, if they are available and have been enabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7264
diff changeset
412 restDocutilsHtmlFormat)
3458
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
413
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
414 with self.__lock:
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
415 if not self.__haveData:
5845
f3d2172d663e Some slight improvements for the HTML previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5837
diff changeset
416 self.htmlReady.emit(filePath, html, rootPath)
3458
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
417 break
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
418 # else - next iteration
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
419
3979
307b09aae43b Added capability to use 'Sphinx' to preview ReST files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
420 def __getHtml(self, language, text, ssiEnabled, filePath, rootPath,
7301
6df711503ec0 PreviewerHTML: enhanced the Markdown previewer by using the PyMdown extensions, if they are available and have been enabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7264
diff changeset
421 useSphinx, convertNewLineToBreak, usePyMdownExtensions,
6df711503ec0 PreviewerHTML: enhanced the Markdown previewer by using the PyMdown extensions, if they are available and have been enabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7264
diff changeset
422 markdownHtmlFormat, restDocutilsHtmlFormat):
3458
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
423 """
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
424 Private method to process the given text depending upon the given
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
425 language.
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
426
7301
6df711503ec0 PreviewerHTML: enhanced the Markdown previewer by using the PyMdown extensions, if they are available and have been enabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7264
diff changeset
427 @param language language of the text
6df711503ec0 PreviewerHTML: enhanced the Markdown previewer by using the PyMdown extensions, if they are available and have been enabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7264
diff changeset
428 @type str
6df711503ec0 PreviewerHTML: enhanced the Markdown previewer by using the PyMdown extensions, if they are available and have been enabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7264
diff changeset
429 @param text to be processed
6df711503ec0 PreviewerHTML: enhanced the Markdown previewer by using the PyMdown extensions, if they are available and have been enabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7264
diff changeset
430 @type str
3458
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
431 @param ssiEnabled flag indicating to do some (limited) SSI processing
7301
6df711503ec0 PreviewerHTML: enhanced the Markdown previewer by using the PyMdown extensions, if they are available and have been enabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7264
diff changeset
432 @type bool
6df711503ec0 PreviewerHTML: enhanced the Markdown previewer by using the PyMdown extensions, if they are available and have been enabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7264
diff changeset
433 @param filePath file path of the text
6df711503ec0 PreviewerHTML: enhanced the Markdown previewer by using the PyMdown extensions, if they are available and have been enabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7264
diff changeset
434 @type str
6df711503ec0 PreviewerHTML: enhanced the Markdown previewer by using the PyMdown extensions, if they are available and have been enabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7264
diff changeset
435 @param rootPath root path to be used for SSI processing
6df711503ec0 PreviewerHTML: enhanced the Markdown previewer by using the PyMdown extensions, if they are available and have been enabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7264
diff changeset
436 @type str
3979
307b09aae43b Added capability to use 'Sphinx' to preview ReST files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
437 @param useSphinx flag indicating to use Sphinx to generate the
7301
6df711503ec0 PreviewerHTML: enhanced the Markdown previewer by using the PyMdown extensions, if they are available and have been enabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7264
diff changeset
438 ReST preview
6df711503ec0 PreviewerHTML: enhanced the Markdown previewer by using the PyMdown extensions, if they are available and have been enabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7264
diff changeset
439 @type bool
5837
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5801
diff changeset
440 @param convertNewLineToBreak flag indicating to convert new lines
7301
6df711503ec0 PreviewerHTML: enhanced the Markdown previewer by using the PyMdown extensions, if they are available and have been enabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7264
diff changeset
441 to HTML break (Markdown only)
6df711503ec0 PreviewerHTML: enhanced the Markdown previewer by using the PyMdown extensions, if they are available and have been enabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7264
diff changeset
442 @type bool
6df711503ec0 PreviewerHTML: enhanced the Markdown previewer by using the PyMdown extensions, if they are available and have been enabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7264
diff changeset
443 @param usePyMdownExtensions flag indicating to enable the PyMdown
6df711503ec0 PreviewerHTML: enhanced the Markdown previewer by using the PyMdown extensions, if they are available and have been enabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7264
diff changeset
444 extensions, if they are available
6df711503ec0 PreviewerHTML: enhanced the Markdown previewer by using the PyMdown extensions, if they are available and have been enabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7264
diff changeset
445 @type bool
5837
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5801
diff changeset
446 @param markdownHtmlFormat HTML format to be generated by markdown
7301
6df711503ec0 PreviewerHTML: enhanced the Markdown previewer by using the PyMdown extensions, if they are available and have been enabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7264
diff changeset
447 @type str
5837
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5801
diff changeset
448 @param restDocutilsHtmlFormat HTML format to be generated by docutils
7301
6df711503ec0 PreviewerHTML: enhanced the Markdown previewer by using the PyMdown extensions, if they are available and have been enabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7264
diff changeset
449 @type str
6df711503ec0 PreviewerHTML: enhanced the Markdown previewer by using the PyMdown extensions, if they are available and have been enabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7264
diff changeset
450 @return processed HTML text
6df711503ec0 PreviewerHTML: enhanced the Markdown previewer by using the PyMdown extensions, if they are available and have been enabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7264
diff changeset
451 @rtype str
3458
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
452 """
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
453 if language == "HTML":
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
454 if ssiEnabled:
5846
b3cc692e3bfe Some additional improvements for the HTML previewer to be able to cope with absolute URLs. These get rewritten with respect to the project directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5845
diff changeset
455 html = self.__processSSI(text, filePath, rootPath)
3458
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
456 else:
5846
b3cc692e3bfe Some additional improvements for the HTML previewer to be able to cope with absolute URLs. These get rewritten with respect to the project directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5845
diff changeset
457 html = text
b3cc692e3bfe Some additional improvements for the HTML previewer to be able to cope with absolute URLs. These get rewritten with respect to the project directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5845
diff changeset
458 return self.__processRootPath(html, rootPath)
3458
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
459 elif language == "Markdown":
7301
6df711503ec0 PreviewerHTML: enhanced the Markdown previewer by using the PyMdown extensions, if they are available and have been enabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7264
diff changeset
460 return self.__convertMarkdown(
6df711503ec0 PreviewerHTML: enhanced the Markdown previewer by using the PyMdown extensions, if they are available and have been enabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7264
diff changeset
461 text, convertNewLineToBreak, usePyMdownExtensions,
6df711503ec0 PreviewerHTML: enhanced the Markdown previewer by using the PyMdown extensions, if they are available and have been enabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7264
diff changeset
462 markdownHtmlFormat)
3458
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
463 elif language == "ReST":
5837
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5801
diff changeset
464 return self.__convertReST(text, useSphinx, restDocutilsHtmlFormat)
3458
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
465 else:
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
466 return self.tr(
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
467 "<p>No preview available for this type of file.</p>")
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
468
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
469 def __processSSI(self, txt, filename, root):
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
470 """
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
471 Private method to process the given text for SSI statements.
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
472
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
473 Note: Only a limited subset of SSI statements are supported.
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
474
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
475 @param txt text to be processed (string)
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
476 @param filename name of the file associated with the given text
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
477 (string)
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
478 @param root directory of the document root (string)
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
479 @return processed HTML (string)
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
480 """
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
481 if not filename:
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
482 return txt
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
483
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
484 # SSI include
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
485 incRe = re.compile(
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
486 r"""<!--#include[ \t]+(virtual|file)=[\"']([^\"']+)[\"']\s*-->""",
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
487 re.IGNORECASE)
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
488 baseDir = os.path.dirname(os.path.abspath(filename))
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
489 docRoot = root if root != "" else baseDir
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
490 while True:
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
491 incMatch = incRe.search(txt)
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
492 if incMatch is None:
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
493 break
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
494
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
495 if incMatch.group(1) == "virtual":
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
496 incFile = Utilities.normjoinpath(docRoot, incMatch.group(2))
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
497 elif incMatch.group(1) == "file":
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
498 incFile = Utilities.normjoinpath(baseDir, incMatch.group(2))
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
499 else:
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
500 incFile = ""
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
501 if os.path.exists(incFile):
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
502 try:
7785
9978016560ec Changed code to use context manager 'open()' for file operations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7781
diff changeset
503 with open(incFile, "r") as f:
9978016560ec Changed code to use context manager 'open()' for file operations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7781
diff changeset
504 incTxt = f.read()
7836
2f0d208b8137 Changed code to not use the OSError aliases (IOError, EnvironmentError, socket.error and select.error) anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7785
diff changeset
505 except OSError:
3458
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
506 # remove SSI include
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
507 incTxt = ""
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
508 else:
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
509 # remove SSI include
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
510 incTxt = ""
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
511 txt = txt[:incMatch.start(0)] + incTxt + txt[incMatch.end(0):]
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
512
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
513 return txt
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
514
5846
b3cc692e3bfe Some additional improvements for the HTML previewer to be able to cope with absolute URLs. These get rewritten with respect to the project directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5845
diff changeset
515 def __processRootPath(self, txt, root):
b3cc692e3bfe Some additional improvements for the HTML previewer to be able to cope with absolute URLs. These get rewritten with respect to the project directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5845
diff changeset
516 """
b3cc692e3bfe Some additional improvements for the HTML previewer to be able to cope with absolute URLs. These get rewritten with respect to the project directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5845
diff changeset
517 Private method to adjust absolute references to the given root path.
b3cc692e3bfe Some additional improvements for the HTML previewer to be able to cope with absolute URLs. These get rewritten with respect to the project directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5845
diff changeset
518
b3cc692e3bfe Some additional improvements for the HTML previewer to be able to cope with absolute URLs. These get rewritten with respect to the project directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5845
diff changeset
519 @param txt text to be processed
b3cc692e3bfe Some additional improvements for the HTML previewer to be able to cope with absolute URLs. These get rewritten with respect to the project directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5845
diff changeset
520 @type str
b3cc692e3bfe Some additional improvements for the HTML previewer to be able to cope with absolute URLs. These get rewritten with respect to the project directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5845
diff changeset
521 @param root directory of the document root
b3cc692e3bfe Some additional improvements for the HTML previewer to be able to cope with absolute URLs. These get rewritten with respect to the project directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5845
diff changeset
522 @type str
b3cc692e3bfe Some additional improvements for the HTML previewer to be able to cope with absolute URLs. These get rewritten with respect to the project directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5845
diff changeset
523 @return processed HTML
b3cc692e3bfe Some additional improvements for the HTML previewer to be able to cope with absolute URLs. These get rewritten with respect to the project directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5845
diff changeset
524 @rtype str
b3cc692e3bfe Some additional improvements for the HTML previewer to be able to cope with absolute URLs. These get rewritten with respect to the project directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5845
diff changeset
525 """
b3cc692e3bfe Some additional improvements for the HTML previewer to be able to cope with absolute URLs. These get rewritten with respect to the project directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5845
diff changeset
526 if not root:
b3cc692e3bfe Some additional improvements for the HTML previewer to be able to cope with absolute URLs. These get rewritten with respect to the project directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5845
diff changeset
527 return txt
b3cc692e3bfe Some additional improvements for the HTML previewer to be able to cope with absolute URLs. These get rewritten with respect to the project directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5845
diff changeset
528
b3cc692e3bfe Some additional improvements for the HTML previewer to be able to cope with absolute URLs. These get rewritten with respect to the project directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5845
diff changeset
529 root = Utilities.fromNativeSeparators(root)
b3cc692e3bfe Some additional improvements for the HTML previewer to be able to cope with absolute URLs. These get rewritten with respect to the project directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5845
diff changeset
530 if not root.endswith("/"):
b3cc692e3bfe Some additional improvements for the HTML previewer to be able to cope with absolute URLs. These get rewritten with respect to the project directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5845
diff changeset
531 root += "/"
b3cc692e3bfe Some additional improvements for the HTML previewer to be able to cope with absolute URLs. These get rewritten with respect to the project directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5845
diff changeset
532 rootLen = len(root)
b3cc692e3bfe Some additional improvements for the HTML previewer to be able to cope with absolute URLs. These get rewritten with respect to the project directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5845
diff changeset
533
b3cc692e3bfe Some additional improvements for the HTML previewer to be able to cope with absolute URLs. These get rewritten with respect to the project directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5845
diff changeset
534 refRe = re.compile(
b3cc692e3bfe Some additional improvements for the HTML previewer to be able to cope with absolute URLs. These get rewritten with respect to the project directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5845
diff changeset
535 r"""(href|src)=[\\"']/([^\\"']+)[\\"']""",
b3cc692e3bfe Some additional improvements for the HTML previewer to be able to cope with absolute URLs. These get rewritten with respect to the project directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5845
diff changeset
536 re.IGNORECASE)
b3cc692e3bfe Some additional improvements for the HTML previewer to be able to cope with absolute URLs. These get rewritten with respect to the project directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5845
diff changeset
537 pos = 0
b3cc692e3bfe Some additional improvements for the HTML previewer to be able to cope with absolute URLs. These get rewritten with respect to the project directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5845
diff changeset
538 while True:
b3cc692e3bfe Some additional improvements for the HTML previewer to be able to cope with absolute URLs. These get rewritten with respect to the project directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5845
diff changeset
539 refMatch = refRe.search(txt, pos)
b3cc692e3bfe Some additional improvements for the HTML previewer to be able to cope with absolute URLs. These get rewritten with respect to the project directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5845
diff changeset
540 if refMatch is None:
b3cc692e3bfe Some additional improvements for the HTML previewer to be able to cope with absolute URLs. These get rewritten with respect to the project directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5845
diff changeset
541 break
b3cc692e3bfe Some additional improvements for the HTML previewer to be able to cope with absolute URLs. These get rewritten with respect to the project directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5845
diff changeset
542
b3cc692e3bfe Some additional improvements for the HTML previewer to be able to cope with absolute URLs. These get rewritten with respect to the project directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5845
diff changeset
543 txt = (txt[:refMatch.start(0)] + refMatch.group(1) + '="' + root +
b3cc692e3bfe Some additional improvements for the HTML previewer to be able to cope with absolute URLs. These get rewritten with respect to the project directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5845
diff changeset
544 refMatch.group(2) + '"' + txt[refMatch.end(0):])
b3cc692e3bfe Some additional improvements for the HTML previewer to be able to cope with absolute URLs. These get rewritten with respect to the project directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5845
diff changeset
545 pos = refMatch.end(0) + rootLen
b3cc692e3bfe Some additional improvements for the HTML previewer to be able to cope with absolute URLs. These get rewritten with respect to the project directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5845
diff changeset
546
b3cc692e3bfe Some additional improvements for the HTML previewer to be able to cope with absolute URLs. These get rewritten with respect to the project directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5845
diff changeset
547 return txt
b3cc692e3bfe Some additional improvements for the HTML previewer to be able to cope with absolute URLs. These get rewritten with respect to the project directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5845
diff changeset
548
5837
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5801
diff changeset
549 def __convertReST(self, text, useSphinx, restDocutilsHtmlFormat):
3458
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
550 """
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
551 Private method to convert ReST text into HTML.
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
552
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
553 @param text text to be processed (string)
3979
307b09aae43b Added capability to use 'Sphinx' to preview ReST files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
554 @param useSphinx flag indicating to use Sphinx to generate the
307b09aae43b Added capability to use 'Sphinx' to preview ReST files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
555 ReST preview (boolean)
5837
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5801
diff changeset
556 @param restDocutilsHtmlFormat HTML format to be generated by docutils
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5801
diff changeset
557 (string)
3979
307b09aae43b Added capability to use 'Sphinx' to preview ReST files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
558 @return processed HTML (string)
307b09aae43b Added capability to use 'Sphinx' to preview ReST files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
559 """
307b09aae43b Added capability to use 'Sphinx' to preview ReST files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
560 if useSphinx:
307b09aae43b Added capability to use 'Sphinx' to preview ReST files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
561 return self.__convertReSTSphinx(text)
307b09aae43b Added capability to use 'Sphinx' to preview ReST files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
562 else:
5837
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5801
diff changeset
563 return self.__convertReSTDocutils(text, restDocutilsHtmlFormat)
3979
307b09aae43b Added capability to use 'Sphinx' to preview ReST files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
564
307b09aae43b Added capability to use 'Sphinx' to preview ReST files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
565 def __convertReSTSphinx(self, text):
307b09aae43b Added capability to use 'Sphinx' to preview ReST files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
566 """
307b09aae43b Added capability to use 'Sphinx' to preview ReST files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
567 Private method to convert ReST text into HTML using 'sphinx'.
307b09aae43b Added capability to use 'Sphinx' to preview ReST files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
568
307b09aae43b Added capability to use 'Sphinx' to preview ReST files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
569 @param text text to be processed (string)
3458
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
570 @return processed HTML (string)
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
571 """
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
572 try:
3979
307b09aae43b Added capability to use 'Sphinx' to preview ReST files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
573 from sphinx.application import Sphinx # __IGNORE_EXCEPTION__
307b09aae43b Added capability to use 'Sphinx' to preview ReST files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
574 except ImportError:
307b09aae43b Added capability to use 'Sphinx' to preview ReST files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
575 return self.tr(
307b09aae43b Added capability to use 'Sphinx' to preview ReST files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
576 """<p>ReStructuredText preview requires the"""
307b09aae43b Added capability to use 'Sphinx' to preview ReST files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
577 """ <b>sphinx</b> package.<br/>Install it with"""
307b09aae43b Added capability to use 'Sphinx' to preview ReST files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
578 """ your package manager,'pip install Sphinx' or see"""
307b09aae43b Added capability to use 'Sphinx' to preview ReST files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
579 """ <a href="http://pypi.python.org/pypi/Sphinx">"""
307b09aae43b Added capability to use 'Sphinx' to preview ReST files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
580 """this page.</a></p>"""
307b09aae43b Added capability to use 'Sphinx' to preview ReST files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
581 """<p>Alternatively you may disable Sphinx usage"""
307b09aae43b Added capability to use 'Sphinx' to preview ReST files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
582 """ on the Editor, Filehandling configuration page.</p>""")
307b09aae43b Added capability to use 'Sphinx' to preview ReST files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
583
7675
7d23e502fe85 PreviewerHTML: fixed an issue raised by Sphinx when converting .rst files to .html.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7524
diff changeset
584 srcTempDir = tempfile.mkdtemp(prefix="eric-rest-src-")
7d23e502fe85 PreviewerHTML: fixed an issue raised by Sphinx when converting .rst files to .html.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7524
diff changeset
585 outTempDir = tempfile.mkdtemp(prefix="eric-rest-out-")
7d23e502fe85 PreviewerHTML: fixed an issue raised by Sphinx when converting .rst files to .html.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7524
diff changeset
586 doctreeTempDir = tempfile.mkdtemp(prefix="eric-rest-doctree-")
3979
307b09aae43b Added capability to use 'Sphinx' to preview ReST files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
587 try:
307b09aae43b Added capability to use 'Sphinx' to preview ReST files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
588 filename = 'sphinx_preview'
7675
7d23e502fe85 PreviewerHTML: fixed an issue raised by Sphinx when converting .rst files to .html.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7524
diff changeset
589 basePath = os.path.join(srcTempDir, filename)
7785
9978016560ec Changed code to use context manager 'open()' for file operations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7781
diff changeset
590 with open(basePath + '.rst', 'w', encoding='utf-8') as fh:
9978016560ec Changed code to use context manager 'open()' for file operations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7781
diff changeset
591 fh.write(text)
9978016560ec Changed code to use context manager 'open()' for file operations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7781
diff changeset
592
3979
307b09aae43b Added capability to use 'Sphinx' to preview ReST files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
593 overrides = {'html_add_permalinks': False,
307b09aae43b Added capability to use 'Sphinx' to preview ReST files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
594 'html_copy_source': False,
307b09aae43b Added capability to use 'Sphinx' to preview ReST files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
595 'html_title': 'Sphinx preview',
307b09aae43b Added capability to use 'Sphinx' to preview ReST files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
596 'html_use_index': False,
307b09aae43b Added capability to use 'Sphinx' to preview ReST files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
597 'html_use_modindex': False,
307b09aae43b Added capability to use 'Sphinx' to preview ReST files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
598 'html_use_smartypants': True,
3991
73731c4bf5bd Corrected some coding style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3981
diff changeset
599 'master_doc': filename}
7675
7d23e502fe85 PreviewerHTML: fixed an issue raised by Sphinx when converting .rst files to .html.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7524
diff changeset
600 app = Sphinx(srcdir=srcTempDir, confdir=None, outdir=outTempDir,
7d23e502fe85 PreviewerHTML: fixed an issue raised by Sphinx when converting .rst files to .html.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7524
diff changeset
601 doctreedir=doctreeTempDir, buildername='html',
3979
307b09aae43b Added capability to use 'Sphinx' to preview ReST files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
602 confoverrides=overrides, status=None,
307b09aae43b Added capability to use 'Sphinx' to preview ReST files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
603 warning=io.StringIO())
307b09aae43b Added capability to use 'Sphinx' to preview ReST files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
604 app.build(force_all=True, filenames=None)
307b09aae43b Added capability to use 'Sphinx' to preview ReST files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
605
7675
7d23e502fe85 PreviewerHTML: fixed an issue raised by Sphinx when converting .rst files to .html.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7524
diff changeset
606 basePath = os.path.join(outTempDir, filename)
7785
9978016560ec Changed code to use context manager 'open()' for file operations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7781
diff changeset
607 with open(basePath + '.html', 'r', encoding='utf-8') as fh:
9978016560ec Changed code to use context manager 'open()' for file operations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7781
diff changeset
608 html = fh.read()
3979
307b09aae43b Added capability to use 'Sphinx' to preview ReST files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
609 finally:
7675
7d23e502fe85 PreviewerHTML: fixed an issue raised by Sphinx when converting .rst files to .html.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7524
diff changeset
610 shutil.rmtree(srcTempDir)
7d23e502fe85 PreviewerHTML: fixed an issue raised by Sphinx when converting .rst files to .html.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7524
diff changeset
611 shutil.rmtree(outTempDir)
7d23e502fe85 PreviewerHTML: fixed an issue raised by Sphinx when converting .rst files to .html.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7524
diff changeset
612 shutil.rmtree(doctreeTempDir)
3979
307b09aae43b Added capability to use 'Sphinx' to preview ReST files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
613
307b09aae43b Added capability to use 'Sphinx' to preview ReST files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
614 return html
307b09aae43b Added capability to use 'Sphinx' to preview ReST files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
615
5837
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5801
diff changeset
616 def __convertReSTDocutils(self, text, htmlFormat):
3979
307b09aae43b Added capability to use 'Sphinx' to preview ReST files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
617 """
307b09aae43b Added capability to use 'Sphinx' to preview ReST files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
618 Private method to convert ReST text into HTML using 'docutils'.
307b09aae43b Added capability to use 'Sphinx' to preview ReST files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
619
307b09aae43b Added capability to use 'Sphinx' to preview ReST files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
620 @param text text to be processed (string)
5837
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5801
diff changeset
621 @param htmlFormat HTML format to be generated (string)
3979
307b09aae43b Added capability to use 'Sphinx' to preview ReST files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
622 @return processed HTML (string)
307b09aae43b Added capability to use 'Sphinx' to preview ReST files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
623 """
307b09aae43b Added capability to use 'Sphinx' to preview ReST files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
624 if 'sphinx' in sys.modules:
307b09aae43b Added capability to use 'Sphinx' to preview ReST files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
625 # Make sure any Sphinx polution of docutils has been removed.
307b09aae43b Added capability to use 'Sphinx' to preview ReST files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
626 unloadKeys = [k for k in sys.modules.keys()
307b09aae43b Added capability to use 'Sphinx' to preview ReST files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
627 if k.startswith(('docutils', 'sphinx'))]
307b09aae43b Added capability to use 'Sphinx' to preview ReST files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
628 for key in unloadKeys:
307b09aae43b Added capability to use 'Sphinx' to preview ReST files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
629 sys.modules.pop(key)
307b09aae43b Added capability to use 'Sphinx' to preview ReST files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
630
307b09aae43b Added capability to use 'Sphinx' to preview ReST files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
631 try:
307b09aae43b Added capability to use 'Sphinx' to preview ReST files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
632 import docutils.core # __IGNORE_EXCEPTION__
6794
10c368c9c02b PreviewerHTML: added a error handler for docutils SystemMessage exceptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
633 import docutils.utils # __IGNORE_EXCEPTION__
3458
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
634 except ImportError:
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
635 return self.tr(
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
636 """<p>ReStructuredText preview requires the"""
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
637 """ <b>python-docutils</b> package.<br/>Install it with"""
3979
307b09aae43b Added capability to use 'Sphinx' to preview ReST files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
638 """ your package manager, 'pip install docutils' or see"""
3458
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
639 """ <a href="http://pypi.python.org/pypi/docutils">"""
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
640 """this page.</a></p>""")
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
641
3981
5cd283505cfa A little change to the ReST previewer to discard errors generated by the docutils converter and sent to sys.stderr.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3979
diff changeset
642 # redirect sys.stderr because we are not interested in it here
5cd283505cfa A little change to the ReST previewer to discard errors generated by the docutils converter and sent to sys.stderr.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3979
diff changeset
643 origStderr = sys.stderr
5cd283505cfa A little change to the ReST previewer to discard errors generated by the docutils converter and sent to sys.stderr.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3979
diff changeset
644 sys.stderr = io.StringIO()
6794
10c368c9c02b PreviewerHTML: added a error handler for docutils SystemMessage exceptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
645 try:
10c368c9c02b PreviewerHTML: added a error handler for docutils SystemMessage exceptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
646 html = docutils.core.publish_string(
10c368c9c02b PreviewerHTML: added a error handler for docutils SystemMessage exceptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
647 text, writer_name=htmlFormat.lower()).decode("utf-8")
10c368c9c02b PreviewerHTML: added a error handler for docutils SystemMessage exceptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
648 except docutils.utils.SystemMessage as err:
10c368c9c02b PreviewerHTML: added a error handler for docutils SystemMessage exceptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
649 errStr = str(err).split(":")[-1].replace("\n", "<br/>")
10c368c9c02b PreviewerHTML: added a error handler for docutils SystemMessage exceptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
650 return self.tr(
10c368c9c02b PreviewerHTML: added a error handler for docutils SystemMessage exceptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
651 """<p>Docutils returned an error:</p><p>{0}</p>"""
10c368c9c02b PreviewerHTML: added a error handler for docutils SystemMessage exceptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
652 ).format(errStr)
10c368c9c02b PreviewerHTML: added a error handler for docutils SystemMessage exceptions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
653
3981
5cd283505cfa A little change to the ReST previewer to discard errors generated by the docutils converter and sent to sys.stderr.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3979
diff changeset
654 sys.stderr = origStderr
5cd283505cfa A little change to the ReST previewer to discard errors generated by the docutils converter and sent to sys.stderr.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3979
diff changeset
655 return html
3458
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
656
7301
6df711503ec0 PreviewerHTML: enhanced the Markdown previewer by using the PyMdown extensions, if they are available and have been enabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7264
diff changeset
657 def __convertMarkdown(self, text, convertNewLineToBreak,
6df711503ec0 PreviewerHTML: enhanced the Markdown previewer by using the PyMdown extensions, if they are available and have been enabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7264
diff changeset
658 usePyMdownExtensions, htmlFormat):
3458
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
659 """
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
660 Private method to convert Markdown text into HTML.
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
661
7301
6df711503ec0 PreviewerHTML: enhanced the Markdown previewer by using the PyMdown extensions, if they are available and have been enabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7264
diff changeset
662 @param text text to be processed
6df711503ec0 PreviewerHTML: enhanced the Markdown previewer by using the PyMdown extensions, if they are available and have been enabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7264
diff changeset
663 @type str
5837
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5801
diff changeset
664 @param convertNewLineToBreak flag indicating to convert new lines
7301
6df711503ec0 PreviewerHTML: enhanced the Markdown previewer by using the PyMdown extensions, if they are available and have been enabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7264
diff changeset
665 to HTML break (Markdown only)
6df711503ec0 PreviewerHTML: enhanced the Markdown previewer by using the PyMdown extensions, if they are available and have been enabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7264
diff changeset
666 @type bool
6df711503ec0 PreviewerHTML: enhanced the Markdown previewer by using the PyMdown extensions, if they are available and have been enabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7264
diff changeset
667 @param usePyMdownExtensions flag indicating to enable the PyMdown
6df711503ec0 PreviewerHTML: enhanced the Markdown previewer by using the PyMdown extensions, if they are available and have been enabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7264
diff changeset
668 extensions, if they are available
6df711503ec0 PreviewerHTML: enhanced the Markdown previewer by using the PyMdown extensions, if they are available and have been enabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7264
diff changeset
669 @type bool
6df711503ec0 PreviewerHTML: enhanced the Markdown previewer by using the PyMdown extensions, if they are available and have been enabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7264
diff changeset
670 @param htmlFormat HTML format to be generated by markdown
6df711503ec0 PreviewerHTML: enhanced the Markdown previewer by using the PyMdown extensions, if they are available and have been enabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7264
diff changeset
671 @type str
6df711503ec0 PreviewerHTML: enhanced the Markdown previewer by using the PyMdown extensions, if they are available and have been enabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7264
diff changeset
672 @return processed HTML
6df711503ec0 PreviewerHTML: enhanced the Markdown previewer by using the PyMdown extensions, if they are available and have been enabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7264
diff changeset
673 @rtype str
3458
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
674 """
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
675 try:
3979
307b09aae43b Added capability to use 'Sphinx' to preview ReST files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
676 import markdown # __IGNORE_EXCEPTION__
3458
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
677 except ImportError:
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
678 return self.tr(
5912
b6643d36dddd Added the rich text view to the documentation viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5905
diff changeset
679 """<p>Markdown preview requires the <b>Markdown</b> """
5394
b2c6179184f6 Started implementing a format button bar and provider classes for various markup languages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
680 """package.<br/>Install it with your package manager,"""
5912
b6643d36dddd Added the rich text view to the documentation viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5905
diff changeset
681 """ 'pip install Markdown' or see """
3458
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
682 """<a href="http://pythonhosted.org/Markdown/install.html">"""
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
683 """installation instructions.</a></p>""")
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
684
7314
c32c24345ca7 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7309
diff changeset
685 from . import PreviewerHTMLStyles
c32c24345ca7 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7309
diff changeset
686 from . import MarkdownExtensions
c32c24345ca7 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7309
diff changeset
687
7301
6df711503ec0 PreviewerHTML: enhanced the Markdown previewer by using the PyMdown extensions, if they are available and have been enabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7264
diff changeset
688 extensions = []
7309
5a434813eef3 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7304
diff changeset
689
7314
c32c24345ca7 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7309
diff changeset
690 mermaidNeeded = False
8227
349308e84eeb Applied some more code simplifications suggested by the new Simplify checker (Y102: use single if) (batch 2).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8218
diff changeset
691 if (
349308e84eeb Applied some more code simplifications suggested by the new Simplify checker (Y102: use single if) (batch 2).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8218
diff changeset
692 Preferences.getEditor("PreviewMarkdownMermaid") and
349308e84eeb Applied some more code simplifications suggested by the new Simplify checker (Y102: use single if) (batch 2).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8218
diff changeset
693 MarkdownExtensions.MermaidRegexFullText.search(text)
349308e84eeb Applied some more code simplifications suggested by the new Simplify checker (Y102: use single if) (batch 2).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8218
diff changeset
694 ):
349308e84eeb Applied some more code simplifications suggested by the new Simplify checker (Y102: use single if) (batch 2).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8218
diff changeset
695 extensions.append(MarkdownExtensions.MermaidExtension())
349308e84eeb Applied some more code simplifications suggested by the new Simplify checker (Y102: use single if) (batch 2).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8218
diff changeset
696 mermaidNeeded = True
7309
5a434813eef3 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7304
diff changeset
697
5a434813eef3 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7304
diff changeset
698 if convertNewLineToBreak:
5a434813eef3 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7304
diff changeset
699 extensions.append('nl2br')
5a434813eef3 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7304
diff changeset
700
5a434813eef3 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7304
diff changeset
701 pyMdown = False
7301
6df711503ec0 PreviewerHTML: enhanced the Markdown previewer by using the PyMdown extensions, if they are available and have been enabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7264
diff changeset
702 if usePyMdownExtensions:
8243
cc717c2ae956 Applied some more code simplifications suggested by the new Simplify checker (Y105: use contextlib.suppress) (batch 2).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8235
diff changeset
703 with contextlib.suppress(ImportError):
7301
6df711503ec0 PreviewerHTML: enhanced the Markdown previewer by using the PyMdown extensions, if they are available and have been enabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7264
diff changeset
704 import pymdownx # __IGNORE_EXCEPTION__ __IGNORE_WARNING__
6df711503ec0 PreviewerHTML: enhanced the Markdown previewer by using the PyMdown extensions, if they are available and have been enabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7264
diff changeset
705 # PyPI package is 'pymdown-extensions'
3458
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
706
7309
5a434813eef3 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7304
diff changeset
707 extensions.extend([
7314
c32c24345ca7 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7309
diff changeset
708 'toc',
7301
6df711503ec0 PreviewerHTML: enhanced the Markdown previewer by using the PyMdown extensions, if they are available and have been enabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7264
diff changeset
709 'pymdownx.extra', 'pymdownx.caret', 'pymdownx.emoji',
6df711503ec0 PreviewerHTML: enhanced the Markdown previewer by using the PyMdown extensions, if they are available and have been enabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7264
diff changeset
710 'pymdownx.mark', 'pymdownx.tilde', 'pymdownx.keys',
6df711503ec0 PreviewerHTML: enhanced the Markdown previewer by using the PyMdown extensions, if they are available and have been enabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7264
diff changeset
711 'pymdownx.tasklist', 'pymdownx.smartsymbols',
7309
5a434813eef3 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7304
diff changeset
712 ])
5a434813eef3 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7304
diff changeset
713 pyMdown = True
5a434813eef3 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7304
diff changeset
714
5a434813eef3 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7304
diff changeset
715 if not pyMdown:
5a434813eef3 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7304
diff changeset
716 extensions.extend(['extra', 'toc'])
7301
6df711503ec0 PreviewerHTML: enhanced the Markdown previewer by using the PyMdown extensions, if they are available and have been enabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7264
diff changeset
717
6df711503ec0 PreviewerHTML: enhanced the Markdown previewer by using the PyMdown extensions, if they are available and have been enabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7264
diff changeset
718 # version 2.0 supports only extension names, not instances
6df711503ec0 PreviewerHTML: enhanced the Markdown previewer by using the PyMdown extensions, if they are available and have been enabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7264
diff changeset
719 if (
6df711503ec0 PreviewerHTML: enhanced the Markdown previewer by using the PyMdown extensions, if they are available and have been enabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7264
diff changeset
720 markdown.version_info[0] > 2 or
6df711503ec0 PreviewerHTML: enhanced the Markdown previewer by using the PyMdown extensions, if they are available and have been enabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7264
diff changeset
721 (markdown.version_info[0] == 2 and
6df711503ec0 PreviewerHTML: enhanced the Markdown previewer by using the PyMdown extensions, if they are available and have been enabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7264
diff changeset
722 markdown.version_info[1] > 0)
6df711503ec0 PreviewerHTML: enhanced the Markdown previewer by using the PyMdown extensions, if they are available and have been enabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7264
diff changeset
723 ):
7314
c32c24345ca7 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7309
diff changeset
724 extensions.append(MarkdownExtensions.SimplePatternExtension())
3458
64bbac483843 Refactored the previewer code to allow to add more previewers and started adding support for a QSS previewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
725
7304
b072a364dd8d PreviewerHTML: more enhancments for the Markdown previewer related to MathJax.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7301
diff changeset
726 if Preferences.getEditor("PreviewMarkdownMathJax"):
b072a364dd8d PreviewerHTML: more enhancments for the Markdown previewer related to MathJax.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7301
diff changeset
727 mathjax = (
b072a364dd8d PreviewerHTML: more enhancments for the Markdown previewer related to MathJax.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7301
diff changeset
728 "<script type='text/javascript' id='MathJax-script' async"
b072a364dd8d PreviewerHTML: more enhancments for the Markdown previewer related to MathJax.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7301
diff changeset
729 " src='https://cdn.jsdelivr.net/npm/mathjax@3/es5/"
b072a364dd8d PreviewerHTML: more enhancments for the Markdown previewer related to MathJax.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7301
diff changeset
730 "tex-chtml.js'>\n"
b072a364dd8d PreviewerHTML: more enhancments for the Markdown previewer related to MathJax.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7301
diff changeset
731 "</script>\n"
b072a364dd8d PreviewerHTML: more enhancments for the Markdown previewer related to MathJax.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7301
diff changeset
732 )
7309
5a434813eef3 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7304
diff changeset
733 # prepare text for mathjax
5a434813eef3 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7304
diff changeset
734 text = (
5a434813eef3 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7304
diff changeset
735 text
5a434813eef3 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7304
diff changeset
736 .replace(r"\(", r"\\(")
5a434813eef3 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7304
diff changeset
737 .replace(r"\)", r"\\)")
5a434813eef3 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7304
diff changeset
738 .replace(r"\[", r"\\[")
5a434813eef3 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7304
diff changeset
739 .replace(r"\]", r"\\]")
5a434813eef3 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7304
diff changeset
740 )
7304
b072a364dd8d PreviewerHTML: more enhancments for the Markdown previewer related to MathJax.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7301
diff changeset
741 else:
b072a364dd8d PreviewerHTML: more enhancments for the Markdown previewer related to MathJax.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7301
diff changeset
742 mathjax = ""
b072a364dd8d PreviewerHTML: more enhancments for the Markdown previewer related to MathJax.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7301
diff changeset
743
7314
c32c24345ca7 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7309
diff changeset
744 if mermaidNeeded:
7309
5a434813eef3 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7304
diff changeset
745 mermaid = (
5a434813eef3 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7304
diff changeset
746 "<script type='text/javascript' id='Mermaid-script'"
5a434813eef3 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7304
diff changeset
747 " src='https://unpkg.com/mermaid@8/dist/mermaid.min.js'>\n"
5a434813eef3 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7304
diff changeset
748 "</script>\n"
5a434813eef3 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7304
diff changeset
749 )
8356
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
750 if ericApp().usesDarkPalette():
7524
282680dae446 HTML Preview and Exporter: added support for dark color schemes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
751 mermaid_initialize = (
282680dae446 HTML Preview and Exporter: added support for dark color schemes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
752 "<script>mermaid.initialize({"
282680dae446 HTML Preview and Exporter: added support for dark color schemes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
753 "theme: 'dark', "
282680dae446 HTML Preview and Exporter: added support for dark color schemes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
754 "startOnLoad:true"
282680dae446 HTML Preview and Exporter: added support for dark color schemes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
755 "});</script>"
282680dae446 HTML Preview and Exporter: added support for dark color schemes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
756 )
282680dae446 HTML Preview and Exporter: added support for dark color schemes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
757 else:
282680dae446 HTML Preview and Exporter: added support for dark color schemes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
758 mermaid_initialize = (
282680dae446 HTML Preview and Exporter: added support for dark color schemes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
759 "<script>mermaid.initialize({"
282680dae446 HTML Preview and Exporter: added support for dark color schemes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
760 "theme: 'default', "
282680dae446 HTML Preview and Exporter: added support for dark color schemes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
761 "startOnLoad:true"
282680dae446 HTML Preview and Exporter: added support for dark color schemes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
762 "});</script>"
282680dae446 HTML Preview and Exporter: added support for dark color schemes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
763 )
7309
5a434813eef3 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7304
diff changeset
764 else:
5a434813eef3 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7304
diff changeset
765 mermaid = ""
7524
282680dae446 HTML Preview and Exporter: added support for dark color schemes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
766 mermaid_initialize = ""
7309
5a434813eef3 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7304
diff changeset
767
7304
b072a364dd8d PreviewerHTML: more enhancments for the Markdown previewer related to MathJax.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7301
diff changeset
768 htmlFormat = Preferences.getEditor("PreviewMarkdownHTMLFormat").lower()
b072a364dd8d PreviewerHTML: more enhancments for the Markdown previewer related to MathJax.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7301
diff changeset
769 body = markdown.markdown(text, extensions=extensions,
b072a364dd8d PreviewerHTML: more enhancments for the Markdown previewer related to MathJax.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7301
diff changeset
770 output_format=htmlFormat.lower())
8260
2161475d9639 Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8243
diff changeset
771 style = (
2161475d9639 Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8243
diff changeset
772 (PreviewerHTMLStyles.css_markdown_dark +
2161475d9639 Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8243
diff changeset
773 PreviewerHTMLStyles.css_pygments_dark)
8356
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
774 if ericApp().usesDarkPalette() else
8260
2161475d9639 Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8243
diff changeset
775 (PreviewerHTMLStyles.css_markdown_light +
2161475d9639 Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8243
diff changeset
776 PreviewerHTMLStyles.css_pygments_light)
2161475d9639 Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8243
diff changeset
777 )
7304
b072a364dd8d PreviewerHTML: more enhancments for the Markdown previewer related to MathJax.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7301
diff changeset
778
b072a364dd8d PreviewerHTML: more enhancments for the Markdown previewer related to MathJax.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7301
diff changeset
779 if htmlFormat == "xhtml1":
b072a364dd8d PreviewerHTML: more enhancments for the Markdown previewer related to MathJax.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7301
diff changeset
780 head = (
b072a364dd8d PreviewerHTML: more enhancments for the Markdown previewer related to MathJax.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7301
diff changeset
781 '''<!DOCTYPE html PUBLIC "-//W3C//DTD'''
b072a364dd8d PreviewerHTML: more enhancments for the Markdown previewer related to MathJax.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7301
diff changeset
782 ''' XHTML 1.0 Transitional//EN"\n'''
b072a364dd8d PreviewerHTML: more enhancments for the Markdown previewer related to MathJax.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7301
diff changeset
783 ''' "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional'''
b072a364dd8d PreviewerHTML: more enhancments for the Markdown previewer related to MathJax.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7301
diff changeset
784 '''.dtd">\n'''
b072a364dd8d PreviewerHTML: more enhancments for the Markdown previewer related to MathJax.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7301
diff changeset
785 '''<html xmlns="http://www.w3.org/1999/xhtml">\n'''
b072a364dd8d PreviewerHTML: more enhancments for the Markdown previewer related to MathJax.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7301
diff changeset
786 )
b072a364dd8d PreviewerHTML: more enhancments for the Markdown previewer related to MathJax.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7301
diff changeset
787 elif htmlFormat == "html5":
b072a364dd8d PreviewerHTML: more enhancments for the Markdown previewer related to MathJax.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7301
diff changeset
788 head = (
b072a364dd8d PreviewerHTML: more enhancments for the Markdown previewer related to MathJax.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7301
diff changeset
789 '''<!DOCTYPE html>\n'''
b072a364dd8d PreviewerHTML: more enhancments for the Markdown previewer related to MathJax.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7301
diff changeset
790 '''<html lang="EN">\n'''
b072a364dd8d PreviewerHTML: more enhancments for the Markdown previewer related to MathJax.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7301
diff changeset
791 )
b072a364dd8d PreviewerHTML: more enhancments for the Markdown previewer related to MathJax.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7301
diff changeset
792 else:
b072a364dd8d PreviewerHTML: more enhancments for the Markdown previewer related to MathJax.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7301
diff changeset
793 head = '<html lang="EN">\n'
b072a364dd8d PreviewerHTML: more enhancments for the Markdown previewer related to MathJax.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7301
diff changeset
794 head += '''<head>\n'''
b072a364dd8d PreviewerHTML: more enhancments for the Markdown previewer related to MathJax.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7301
diff changeset
795 head += (
7960
e8fc383322f7 Harmonized some user visible strings and changed the term 'eric6' to the more generic 'eric'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
796 '''<meta name="Generator" content="eric" />\n'''
7304
b072a364dd8d PreviewerHTML: more enhancments for the Markdown previewer related to MathJax.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7301
diff changeset
797 '''<meta http-equiv="Content-Type" '''
b072a364dd8d PreviewerHTML: more enhancments for the Markdown previewer related to MathJax.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7301
diff changeset
798 '''content="text/html; charset=utf-8" />\n'''
b072a364dd8d PreviewerHTML: more enhancments for the Markdown previewer related to MathJax.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7301
diff changeset
799 '''{0}'''
7309
5a434813eef3 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7304
diff changeset
800 '''{1}'''
7314
c32c24345ca7 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7309
diff changeset
801 '''<style type="text/css">'''
c32c24345ca7 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7309
diff changeset
802 '''{2}'''
c32c24345ca7 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7309
diff changeset
803 '''</style>\n'''
7304
b072a364dd8d PreviewerHTML: more enhancments for the Markdown previewer related to MathJax.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7301
diff changeset
804 '''</head>\n'''
b072a364dd8d PreviewerHTML: more enhancments for the Markdown previewer related to MathJax.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7301
diff changeset
805 '''<body>\n'''
7524
282680dae446 HTML Preview and Exporter: added support for dark color schemes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
806 ).format(mathjax, mermaid, style)
7304
b072a364dd8d PreviewerHTML: more enhancments for the Markdown previewer related to MathJax.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7301
diff changeset
807
b072a364dd8d PreviewerHTML: more enhancments for the Markdown previewer related to MathJax.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7301
diff changeset
808 foot = '''\n</body>\n</html>\n'''
b072a364dd8d PreviewerHTML: more enhancments for the Markdown previewer related to MathJax.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7301
diff changeset
809
7524
282680dae446 HTML Preview and Exporter: added support for dark color schemes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
810 return head + body + mermaid_initialize + foot

eric ide

mercurial