eric6/QScintilla/Exporters/ExporterHTML.py

Wed, 21 Apr 2021 19:40:50 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Wed, 21 Apr 2021 19:40:50 +0200
changeset 8259
2bbec88047dd
parent 8243
cc717c2ae956
child 8273
698ae46f40a4
permissions
-rw-r--r--

Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator).

0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
7923
91e843545d9a Updated copyright for 2021.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7900
diff changeset
3 # Copyright (c) 2007 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing an exporter for HTML.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10 # This code is a port of the C++ code found in SciTE 1.74
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11 # Original code: Copyright 1998-2006 by Neil Hodgson <neilh@scintilla.org>
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
12
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13 import os
5837
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
14 import sys
7192
a22eee00b052 Started removing runtime support for Python2 and PyQt4.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
15 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: 8205
diff changeset
16 import contextlib
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17
7771
787a6b3f8c9f Optimized the use of Waiting Cursors by using a specialized context manager class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7524
diff changeset
18 from PyQt5.QtGui import QFontInfo
787a6b3f8c9f Optimized the use of Waiting Cursors by using a specialized context manager class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7524
diff changeset
19 from PyQt5.QtWidgets import QInputDialog
3656
441956d8fce5 Started porting eric5 to PyQt5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3484
diff changeset
20 from PyQt5.Qsci import QsciScintilla
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21
537
72b32daeb8d6 Continued replacing QMessageBox methods with own methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 535
diff changeset
22 from E5Gui import E5MessageBox
7771
787a6b3f8c9f Optimized the use of Waiting Cursors by using a specialized context manager class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7524
diff changeset
23 from E5Gui.E5OverrideCursor import E5OverrideCursor
537
72b32daeb8d6 Continued replacing QMessageBox methods with own methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 535
diff changeset
24
12
1d8dd9706f46 First commit after changing to Python 3.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
25 from .ExporterBase import ExporterBase
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27 import Preferences
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28 import Utilities
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
30
8205
4a0f1f896341 Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7960
diff changeset
31 class HTMLGenerator:
532
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
32 """
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
33 Class implementing an HTML generator for exporting source code.
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
34 """
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
35 def __init__(self, editor):
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
36 """
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
37 Constructor
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
38
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
39 @param editor reference to the editor object (QScintilla.Editor.Editor)
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
40 """
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
41 self.editor = editor
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
42
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
43 def generate(self, tabSize=4, useTabs=False, wysiwyg=True, folding=False,
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
44 onlyStylesUsed=False, titleFullPath=False):
532
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
45 """
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
46 Public method to generate HTML for the source editor.
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
47
7900
72b88fb20261 Corrected the use of '@keyparam' in the source documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7836
diff changeset
48 @param tabSize size of tabs (integer)
72b88fb20261 Corrected the use of '@keyparam' in the source documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7836
diff changeset
49 @param useTabs flag indicating the use of tab characters (boolean)
72b88fb20261 Corrected the use of '@keyparam' in the source documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7836
diff changeset
50 @param wysiwyg flag indicating colorization (boolean)
72b88fb20261 Corrected the use of '@keyparam' in the source documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7836
diff changeset
51 @param folding flag indicating usage of fold markers
72b88fb20261 Corrected the use of '@keyparam' in the source documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7836
diff changeset
52 @param onlyStylesUsed flag indicating to include only style
3011
18292228c724 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
53 definitions for styles used in the source (boolean)
7900
72b88fb20261 Corrected the use of '@keyparam' in the source documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7836
diff changeset
54 @param titleFullPath flag indicating to include the full file path
532
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
55 in the title tag (boolean)
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
56 @return generated HTML text (string)
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
57 """
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
58 self.editor.recolor(0, -1)
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
59
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
60 lengthDoc = self.editor.length()
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
61 styleIsUsed = {}
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
62 if onlyStylesUsed:
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
63 for index in range(QsciScintilla.STYLE_MAX + 1):
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
64 styleIsUsed[index] = False
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
65 # check the used styles
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
66 pos = 0
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
67 while pos < lengthDoc:
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
68 styleIsUsed[self.editor.styleAt(pos) & 0x7F] = True
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
69 pos += 1
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
70 else:
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
71 for index in range(QsciScintilla.STYLE_MAX + 1):
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
72 styleIsUsed[index] = True
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
73 styleIsUsed[QsciScintilla.STYLE_DEFAULT] = True
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
74
7267
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
75 html = (
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
76 '''<!DOCTYPE html PUBLIC "-//W3C//DTD'''
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
77 ''' XHTML 1.0 Transitional//EN"\n'''
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
78 ''' "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">'''
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
79 '''\n'''
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
80 '''<html xmlns="http://www.w3.org/1999/xhtml">\n'''
532
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
81 '''<head>\n'''
7267
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
82 )
532
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
83 if titleFullPath:
3011
18292228c724 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
84 html += '''<title>{0}</title>\n'''.format(
18292228c724 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
85 self.editor.getFileName())
532
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
86 else:
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
87 html += '''<title>{0}</title>\n'''.format(
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
88 os.path.basename(self.editor.getFileName()))
7267
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
89 html += (
7960
e8fc383322f7 Harmonized some user visible strings and changed the term 'eric6' to the more generic 'eric'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7954
diff changeset
90 '''<meta name="Generator" content="eric" />\n'''
7267
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
91 '''<meta http-equiv="Content-Type" '''
532
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
92 '''content="text/html; charset=utf-8" />\n'''
7267
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
93 )
532
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
94 if folding:
7267
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
95 html += (
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
96 '''<script language="JavaScript" type="text/javascript">\n'''
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
97 '''<!--\n'''
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
98 '''function symbol(id, sym) {\n'''
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
99 ''' if (id.textContent == undefined) {\n'''
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
100 ''' id.innerText = sym;\n'''
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
101 ''' } else {\n'''
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
102 ''' id.textContent = sym;\n'''
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
103 ''' }\n'''
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
104 '''}\n'''
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
105 '''function toggle(id) {\n'''
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
106 ''' var thislayer = document.getElementById('ln' + id);\n'''
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
107 ''' id -= 1;\n'''
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
108 ''' var togline = document.getElementById('hd' + id);\n'''
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
109 ''' var togsym = document.getElementById('bt' + id);\n'''
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
110 ''' if (thislayer.style.display == 'none') {\n'''
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
111 ''' thislayer.style.display = 'block';\n'''
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
112 ''' togline.style.textDecoration = 'none';\n'''
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
113 ''' symbol(togsym, '- ');\n'''
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
114 ''' } else {\n'''
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
115 ''' thislayer.style.display = 'none';\n'''
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
116 ''' togline.style.textDecoration = 'underline';\n'''
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
117 ''' symbol(togsym, '+ ');\n'''
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
118 ''' }\n'''
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
119 '''}\n'''
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
120 '''//-->\n'''
3011
18292228c724 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
121 '''</script>\n'''
7267
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
122 )
532
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
123
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
124 lex = self.editor.getLexer()
8259
2bbec88047dd 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
125 bgColour = (
2bbec88047dd 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
126 lex.paper(QsciScintilla.STYLE_DEFAULT).name()
2bbec88047dd 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
127 if lex else
2bbec88047dd 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
128 self.editor.paper().name()
2bbec88047dd 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
129 )
532
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
130
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
131 html += '''<style type="text/css">\n'''
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
132 if lex:
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
133 istyle = 0
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
134 while istyle <= QsciScintilla.STYLE_MAX:
7267
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
135 if (
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
136 (istyle <= QsciScintilla.STYLE_DEFAULT or
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
137 istyle > QsciScintilla.STYLE_LASTPREDEFINED) and
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
138 styleIsUsed[istyle]
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
139 ):
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
140 if (
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
141 lex.description(istyle) or
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
142 istyle == QsciScintilla.STYLE_DEFAULT
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
143 ):
532
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
144 font = lex.font(istyle)
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
145 colour = lex.color(istyle)
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
146 paper = lex.paper(istyle)
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
147 if istyle == QsciScintilla.STYLE_DEFAULT:
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
148 html += '''span {\n'''
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
149 else:
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
150 html += '''.S{0:d} {{\n'''.format(istyle)
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
151 if font.italic():
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
152 html += ''' font-style: italic;\n'''
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
153 if font.bold():
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
154 html += ''' font-weight: bold;\n'''
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
155 if wysiwyg:
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
156 html += ''' font-family: '{0}';\n'''.format(
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
157 font.family())
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
158 html += ''' color: {0};\n'''.format(colour.name())
7267
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
159 if (
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
160 istyle != QsciScintilla.STYLE_DEFAULT and
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
161 bgColour != paper.name()
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
162 ):
532
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
163 html += ''' background: {0};\n'''.format(
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
164 paper.name())
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
165 html += ''' text-decoration: inherit;\n'''
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
166 if wysiwyg:
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
167 html += ''' font-size: {0:d}pt;\n'''.format(
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
168 QFontInfo(font).pointSize())
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
169 html += '''}\n'''
7949
17c0a4ec3cf0 Fixed export as HTML+ODT/PDF/RTF/TEX when text using substyles.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 7923
diff changeset
170
17c0a4ec3cf0 Fixed export as HTML+ODT/PDF/RTF/TEX when text using substyles.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 7923
diff changeset
171 # get substyles
17c0a4ec3cf0 Fixed export as HTML+ODT/PDF/RTF/TEX when text using substyles.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 7923
diff changeset
172 subs_start, subs_count = self.editor.getSubStyleRange(
17c0a4ec3cf0 Fixed export as HTML+ODT/PDF/RTF/TEX when text using substyles.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 7923
diff changeset
173 istyle)
17c0a4ec3cf0 Fixed export as HTML+ODT/PDF/RTF/TEX when text using substyles.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 7923
diff changeset
174 for subs_idx in range(subs_count):
17c0a4ec3cf0 Fixed export as HTML+ODT/PDF/RTF/TEX when text using substyles.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 7923
diff changeset
175 styleIsUsed[subs_idx - subs_start] = True
17c0a4ec3cf0 Fixed export as HTML+ODT/PDF/RTF/TEX when text using substyles.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 7923
diff changeset
176 font = lex.font(subs_start + subs_idx)
17c0a4ec3cf0 Fixed export as HTML+ODT/PDF/RTF/TEX when text using substyles.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 7923
diff changeset
177 colour = lex.color(subs_start + subs_idx)
17c0a4ec3cf0 Fixed export as HTML+ODT/PDF/RTF/TEX when text using substyles.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 7923
diff changeset
178 paper = lex.paper(subs_start + subs_idx)
7954
d32319ede131 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7949
diff changeset
179 html += '.S{0:d} {{\n'.format(
d32319ede131 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7949
diff changeset
180 subs_idx - subs_start)
7949
17c0a4ec3cf0 Fixed export as HTML+ODT/PDF/RTF/TEX when text using substyles.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 7923
diff changeset
181 if font.italic():
17c0a4ec3cf0 Fixed export as HTML+ODT/PDF/RTF/TEX when text using substyles.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 7923
diff changeset
182 html += ' font-style: italic;\n'
17c0a4ec3cf0 Fixed export as HTML+ODT/PDF/RTF/TEX when text using substyles.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 7923
diff changeset
183 if font.bold():
17c0a4ec3cf0 Fixed export as HTML+ODT/PDF/RTF/TEX when text using substyles.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 7923
diff changeset
184 html += ' font-weight: bold;\n'
17c0a4ec3cf0 Fixed export as HTML+ODT/PDF/RTF/TEX when text using substyles.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 7923
diff changeset
185 if wysiwyg:
17c0a4ec3cf0 Fixed export as HTML+ODT/PDF/RTF/TEX when text using substyles.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 7923
diff changeset
186 html += " font-family: '{0}';\n".format(
17c0a4ec3cf0 Fixed export as HTML+ODT/PDF/RTF/TEX when text using substyles.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 7923
diff changeset
187 font.family())
17c0a4ec3cf0 Fixed export as HTML+ODT/PDF/RTF/TEX when text using substyles.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 7923
diff changeset
188 html += ' color: {0};\n'.format(colour.name())
17c0a4ec3cf0 Fixed export as HTML+ODT/PDF/RTF/TEX when text using substyles.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 7923
diff changeset
189 if wysiwyg:
17c0a4ec3cf0 Fixed export as HTML+ODT/PDF/RTF/TEX when text using substyles.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 7923
diff changeset
190 html += ' font-size: {0:d}pt;\n'.format(
17c0a4ec3cf0 Fixed export as HTML+ODT/PDF/RTF/TEX when text using substyles.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 7923
diff changeset
191 QFontInfo(font).pointSize())
17c0a4ec3cf0 Fixed export as HTML+ODT/PDF/RTF/TEX when text using substyles.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 7923
diff changeset
192 html += '}\n'
8205
4a0f1f896341 Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7960
diff changeset
193 # __IGNORE_WARNING_Y113__
532
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
194 else:
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
195 styleIsUsed[istyle] = False
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
196 istyle += 1
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
197 else:
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
198 colour = self.editor.color()
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
199 paper = self.editor.paper()
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
200 font = Preferences.getEditorOtherFonts("DefaultFont")
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
201 html += '''.S0 {\n'''
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
202 if font.italic():
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
203 html += ''' font-style: italic;\n'''
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
204 if font.bold():
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
205 html += ''' font-weight: bold;\n'''
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
206 if wysiwyg:
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
207 html += ''' font-family: '{0}';\n'''.format(font.family())
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
208 html += ''' color: {0};\n'''.format(colour.name())
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
209 if bgColour != paper.name():
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
210 html += ''' background: {0};\n'''.format(paper.name())
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
211 html += ''' text-decoration: inherit;\n'''
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
212 if wysiwyg:
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
213 html += ''' font-size: {0:d}pt;\n'''.format(
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
214 QFontInfo(font).pointSize())
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
215 html += '''}\n'''
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
216 html += '''</style>\n'''
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
217 html += '''</head>\n'''
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
218
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
219 html += '''<body bgcolor="{0}">\n'''.format(bgColour)
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
220 line = self.editor.lineAt(0)
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
221 level = self.editor.foldLevelAt(line) - QsciScintilla.SC_FOLDLEVELBASE
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
222 levelStack = [level]
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
223 styleCurrent = self.editor.styleAt(0)
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
224 inStyleSpan = False
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
225 inFoldSpan = False
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
226 # Global span for default attributes
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
227 if wysiwyg:
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
228 html += '''<span>'''
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
229 else:
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
230 html += '''<pre>'''
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
231
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
232 if folding:
7267
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
233 if (
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
234 self.editor.foldFlagsAt(line) &
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
235 QsciScintilla.SC_FOLDLEVELHEADERFLAG
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
236 ):
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
237 html += (
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
238 '''<span id="hd{0:d}" onclick="toggle('{1:d}')">'''
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
239 ).format(line, line + 1)
532
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
240 html += '''<span id="bt{0:d}">- </span>'''.format(line)
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
241 inFoldSpan = True
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
242 else:
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
243 html += '''&nbsp; '''
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
244
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
245 if styleIsUsed[styleCurrent]:
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
246 html += '''<span class="S{0:0d}">'''.format(styleCurrent)
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
247 inStyleSpan = True
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
248
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
249 column = 0
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
250 pos = 0
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
251 utf8 = self.editor.isUtf8()
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
252 utf8Ch = b""
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
253 utf8Len = 0
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
254
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
255 while pos < lengthDoc:
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
256 ch = self.editor.byteAt(pos)
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
257 style = self.editor.styleAt(pos)
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
258 if style != styleCurrent:
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
259 if inStyleSpan:
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
260 html += '''</span>'''
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
261 inStyleSpan = False
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
262 if ch not in [b'\r', b'\n']: # no need of a span for the EOL
532
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
263 if styleIsUsed[style]:
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
264 html += '''<span class="S{0:d}">'''.format(style)
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
265 inStyleSpan = True
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
266 styleCurrent = style
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
267
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
268 if ch == b' ':
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
269 if wysiwyg:
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
270 prevCh = b''
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
271 if column == 0:
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
272 # at start of line, must put a &nbsp;
532
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
273 # because regular space will be collapsed
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
274 prevCh = b' '
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
275 while pos < lengthDoc and self.editor.byteAt(pos) == b' ':
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
276 if prevCh != b' ':
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
277 html += ' '
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
278 else:
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
279 html += '''&nbsp;'''
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
280 prevCh = self.editor.byteAt(pos)
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
281 pos += 1
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
282 column += 1
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
283 pos -= 1
532
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
284 # the last incrementation will be done by the outer loop
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
285 else:
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
286 html += ' '
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
287 column += 1
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
288 elif ch == b'\t':
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
289 ts = tabSize - (column % tabSize)
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
290 if wysiwyg:
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
291 html += '''&nbsp;''' * ts
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
292 column += ts
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
293 else:
1112
8a7d1b9d18db Improved code quality by getting rid of star imports. That way pyflakes can do its job. A few bugs fixed found by flakes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
294 if useTabs:
532
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
295 html += '\t'
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
296 column += 1
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
297 else:
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
298 html += ' ' * ts
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
299 column += ts
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
300 elif ch in [b'\r', b'\n']:
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
301 if inStyleSpan:
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
302 html += '''</span>'''
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
303 inStyleSpan = False
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
304 if inFoldSpan:
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
305 html += '''</span>'''
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
306 inFoldSpan = False
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
307 if ch == b'\r' and self.editor.byteAt(pos + 1) == b'\n':
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
308 pos += 1 # CR+LF line ending, skip the "extra" EOL char
532
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
309 column = 0
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
310 if wysiwyg:
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
311 html += '''<br />'''
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
312
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
313 styleCurrent = self.editor.styleAt(pos + 1)
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
314 if folding:
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
315 line = self.editor.lineAt(pos + 1)
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
316 newLevel = self.editor.foldLevelAt(line)
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
317
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
318 if newLevel < level:
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
319 while levelStack[-1] > newLevel:
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
320 html += '''</span>'''
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
321 levelStack.pop()
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
322 html += '\n' # here to get clean code
532
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
323 if newLevel > level:
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
324 html += '''<span id="ln{0:d}">'''.format(line)
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
325 levelStack.append(newLevel)
7267
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
326 if (
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
327 self.editor.foldFlagsAt(line) &
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
328 QsciScintilla.SC_FOLDLEVELHEADERFLAG
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
329 ):
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
330 html += (
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
331 '''<span id="hd{0:d}"'''
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
332 ''' onclick="toggle('{1:d}')">'''
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
333 ).format(line, line + 1)
532
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
334 html += '''<span id="bt{0:d}">- </span>'''.format(line)
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
335 inFoldSpan = True
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
336 else:
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
337 html += '''&nbsp; '''
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
338 level = newLevel
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
339 else:
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
340 html += '\n'
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
341
7267
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
342 if (
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
343 styleIsUsed[styleCurrent] and
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
344 self.editor.byteAt(pos + 1) not in [b'\r', b'\n']
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
345 ):
532
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
346 # We know it's the correct next style,
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
347 # but no (empty) span for an empty line
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
348 html += '''<span class="S{0:0d}">'''.format(styleCurrent)
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
349 inStyleSpan = True
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
350 else:
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
351 if ch == b'<':
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
352 html += '''&lt;'''
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
353 elif ch == b'>':
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
354 html += '''&gt'''
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
355 elif ch == b'&':
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
356 html += '''&amp;'''
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
357 else:
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
358 if ord(ch) > 127 and utf8:
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
359 utf8Ch += ch
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
360 if utf8Len == 0:
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
361 if (utf8Ch[0] & 0xF0) == 0xF0:
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
362 utf8Len = 4
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
363 elif (utf8Ch[0] & 0xE0) == 0xE0:
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
364 utf8Len = 3
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
365 elif (utf8Ch[0] & 0xC0) == 0xC0:
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
366 utf8Len = 2
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
367 column -= 1 # will be incremented again later
532
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
368 elif len(utf8Ch) == utf8Len:
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
369 ch = utf8Ch.decode('utf8')
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
370 html += Utilities.html_encode(ch)
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
371 utf8Ch = b""
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
372 utf8Len = 0
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
373 else:
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
374 column -= 1 # will be incremented again later
532
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
375 else:
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
376 html += ch.decode()
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
377 column += 1
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
378
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
379 pos += 1
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
380
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
381 if inStyleSpan:
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
382 html += '''</span>'''
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
383
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
384 if folding:
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
385 while levelStack:
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
386 html += '''</span>'''
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
387 levelStack.pop()
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
388
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
389 if wysiwyg:
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
390 html += '''</span>'''
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
391 else:
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
392 html += '''</pre>'''
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
393
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
394 html += '''</body>\n</html>\n'''
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
395
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
396 return html
a3c0f1e2594a Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 429
diff changeset
397
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
398
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
399 class ExporterHTML(ExporterBase):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
400 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
401 Class implementing an exporter for HTML.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
402 """
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
403 def __init__(self, editor, parent=None):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
404 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
405 Constructor
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
406
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
407 @param editor reference to the editor object (QScintilla.Editor.Editor)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
408 @param parent parent object of the exporter (QObject)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
409 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
410 ExporterBase.__init__(self, editor, parent)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
411
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
412 def exportSource(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
413 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
414 Public method performing the export.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
415 """
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
416 filename = self._getFileName(self.tr("HTML Files (*.html)"))
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
417 if not filename:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
418 return
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
419
7771
787a6b3f8c9f Optimized the use of Waiting Cursors by using a specialized context manager class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7524
diff changeset
420 fn = self.editor.getFileName()
8205
4a0f1f896341 Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7960
diff changeset
421 extension = os.path.normcase(os.path.splitext(fn)[1][1:]) if fn else ""
7771
787a6b3f8c9f Optimized the use of Waiting Cursors by using a specialized context manager class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7524
diff changeset
422
787a6b3f8c9f Optimized the use of Waiting Cursors by using a specialized context manager class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7524
diff changeset
423 if (
787a6b3f8c9f Optimized the use of Waiting Cursors by using a specialized context manager class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7524
diff changeset
424 extension in Preferences.getEditor(
787a6b3f8c9f Optimized the use of Waiting Cursors by using a specialized context manager class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7524
diff changeset
425 "PreviewMarkdownFileNameExtensions") or
787a6b3f8c9f Optimized the use of Waiting Cursors by using a specialized context manager class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7524
diff changeset
426 self.editor.getLanguage().lower() == "markdown"
787a6b3f8c9f Optimized the use of Waiting Cursors by using a specialized context manager class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7524
diff changeset
427 ):
787a6b3f8c9f Optimized the use of Waiting Cursors by using a specialized context manager class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7524
diff changeset
428 # export markdown to HTML
787a6b3f8c9f Optimized the use of Waiting Cursors by using a specialized context manager class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7524
diff changeset
429 colorSchemes = [
787a6b3f8c9f Optimized the use of Waiting Cursors by using a specialized context manager class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7524
diff changeset
430 self.tr("Light Background Color"),
787a6b3f8c9f Optimized the use of Waiting Cursors by using a specialized context manager class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7524
diff changeset
431 self.tr("Dark Background Color"),
787a6b3f8c9f Optimized the use of Waiting Cursors by using a specialized context manager class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7524
diff changeset
432 ]
787a6b3f8c9f Optimized the use of Waiting Cursors by using a specialized context manager class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7524
diff changeset
433 colorScheme, ok = QInputDialog.getItem(
787a6b3f8c9f Optimized the use of Waiting Cursors by using a specialized context manager class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7524
diff changeset
434 None,
787a6b3f8c9f Optimized the use of Waiting Cursors by using a specialized context manager class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7524
diff changeset
435 self.tr("Markdown Export"),
787a6b3f8c9f Optimized the use of Waiting Cursors by using a specialized context manager class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7524
diff changeset
436 self.tr("Select color scheme:"),
787a6b3f8c9f Optimized the use of Waiting Cursors by using a specialized context manager class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7524
diff changeset
437 colorSchemes,
787a6b3f8c9f Optimized the use of Waiting Cursors by using a specialized context manager class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7524
diff changeset
438 0, False)
787a6b3f8c9f Optimized the use of Waiting Cursors by using a specialized context manager class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7524
diff changeset
439 if ok:
787a6b3f8c9f Optimized the use of Waiting Cursors by using a specialized context manager class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7524
diff changeset
440 colorSchemeIndex = colorSchemes.index(colorScheme)
5837
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
441 else:
7771
787a6b3f8c9f Optimized the use of Waiting Cursors by using a specialized context manager class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7524
diff changeset
442 # light background as default
787a6b3f8c9f Optimized the use of Waiting Cursors by using a specialized context manager class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7524
diff changeset
443 colorSchemeIndex = 0
787a6b3f8c9f Optimized the use of Waiting Cursors by using a specialized context manager class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7524
diff changeset
444 with E5OverrideCursor():
787a6b3f8c9f Optimized the use of Waiting Cursors by using a specialized context manager class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7524
diff changeset
445 html = self.__generateFromMarkdown(colorSchemeIndex == 1)
787a6b3f8c9f Optimized the use of Waiting Cursors by using a specialized context manager class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7524
diff changeset
446 elif (
787a6b3f8c9f Optimized the use of Waiting Cursors by using a specialized context manager class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7524
diff changeset
447 extension in Preferences.getEditor(
787a6b3f8c9f Optimized the use of Waiting Cursors by using a specialized context manager class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7524
diff changeset
448 "PreviewRestFileNameExtensions") or
787a6b3f8c9f Optimized the use of Waiting Cursors by using a specialized context manager class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7524
diff changeset
449 self.editor.getLanguage().lower() == "restructuredtext"
787a6b3f8c9f Optimized the use of Waiting Cursors by using a specialized context manager class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7524
diff changeset
450 ):
787a6b3f8c9f Optimized the use of Waiting Cursors by using a specialized context manager class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7524
diff changeset
451 # export ReST to HTML
787a6b3f8c9f Optimized the use of Waiting Cursors by using a specialized context manager class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7524
diff changeset
452 with E5OverrideCursor():
787a6b3f8c9f Optimized the use of Waiting Cursors by using a specialized context manager class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7524
diff changeset
453 html = self.__generateFromReSTDocutils()
787a6b3f8c9f Optimized the use of Waiting Cursors by using a specialized context manager class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7524
diff changeset
454 else:
787a6b3f8c9f Optimized the use of Waiting Cursors by using a specialized context manager class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7524
diff changeset
455 tabSize = self.editor.getEditorConfig("TabWidth")
787a6b3f8c9f Optimized the use of Waiting Cursors by using a specialized context manager class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7524
diff changeset
456 if tabSize == 0:
787a6b3f8c9f Optimized the use of Waiting Cursors by using a specialized context manager class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7524
diff changeset
457 tabSize = 4
787a6b3f8c9f Optimized the use of Waiting Cursors by using a specialized context manager class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7524
diff changeset
458 wysiwyg = Preferences.getEditorExporter("HTML/WYSIWYG")
787a6b3f8c9f Optimized the use of Waiting Cursors by using a specialized context manager class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7524
diff changeset
459 folding = Preferences.getEditorExporter("HTML/Folding")
787a6b3f8c9f Optimized the use of Waiting Cursors by using a specialized context manager class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7524
diff changeset
460 onlyStylesUsed = Preferences.getEditorExporter(
787a6b3f8c9f Optimized the use of Waiting Cursors by using a specialized context manager class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7524
diff changeset
461 "HTML/OnlyStylesUsed")
787a6b3f8c9f Optimized the use of Waiting Cursors by using a specialized context manager class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7524
diff changeset
462 titleFullPath = Preferences.getEditorExporter(
787a6b3f8c9f Optimized the use of Waiting Cursors by using a specialized context manager class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7524
diff changeset
463 "HTML/FullPathAsTitle")
787a6b3f8c9f Optimized the use of Waiting Cursors by using a specialized context manager class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7524
diff changeset
464 tabs = Preferences.getEditorExporter("HTML/UseTabs")
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
465
7771
787a6b3f8c9f Optimized the use of Waiting Cursors by using a specialized context manager class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7524
diff changeset
466 with E5OverrideCursor():
5837
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
467 generator = HTMLGenerator(self.editor)
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
468 html = generator.generate(
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
469 tabSize=tabSize,
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
470 useTabs=tabs,
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
471 wysiwyg=wysiwyg,
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
472 folding=folding,
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
473 onlyStylesUsed=onlyStylesUsed,
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
474 titleFullPath=titleFullPath
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
475 )
7771
787a6b3f8c9f Optimized the use of Waiting Cursors by using a specialized context manager class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7524
diff changeset
476
787a6b3f8c9f Optimized the use of Waiting Cursors by using a specialized context manager class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7524
diff changeset
477 if html:
8205
4a0f1f896341 Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7960
diff changeset
478 with E5OverrideCursor(), open(filename, "w", encoding="utf-8"
4a0f1f896341 Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7960
diff changeset
479 ) as f:
4a0f1f896341 Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7960
diff changeset
480 try:
4a0f1f896341 Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7960
diff changeset
481 f.write(html)
4a0f1f896341 Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7960
diff changeset
482 except OSError as err:
4a0f1f896341 Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7960
diff changeset
483 E5MessageBox.critical(
4a0f1f896341 Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7960
diff changeset
484 self.editor,
4a0f1f896341 Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7960
diff changeset
485 self.tr("Export source"),
4a0f1f896341 Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7960
diff changeset
486 self.tr(
4a0f1f896341 Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7960
diff changeset
487 """<p>The source could not be exported to"""
4a0f1f896341 Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7960
diff changeset
488 """ <b>{0}</b>.</p><p>Reason: {1}</p>""")
4a0f1f896341 Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7960
diff changeset
489 .format(filename, str(err)))
7771
787a6b3f8c9f Optimized the use of Waiting Cursors by using a specialized context manager class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7524
diff changeset
490 else:
787a6b3f8c9f Optimized the use of Waiting Cursors by using a specialized context manager class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7524
diff changeset
491 E5MessageBox.critical(
787a6b3f8c9f Optimized the use of Waiting Cursors by using a specialized context manager class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7524
diff changeset
492 self.editor,
787a6b3f8c9f Optimized the use of Waiting Cursors by using a specialized context manager class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7524
diff changeset
493 self.tr("Export source"),
787a6b3f8c9f Optimized the use of Waiting Cursors by using a specialized context manager class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7524
diff changeset
494 self.tr(
787a6b3f8c9f Optimized the use of Waiting Cursors by using a specialized context manager class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7524
diff changeset
495 """<p>The source could not be exported to"""
787a6b3f8c9f Optimized the use of Waiting Cursors by using a specialized context manager class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7524
diff changeset
496 """ <b>{0}</b>.</p><p>Reason: No HTML code"""
787a6b3f8c9f Optimized the use of Waiting Cursors by using a specialized context manager class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7524
diff changeset
497 """ generated.</p>""")
787a6b3f8c9f Optimized the use of Waiting Cursors by using a specialized context manager class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7524
diff changeset
498 .format(filename))
5837
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
499
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
500 def __generateFromReSTDocutils(self):
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
501 """
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
502 Private method to convert ReST text into HTML using 'docutils'.
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
503
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
504 @return processed HTML (string)
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
505 """
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
506 if 'sphinx' in sys.modules:
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
507 # Make sure any Sphinx polution of docutils has been removed.
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
508 unloadKeys = [k for k in sys.modules.keys()
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
509 if k.startswith(('docutils', 'sphinx'))]
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
510 for key in unloadKeys:
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
511 sys.modules.pop(key)
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
512
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
513 try:
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
514 import docutils.core # __IGNORE_EXCEPTION__
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
515 except ImportError:
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
516 E5MessageBox.critical(
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
517 self.editor,
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
518 self.tr("Export source"),
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
519 self.tr(
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
520 """<p>ReStructuredText export requires the"""
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
521 """ <b>python-docutils</b> package.<br/>Install it with"""
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
522 """ your package manager, 'pip install docutils' or see"""
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
523 """ <a href="http://pypi.python.org/pypi/docutils">"""
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
524 """this page.</a></p>""")
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
525 )
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
526 return ""
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
527
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
528 htmlFormat = Preferences.getEditor(
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
529 "PreviewRestDocutilsHTMLFormat").lower()
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
530 # redirect sys.stderr because we are not interested in it here
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
531 origStderr = sys.stderr
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
532 sys.stderr = io.StringIO()
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
533 html = docutils.core.publish_string(
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
534 self.editor.text(), writer_name=htmlFormat).decode("utf-8")
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
535 sys.stderr = origStderr
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
536 return html
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
537
7524
282680dae446 HTML Preview and Exporter: added support for dark color schemes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
538 def __generateFromMarkdown(self, useDarkScheme):
5837
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
539 """
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
540 Private method to convert Markdown text into HTML.
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
541
7524
282680dae446 HTML Preview and Exporter: added support for dark color schemes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
542 @param useDarkScheme flag indicating to export using a dark color
282680dae446 HTML Preview and Exporter: added support for dark color schemes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
543 scheme
282680dae446 HTML Preview and Exporter: added support for dark color schemes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
544 @type bool
5837
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
545 @return processed HTML
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
546 @rtype str
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
547 """
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
548 try:
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
549 import markdown # __IGNORE_EXCEPTION__
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
550 except ImportError:
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
551 E5MessageBox.critical(
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
552 self.editor,
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
553 self.tr("Export source"),
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
554 self.tr(
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
555 """<p>Markdown export requires the <b>python-markdown"""
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
556 """</b> package.<br/>Install it with your package"""
5861
26250d8ff4e4 Fixed some typos.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5837
diff changeset
557 """ manager, 'pip install docutils' or see """
5837
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
558 """<a href="http://pythonhosted.org/Markdown/install"""
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
559 """.html"> installation instructions.</a></p>""")
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
560 )
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
561 return ""
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
562
7314
c32c24345ca7 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7309
diff changeset
563 from UI.Previewers import PreviewerHTMLStyles
c32c24345ca7 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7309
diff changeset
564 from UI.Previewers import MarkdownExtensions
c32c24345ca7 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7309
diff changeset
565
7305
928858251f7a ExporterHTML: copied the Markdown changes to the exporter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7267
diff changeset
566 extensions = []
7309
5a434813eef3 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7305
diff changeset
567
7314
c32c24345ca7 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7309
diff changeset
568 text = self.editor.text()
c32c24345ca7 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7309
diff changeset
569
c32c24345ca7 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7309
diff changeset
570 mermaidNeeded = False
8205
4a0f1f896341 Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7960
diff changeset
571 if (
4a0f1f896341 Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7960
diff changeset
572 Preferences.getEditor("PreviewMarkdownMermaid") and
4a0f1f896341 Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7960
diff changeset
573 MarkdownExtensions.MermaidRegexFullText.search(text)
4a0f1f896341 Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7960
diff changeset
574 ):
4a0f1f896341 Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7960
diff changeset
575 extensions.append(MarkdownExtensions.MermaidExtension())
4a0f1f896341 Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7960
diff changeset
576 mermaidNeeded = True
7309
5a434813eef3 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7305
diff changeset
577
5a434813eef3 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7305
diff changeset
578 if Preferences.getEditor("PreviewMarkdownNLtoBR"):
5a434813eef3 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7305
diff changeset
579 extensions.append('nl2br')
5a434813eef3 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7305
diff changeset
580
5a434813eef3 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7305
diff changeset
581 pyMdown = False
7305
928858251f7a ExporterHTML: copied the Markdown changes to the exporter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7267
diff changeset
582 if Preferences.getEditor("PreviewMarkdownUsePyMdownExtensions"):
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: 8205
diff changeset
583 with contextlib.suppress(ImportError):
7305
928858251f7a ExporterHTML: copied the Markdown changes to the exporter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7267
diff changeset
584 import pymdownx # __IGNORE_EXCEPTION__ __IGNORE_WARNING__
928858251f7a ExporterHTML: copied the Markdown changes to the exporter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7267
diff changeset
585 # PyPI package is 'pymdown-extensions'
928858251f7a ExporterHTML: copied the Markdown changes to the exporter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7267
diff changeset
586
7309
5a434813eef3 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7305
diff changeset
587 extensions.extend([
7314
c32c24345ca7 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7309
diff changeset
588 'toc',
7305
928858251f7a ExporterHTML: copied the Markdown changes to the exporter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7267
diff changeset
589 'pymdownx.extra', 'pymdownx.caret', 'pymdownx.emoji',
928858251f7a ExporterHTML: copied the Markdown changes to the exporter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7267
diff changeset
590 'pymdownx.mark', 'pymdownx.tilde', 'pymdownx.keys',
928858251f7a ExporterHTML: copied the Markdown changes to the exporter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7267
diff changeset
591 'pymdownx.tasklist', 'pymdownx.smartsymbols',
7309
5a434813eef3 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7305
diff changeset
592 ])
5a434813eef3 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7305
diff changeset
593 pyMdown = True
5a434813eef3 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7305
diff changeset
594
5a434813eef3 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7305
diff changeset
595 if not pyMdown:
5a434813eef3 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7305
diff changeset
596 extensions.extend(['extra', 'toc'])
7305
928858251f7a ExporterHTML: copied the Markdown changes to the exporter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7267
diff changeset
597
928858251f7a ExporterHTML: copied the Markdown changes to the exporter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7267
diff changeset
598 # version 2.0 supports only extension names, not instances
928858251f7a ExporterHTML: copied the Markdown changes to the exporter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7267
diff changeset
599 if (
928858251f7a ExporterHTML: copied the Markdown changes to the exporter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7267
diff changeset
600 markdown.version_info[0] > 2 or
928858251f7a ExporterHTML: copied the Markdown changes to the exporter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7267
diff changeset
601 (markdown.version_info[0] == 2 and
928858251f7a ExporterHTML: copied the Markdown changes to the exporter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7267
diff changeset
602 markdown.version_info[1] > 0)
928858251f7a ExporterHTML: copied the Markdown changes to the exporter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7267
diff changeset
603 ):
7314
c32c24345ca7 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7309
diff changeset
604 extensions.append(MarkdownExtensions.SimplePatternExtension())
7309
5a434813eef3 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7305
diff changeset
605
7305
928858251f7a ExporterHTML: copied the Markdown changes to the exporter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7267
diff changeset
606 if Preferences.getEditor("PreviewMarkdownMathJax"):
928858251f7a ExporterHTML: copied the Markdown changes to the exporter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7267
diff changeset
607 mathjax = (
928858251f7a ExporterHTML: copied the Markdown changes to the exporter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7267
diff changeset
608 "<script type='text/javascript' id='MathJax-script' async"
928858251f7a ExporterHTML: copied the Markdown changes to the exporter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7267
diff changeset
609 " src='https://cdn.jsdelivr.net/npm/mathjax@3/es5/"
928858251f7a ExporterHTML: copied the Markdown changes to the exporter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7267
diff changeset
610 "tex-chtml.js'>\n"
928858251f7a ExporterHTML: copied the Markdown changes to the exporter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7267
diff changeset
611 "</script>\n"
928858251f7a ExporterHTML: copied the Markdown changes to the exporter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7267
diff changeset
612 )
7309
5a434813eef3 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7305
diff changeset
613 # prepare text for mathjax
5a434813eef3 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7305
diff changeset
614 text = (
5a434813eef3 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7305
diff changeset
615 text
5a434813eef3 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7305
diff changeset
616 .replace(r"\(", r"\\(")
5a434813eef3 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7305
diff changeset
617 .replace(r"\)", r"\\)")
5a434813eef3 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7305
diff changeset
618 .replace(r"\[", r"\\[")
5a434813eef3 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7305
diff changeset
619 .replace(r"\]", r"\\]")
5a434813eef3 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7305
diff changeset
620 )
7305
928858251f7a ExporterHTML: copied the Markdown changes to the exporter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7267
diff changeset
621 else:
928858251f7a ExporterHTML: copied the Markdown changes to the exporter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7267
diff changeset
622 mathjax = ""
5837
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
623
7314
c32c24345ca7 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7309
diff changeset
624 if mermaidNeeded:
7309
5a434813eef3 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7305
diff changeset
625 mermaid = (
5a434813eef3 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7305
diff changeset
626 "<script type='text/javascript' id='Mermaid-script'"
5a434813eef3 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7305
diff changeset
627 " src='https://unpkg.com/mermaid@8/dist/mermaid.min.js'>\n"
5a434813eef3 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7305
diff changeset
628 "</script>\n"
5a434813eef3 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7305
diff changeset
629 )
7524
282680dae446 HTML Preview and Exporter: added support for dark color schemes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
630 if useDarkScheme:
282680dae446 HTML Preview and Exporter: added support for dark color schemes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
631 mermaid_initialize = (
282680dae446 HTML Preview and Exporter: added support for dark color schemes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
632 "<script>mermaid.initialize({"
282680dae446 HTML Preview and Exporter: added support for dark color schemes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
633 "theme: 'dark', "
282680dae446 HTML Preview and Exporter: added support for dark color schemes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
634 "startOnLoad:true"
282680dae446 HTML Preview and Exporter: added support for dark color schemes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
635 "});</script>"
282680dae446 HTML Preview and Exporter: added support for dark color schemes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
636 )
282680dae446 HTML Preview and Exporter: added support for dark color schemes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
637 else:
282680dae446 HTML Preview and Exporter: added support for dark color schemes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
638 mermaid_initialize = (
282680dae446 HTML Preview and Exporter: added support for dark color schemes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
639 "<script>mermaid.initialize({"
282680dae446 HTML Preview and Exporter: added support for dark color schemes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
640 "theme: 'default', "
282680dae446 HTML Preview and Exporter: added support for dark color schemes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
641 "startOnLoad:true"
282680dae446 HTML Preview and Exporter: added support for dark color schemes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
642 "});</script>"
282680dae446 HTML Preview and Exporter: added support for dark color schemes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
643 )
7309
5a434813eef3 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7305
diff changeset
644 else:
5a434813eef3 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7305
diff changeset
645 mermaid = ""
7524
282680dae446 HTML Preview and Exporter: added support for dark color schemes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
646 mermaid_initialize = ""
7309
5a434813eef3 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7305
diff changeset
647
5837
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
648 htmlFormat = Preferences.getEditor("PreviewMarkdownHTMLFormat").lower()
7309
5a434813eef3 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7305
diff changeset
649 body = markdown.markdown(text, extensions=extensions,
7305
928858251f7a ExporterHTML: copied the Markdown changes to the exporter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7267
diff changeset
650 output_format=htmlFormat)
8259
2bbec88047dd 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
651 style = (
2bbec88047dd 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
652 (PreviewerHTMLStyles.css_markdown_dark +
2bbec88047dd 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
653 PreviewerHTMLStyles.css_pygments_dark)
2bbec88047dd 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
654 if useDarkScheme else
2bbec88047dd 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
655 (PreviewerHTMLStyles.css_markdown_light +
2bbec88047dd 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
656 PreviewerHTMLStyles.css_pygments_light)
2bbec88047dd 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
657 )
5837
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
658
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
659 if htmlFormat == "xhtml1":
7267
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
660 head = (
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
661 '''<!DOCTYPE html PUBLIC "-//W3C//DTD'''
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
662 ''' XHTML 1.0 Transitional//EN"\n'''
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
663 ''' "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional'''
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
664 '''.dtd">\n'''
5837
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
665 '''<html xmlns="http://www.w3.org/1999/xhtml">\n'''
7267
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
666 )
5837
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
667 elif htmlFormat == "html5":
7267
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
668 head = (
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
669 '''<!DOCTYPE html>\n'''
5837
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
670 '''<html lang="EN">\n'''
7267
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
671 )
5837
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
672 else:
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
673 head = '<html lang="EN">\n'
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
674 head += '''<head>\n'''
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
675 if Preferences.getEditorExporter("HTML/FullPathAsTitle"):
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
676 head += '''<title>{0}</title>\n'''.format(
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
677 self.editor.getFileName())
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
678 else:
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
679 head += '''<title>{0}</title>\n'''.format(
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
680 os.path.basename(self.editor.getFileName()))
7267
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
681 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: 7954
diff changeset
682 '''<meta name="Generator" content="eric" />\n'''
7267
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
683 '''<meta http-equiv="Content-Type" '''
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
684 '''content="text/html; charset=utf-8" />\n'''
7305
928858251f7a ExporterHTML: copied the Markdown changes to the exporter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7267
diff changeset
685 '''{0}'''
7309
5a434813eef3 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7305
diff changeset
686 '''{1}'''
7314
c32c24345ca7 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7309
diff changeset
687 '''<style type="text/css">'''
c32c24345ca7 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7309
diff changeset
688 '''{2}'''
c32c24345ca7 PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7309
diff changeset
689 '''</style>\n'''
7267
aedc309827c7 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
690 '''</head>\n'''
5837
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
691 '''<body>\n'''
7524
282680dae446 HTML Preview and Exporter: added support for dark color schemes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
692 ).format(mathjax, mermaid, style)
5837
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
693
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
694 foot = '''\n</body>\n</html>\n'''
9ef6a28f1694 - Exporter
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
695
7524
282680dae446 HTML Preview and Exporter: added support for dark color schemes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
696 return head + body + mermaid_initialize + foot

eric ide

mercurial