Wed, 01 Jan 2020 11:57:23 +0100
Updated copyright for 2020.
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 | |
7360
9190402e4505
Updated copyright for 2020.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7314
diff
changeset
|
3 | # Copyright (c) 2007 - 2020 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 | |
2525
8b507a9a2d40
Script changes: Future import added, super calls modified and unicode behavior for str.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2302
diff
changeset
|
10 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
11 | # 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
|
12 | # 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
|
13 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
14 | import os |
5837 | 15 | import sys |
7192
a22eee00b052
Started removing runtime support for Python2 and PyQt4.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
16 | import io |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
17 | |
3656
441956d8fce5
Started porting eric5 to PyQt5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3484
diff
changeset
|
18 | from PyQt5.QtCore import Qt |
441956d8fce5
Started porting eric5 to PyQt5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3484
diff
changeset
|
19 | from PyQt5.QtGui import QCursor, QFontInfo |
441956d8fce5
Started porting eric5 to PyQt5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3484
diff
changeset
|
20 | from PyQt5.QtWidgets import QApplication |
441956d8fce5
Started porting eric5 to PyQt5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3484
diff
changeset
|
21 | from PyQt5.Qsci import QsciScintilla |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
22 | |
537
72b32daeb8d6
Continued replacing QMessageBox methods with own methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
535
diff
changeset
|
23 | from E5Gui import E5MessageBox |
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 | |
532
a3c0f1e2594a
Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
429
diff
changeset
|
31 | class HTMLGenerator(object): |
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 | |
a3c0f1e2594a
Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
429
diff
changeset
|
48 | @keyparam tabSize size of tabs (integer) |
a3c0f1e2594a
Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
429
diff
changeset
|
49 | @keyparam useTabs flag indicating the use of tab characters (boolean) |
a3c0f1e2594a
Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
429
diff
changeset
|
50 | @keyparam wysiwyg flag indicating colorization (boolean) |
a3c0f1e2594a
Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
429
diff
changeset
|
51 | @keyparam folding flag indicating usage of fold markers |
3011
18292228c724
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2302
diff
changeset
|
52 | @keyparam onlyStylesUsed flag indicating to include only style |
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) |
532
a3c0f1e2594a
Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
429
diff
changeset
|
54 | @keyparam titleFullPath flag indicating to include the full file path |
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 += ( |
aedc309827c7
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
90 | '''<meta name="Generator" content="eric6" />\n''' |
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() |
a3c0f1e2594a
Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
429
diff
changeset
|
125 | 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
|
126 | bgColour = lex.paper(QsciScintilla.STYLE_DEFAULT).name() |
a3c0f1e2594a
Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
429
diff
changeset
|
127 | else: |
a3c0f1e2594a
Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
429
diff
changeset
|
128 | bgColour = self.editor.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
|
129 | |
a3c0f1e2594a
Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
429
diff
changeset
|
130 | 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
|
131 | 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
|
132 | 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
|
133 | while istyle <= QsciScintilla.STYLE_MAX: |
7267
aedc309827c7
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
134 | if ( |
aedc309827c7
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
135 | (istyle <= QsciScintilla.STYLE_DEFAULT or |
aedc309827c7
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
136 | istyle > QsciScintilla.STYLE_LASTPREDEFINED) and |
aedc309827c7
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
137 | styleIsUsed[istyle] |
aedc309827c7
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
138 | ): |
aedc309827c7
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
139 | if ( |
aedc309827c7
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
140 | lex.description(istyle) or |
aedc309827c7
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
141 | istyle == QsciScintilla.STYLE_DEFAULT |
aedc309827c7
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
142 | ): |
532
a3c0f1e2594a
Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
429
diff
changeset
|
143 | 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
|
144 | 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
|
145 | 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
|
146 | 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
|
147 | 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
|
148 | else: |
a3c0f1e2594a
Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
429
diff
changeset
|
149 | 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
|
150 | 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
|
151 | 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
|
152 | 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
|
153 | 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
|
154 | 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
|
155 | 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
|
156 | 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
|
157 | 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
|
158 | if ( |
aedc309827c7
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
159 | istyle != QsciScintilla.STYLE_DEFAULT and |
aedc309827c7
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
160 | bgColour != paper.name() |
aedc309827c7
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
161 | ): |
532
a3c0f1e2594a
Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
429
diff
changeset
|
162 | 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
|
163 | 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
|
164 | 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
|
165 | 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
|
166 | 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
|
167 | 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
|
168 | 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
|
169 | else: |
a3c0f1e2594a
Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
429
diff
changeset
|
170 | 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
|
171 | 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
|
172 | else: |
a3c0f1e2594a
Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
429
diff
changeset
|
173 | 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
|
174 | 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
|
175 | 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
|
176 | 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
|
177 | 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
|
178 | 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
|
179 | 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
|
180 | 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
|
181 | 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
|
182 | 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
|
183 | 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
|
184 | 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
|
185 | 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
|
186 | 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
|
187 | 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
|
188 | 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
|
189 | 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
|
190 | 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
|
191 | 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
|
192 | 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
|
193 | |
a3c0f1e2594a
Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
429
diff
changeset
|
194 | 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
|
195 | 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
|
196 | 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
|
197 | 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
|
198 | 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
|
199 | 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
|
200 | 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
|
201 | # 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
|
202 | 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
|
203 | 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
|
204 | else: |
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 += '''<pre>''' |
a3c0f1e2594a
Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
429
diff
changeset
|
206 | |
a3c0f1e2594a
Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
429
diff
changeset
|
207 | if folding: |
7267
aedc309827c7
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
208 | if ( |
aedc309827c7
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
209 | self.editor.foldFlagsAt(line) & |
aedc309827c7
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
210 | QsciScintilla.SC_FOLDLEVELHEADERFLAG |
aedc309827c7
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
211 | ): |
aedc309827c7
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
212 | html += ( |
aedc309827c7
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
213 | '''<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
|
214 | ).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
|
215 | 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
|
216 | 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
|
217 | else: |
a3c0f1e2594a
Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
429
diff
changeset
|
218 | html += ''' ''' |
a3c0f1e2594a
Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
429
diff
changeset
|
219 | |
a3c0f1e2594a
Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
429
diff
changeset
|
220 | 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
|
221 | 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
|
222 | 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
|
223 | |
a3c0f1e2594a
Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
429
diff
changeset
|
224 | 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
|
225 | 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
|
226 | 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
|
227 | 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
|
228 | 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
|
229 | |
a3c0f1e2594a
Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
429
diff
changeset
|
230 | 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
|
231 | 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
|
232 | 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
|
233 | 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
|
234 | 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
|
235 | 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
|
236 | 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
|
237 | 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
|
238 | 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
|
239 | 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
|
240 | 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
|
241 | 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
|
242 | |
a3c0f1e2594a
Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
429
diff
changeset
|
243 | 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
|
244 | 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
|
245 | 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
|
246 | 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
|
247 | # at start of line, must put a |
532
a3c0f1e2594a
Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
429
diff
changeset
|
248 | # 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
|
249 | 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
|
250 | 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
|
251 | 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
|
252 | html += ' ' |
a3c0f1e2594a
Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
429
diff
changeset
|
253 | else: |
a3c0f1e2594a
Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
429
diff
changeset
|
254 | html += ''' ''' |
a3c0f1e2594a
Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
429
diff
changeset
|
255 | 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
|
256 | 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
|
257 | 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
|
258 | 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
|
259 | # 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
|
260 | else: |
a3c0f1e2594a
Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
429
diff
changeset
|
261 | html += ' ' |
a3c0f1e2594a
Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
429
diff
changeset
|
262 | 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
|
263 | 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
|
264 | 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
|
265 | 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
|
266 | 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
|
267 | 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
|
268 | 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
|
269 | 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
|
270 | 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
|
271 | 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
|
272 | else: |
a3c0f1e2594a
Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
429
diff
changeset
|
273 | 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
|
274 | 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
|
275 | 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
|
276 | 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
|
277 | 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
|
278 | 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
|
279 | 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
|
280 | 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
|
281 | 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
|
282 | 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
|
283 | 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
|
284 | 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
|
285 | 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
|
286 | 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
|
287 | |
a3c0f1e2594a
Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
429
diff
changeset
|
288 | 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
|
289 | 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
|
290 | 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
|
291 | 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
|
292 | |
a3c0f1e2594a
Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
429
diff
changeset
|
293 | 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
|
294 | 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
|
295 | 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
|
296 | 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
|
297 | 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
|
298 | 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
|
299 | 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
|
300 | levelStack.append(newLevel) |
7267
aedc309827c7
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
301 | if ( |
aedc309827c7
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
302 | self.editor.foldFlagsAt(line) & |
aedc309827c7
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
303 | QsciScintilla.SC_FOLDLEVELHEADERFLAG |
aedc309827c7
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
304 | ): |
aedc309827c7
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
305 | html += ( |
aedc309827c7
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
306 | '''<span id="hd{0:d}"''' |
aedc309827c7
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
307 | ''' onclick="toggle('{1:d}')">''' |
aedc309827c7
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
308 | ).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
|
309 | 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
|
310 | 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
|
311 | else: |
a3c0f1e2594a
Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
429
diff
changeset
|
312 | html += ''' ''' |
a3c0f1e2594a
Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
429
diff
changeset
|
313 | 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
|
314 | else: |
a3c0f1e2594a
Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
429
diff
changeset
|
315 | 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
|
316 | |
7267
aedc309827c7
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
317 | if ( |
aedc309827c7
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
318 | styleIsUsed[styleCurrent] and |
aedc309827c7
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
319 | 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
|
320 | ): |
532
a3c0f1e2594a
Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
429
diff
changeset
|
321 | # 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
|
322 | # 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
|
323 | 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
|
324 | 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
|
325 | else: |
a3c0f1e2594a
Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
429
diff
changeset
|
326 | 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
|
327 | html += '''<''' |
a3c0f1e2594a
Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
429
diff
changeset
|
328 | 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
|
329 | html += '''>''' |
a3c0f1e2594a
Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
429
diff
changeset
|
330 | 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
|
331 | html += '''&''' |
a3c0f1e2594a
Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
429
diff
changeset
|
332 | else: |
a3c0f1e2594a
Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
429
diff
changeset
|
333 | 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
|
334 | 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
|
335 | 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
|
336 | 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
|
337 | 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
|
338 | 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
|
339 | 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
|
340 | 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
|
341 | 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
|
342 | 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
|
343 | 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
|
344 | 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
|
345 | 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
|
346 | 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
|
347 | 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
|
348 | 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
|
349 | 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
|
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 | 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
|
352 | 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
|
353 | |
a3c0f1e2594a
Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
429
diff
changeset
|
354 | 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
|
355 | |
a3c0f1e2594a
Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
429
diff
changeset
|
356 | 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
|
357 | 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
|
358 | |
a3c0f1e2594a
Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
429
diff
changeset
|
359 | 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
|
360 | 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
|
361 | 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
|
362 | 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
|
363 | |
a3c0f1e2594a
Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
429
diff
changeset
|
364 | 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
|
365 | 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
|
366 | else: |
a3c0f1e2594a
Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
429
diff
changeset
|
367 | 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
|
368 | |
a3c0f1e2594a
Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
429
diff
changeset
|
369 | 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
|
370 | |
a3c0f1e2594a
Added a source code exporter for the Open Document Text (ODT) format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
429
diff
changeset
|
371 | 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
|
372 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
791
diff
changeset
|
373 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
374 | class ExporterHTML(ExporterBase): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
375 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
376 | Class implementing an exporter for HTML. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
377 | """ |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
791
diff
changeset
|
378 | def __init__(self, editor, parent=None): |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
379 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
380 | Constructor |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
381 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
382 | @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
|
383 | @param parent parent object of the exporter (QObject) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
384 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
385 | ExporterBase.__init__(self, editor, parent) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
386 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
387 | def exportSource(self): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
388 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
389 | Public method performing the export. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
390 | """ |
3190
a9a94491c4fd
Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3160
diff
changeset
|
391 | filename = self._getFileName(self.tr("HTML Files (*.html)")) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
392 | if not filename: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
393 | return |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
394 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
395 | try: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
396 | QApplication.setOverrideCursor(QCursor(Qt.WaitCursor)) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
397 | QApplication.processEvents() |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
398 | |
5837 | 399 | fn = self.editor.getFileName() |
400 | if fn: | |
401 | extension = os.path.normcase(os.path.splitext(fn)[1][1:]) | |
402 | else: | |
403 | extension = "" | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
404 | |
7267
aedc309827c7
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
405 | if ( |
aedc309827c7
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
406 | extension in Preferences.getEditor( |
aedc309827c7
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
407 | "PreviewMarkdownFileNameExtensions") or |
aedc309827c7
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
408 | self.editor.getLanguage().lower() == "markdown" |
aedc309827c7
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
409 | ): |
5837 | 410 | # export markdown to HTML |
411 | html = self.__generateFromMarkdown() | |
7267
aedc309827c7
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
412 | elif ( |
aedc309827c7
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
413 | extension in Preferences.getEditor( |
aedc309827c7
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
414 | "PreviewRestFileNameExtensions") or |
aedc309827c7
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
415 | self.editor.getLanguage().lower() == "restructuredtext" |
aedc309827c7
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
416 | ): |
5837 | 417 | # export ReST to HTML |
418 | html = self.__generateFromReSTDocutils() | |
419 | else: | |
6105
cbd34d558bd9
Finished implementing support for EditorConfig for the IDE editor component and the standalone editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
420 | tabSize = self.editor.getEditorConfig("TabWidth") |
5837 | 421 | if tabSize == 0: |
422 | tabSize = 4 | |
423 | wysiwyg = Preferences.getEditorExporter("HTML/WYSIWYG") | |
424 | folding = Preferences.getEditorExporter("HTML/Folding") | |
425 | onlyStylesUsed = Preferences.getEditorExporter( | |
426 | "HTML/OnlyStylesUsed") | |
427 | titleFullPath = Preferences.getEditorExporter( | |
428 | "HTML/FullPathAsTitle") | |
429 | tabs = Preferences.getEditorExporter("HTML/UseTabs") | |
430 | ||
431 | generator = HTMLGenerator(self.editor) | |
432 | html = generator.generate( | |
433 | tabSize=tabSize, | |
434 | useTabs=tabs, | |
435 | wysiwyg=wysiwyg, | |
436 | folding=folding, | |
437 | onlyStylesUsed=onlyStylesUsed, | |
438 | titleFullPath=titleFullPath | |
439 | ) | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
440 | |
5837 | 441 | if html: |
442 | try: | |
443 | f = open(filename, "w", encoding="utf-8") | |
444 | f.write(html) | |
445 | f.close() | |
446 | except IOError as err: | |
447 | QApplication.restoreOverrideCursor() | |
448 | E5MessageBox.critical( | |
449 | self.editor, | |
450 | self.tr("Export source"), | |
451 | self.tr( | |
452 | """<p>The source could not be exported to""" | |
453 | """ <b>{0}</b>.</p><p>Reason: {1}</p>""") | |
454 | .format(filename, str(err))) | |
455 | else: | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
456 | QApplication.restoreOverrideCursor() |
3011
18292228c724
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2302
diff
changeset
|
457 | E5MessageBox.critical( |
18292228c724
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2302
diff
changeset
|
458 | self.editor, |
3190
a9a94491c4fd
Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3160
diff
changeset
|
459 | self.tr("Export source"), |
a9a94491c4fd
Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3160
diff
changeset
|
460 | self.tr( |
3011
18292228c724
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2302
diff
changeset
|
461 | """<p>The source could not be exported to""" |
5837 | 462 | """ <b>{0}</b>.</p><p>Reason: No HTML code""" |
463 | """ generated.</p>""") | |
464 | .format(filename)) | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
465 | finally: |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
791
diff
changeset
|
466 | QApplication.restoreOverrideCursor() |
5837 | 467 | |
468 | def __generateFromReSTDocutils(self): | |
469 | """ | |
470 | Private method to convert ReST text into HTML using 'docutils'. | |
471 | ||
472 | @return processed HTML (string) | |
473 | """ | |
474 | if 'sphinx' in sys.modules: | |
475 | # Make sure any Sphinx polution of docutils has been removed. | |
476 | unloadKeys = [k for k in sys.modules.keys() | |
477 | if k.startswith(('docutils', 'sphinx'))] | |
478 | for key in unloadKeys: | |
479 | sys.modules.pop(key) | |
480 | ||
481 | try: | |
482 | import docutils.core # __IGNORE_EXCEPTION__ | |
483 | except ImportError: | |
484 | E5MessageBox.critical( | |
485 | self.editor, | |
486 | self.tr("Export source"), | |
487 | self.tr( | |
488 | """<p>ReStructuredText export requires the""" | |
489 | """ <b>python-docutils</b> package.<br/>Install it with""" | |
490 | """ your package manager, 'pip install docutils' or see""" | |
491 | """ <a href="http://pypi.python.org/pypi/docutils">""" | |
492 | """this page.</a></p>""") | |
493 | ) | |
494 | return "" | |
495 | ||
496 | htmlFormat = Preferences.getEditor( | |
497 | "PreviewRestDocutilsHTMLFormat").lower() | |
498 | # redirect sys.stderr because we are not interested in it here | |
499 | origStderr = sys.stderr | |
500 | sys.stderr = io.StringIO() | |
501 | html = docutils.core.publish_string( | |
502 | self.editor.text(), writer_name=htmlFormat).decode("utf-8") | |
503 | sys.stderr = origStderr | |
504 | return html | |
505 | ||
506 | def __generateFromMarkdown(self): | |
507 | """ | |
508 | Private method to convert Markdown text into HTML. | |
509 | ||
510 | @return processed HTML | |
511 | @rtype str | |
512 | """ | |
513 | try: | |
514 | import markdown # __IGNORE_EXCEPTION__ | |
515 | except ImportError: | |
516 | E5MessageBox.critical( | |
517 | self.editor, | |
518 | self.tr("Export source"), | |
519 | self.tr( | |
520 | """<p>Markdown export requires the <b>python-markdown""" | |
521 | """</b> package.<br/>Install it with your package""" | |
5861
26250d8ff4e4
Fixed some typos.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5837
diff
changeset
|
522 | """ manager, 'pip install docutils' or see """ |
5837 | 523 | """<a href="http://pythonhosted.org/Markdown/install""" |
524 | """.html"> installation instructions.</a></p>""") | |
525 | ) | |
526 | return "" | |
527 | ||
7314
c32c24345ca7
PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7309
diff
changeset
|
528 | from UI.Previewers import PreviewerHTMLStyles |
c32c24345ca7
PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7309
diff
changeset
|
529 | from UI.Previewers import MarkdownExtensions |
c32c24345ca7
PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7309
diff
changeset
|
530 | |
7305
928858251f7a
ExporterHTML: copied the Markdown changes to the exporter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7267
diff
changeset
|
531 | extensions = [] |
7309
5a434813eef3
PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7305
diff
changeset
|
532 | |
7314
c32c24345ca7
PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7309
diff
changeset
|
533 | text = self.editor.text() |
c32c24345ca7
PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7309
diff
changeset
|
534 | |
c32c24345ca7
PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7309
diff
changeset
|
535 | mermaidNeeded = False |
7309
5a434813eef3
PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7305
diff
changeset
|
536 | if Preferences.getEditor("PreviewMarkdownMermaid"): |
7314
c32c24345ca7
PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7309
diff
changeset
|
537 | if MarkdownExtensions.MermaidRegex.search(text): |
c32c24345ca7
PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7309
diff
changeset
|
538 | extensions.append(MarkdownExtensions.MermaidExtension()) |
c32c24345ca7
PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7309
diff
changeset
|
539 | mermaidNeeded = True |
7309
5a434813eef3
PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7305
diff
changeset
|
540 | |
5a434813eef3
PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7305
diff
changeset
|
541 | if Preferences.getEditor("PreviewMarkdownNLtoBR"): |
5a434813eef3
PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7305
diff
changeset
|
542 | extensions.append('nl2br') |
5a434813eef3
PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7305
diff
changeset
|
543 | |
5a434813eef3
PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7305
diff
changeset
|
544 | pyMdown = False |
7305
928858251f7a
ExporterHTML: copied the Markdown changes to the exporter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7267
diff
changeset
|
545 | if Preferences.getEditor("PreviewMarkdownUsePyMdownExtensions"): |
928858251f7a
ExporterHTML: copied the Markdown changes to the exporter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7267
diff
changeset
|
546 | try: |
928858251f7a
ExporterHTML: copied the Markdown changes to the exporter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7267
diff
changeset
|
547 | 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
|
548 | # PyPI package is 'pymdown-extensions' |
928858251f7a
ExporterHTML: copied the Markdown changes to the exporter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7267
diff
changeset
|
549 | |
7309
5a434813eef3
PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7305
diff
changeset
|
550 | extensions.extend([ |
7314
c32c24345ca7
PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7309
diff
changeset
|
551 | 'toc', |
7305
928858251f7a
ExporterHTML: copied the Markdown changes to the exporter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7267
diff
changeset
|
552 | '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
|
553 | '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
|
554 | 'pymdownx.tasklist', 'pymdownx.smartsymbols', |
7309
5a434813eef3
PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7305
diff
changeset
|
555 | ]) |
5a434813eef3
PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7305
diff
changeset
|
556 | pyMdown = True |
7305
928858251f7a
ExporterHTML: copied the Markdown changes to the exporter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7267
diff
changeset
|
557 | except ImportError: |
928858251f7a
ExporterHTML: copied the Markdown changes to the exporter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7267
diff
changeset
|
558 | pass |
7309
5a434813eef3
PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7305
diff
changeset
|
559 | |
5a434813eef3
PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7305
diff
changeset
|
560 | if not pyMdown: |
5a434813eef3
PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7305
diff
changeset
|
561 | extensions.extend(['extra', 'toc']) |
7305
928858251f7a
ExporterHTML: copied the Markdown changes to the exporter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7267
diff
changeset
|
562 | |
928858251f7a
ExporterHTML: copied the Markdown changes to the exporter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7267
diff
changeset
|
563 | # 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
|
564 | if ( |
928858251f7a
ExporterHTML: copied the Markdown changes to the exporter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7267
diff
changeset
|
565 | 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
|
566 | (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
|
567 | markdown.version_info[1] > 0) |
928858251f7a
ExporterHTML: copied the Markdown changes to the exporter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7267
diff
changeset
|
568 | ): |
7314
c32c24345ca7
PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7309
diff
changeset
|
569 | extensions.append(MarkdownExtensions.SimplePatternExtension()) |
7309
5a434813eef3
PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7305
diff
changeset
|
570 | |
7305
928858251f7a
ExporterHTML: copied the Markdown changes to the exporter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7267
diff
changeset
|
571 | if Preferences.getEditor("PreviewMarkdownMathJax"): |
928858251f7a
ExporterHTML: copied the Markdown changes to the exporter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7267
diff
changeset
|
572 | mathjax = ( |
928858251f7a
ExporterHTML: copied the Markdown changes to the exporter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7267
diff
changeset
|
573 | "<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
|
574 | " 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
|
575 | "tex-chtml.js'>\n" |
928858251f7a
ExporterHTML: copied the Markdown changes to the exporter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7267
diff
changeset
|
576 | "</script>\n" |
928858251f7a
ExporterHTML: copied the Markdown changes to the exporter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7267
diff
changeset
|
577 | ) |
7309
5a434813eef3
PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7305
diff
changeset
|
578 | # prepare text for mathjax |
5a434813eef3
PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7305
diff
changeset
|
579 | text = ( |
5a434813eef3
PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7305
diff
changeset
|
580 | text |
5a434813eef3
PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7305
diff
changeset
|
581 | .replace(r"\(", r"\\(") |
5a434813eef3
PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7305
diff
changeset
|
582 | .replace(r"\)", r"\\)") |
5a434813eef3
PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7305
diff
changeset
|
583 | .replace(r"\[", r"\\[") |
5a434813eef3
PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7305
diff
changeset
|
584 | .replace(r"\]", r"\\]") |
5a434813eef3
PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7305
diff
changeset
|
585 | ) |
7305
928858251f7a
ExporterHTML: copied the Markdown changes to the exporter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7267
diff
changeset
|
586 | else: |
928858251f7a
ExporterHTML: copied the Markdown changes to the exporter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7267
diff
changeset
|
587 | mathjax = "" |
5837 | 588 | |
7314
c32c24345ca7
PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7309
diff
changeset
|
589 | if mermaidNeeded: |
7309
5a434813eef3
PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7305
diff
changeset
|
590 | mermaid = ( |
5a434813eef3
PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7305
diff
changeset
|
591 | "<script type='text/javascript' id='Mermaid-script'" |
5a434813eef3
PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7305
diff
changeset
|
592 | " src='https://unpkg.com/mermaid@8/dist/mermaid.min.js'>\n" |
5a434813eef3
PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7305
diff
changeset
|
593 | "</script>\n" |
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 | else: |
5a434813eef3
PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7305
diff
changeset
|
596 | mermaid = "" |
5a434813eef3
PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7305
diff
changeset
|
597 | |
5837 | 598 | htmlFormat = Preferences.getEditor("PreviewMarkdownHTMLFormat").lower() |
7309
5a434813eef3
PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7305
diff
changeset
|
599 | 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
|
600 | output_format=htmlFormat) |
5837 | 601 | |
602 | if htmlFormat == "xhtml1": | |
7267
aedc309827c7
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
603 | head = ( |
aedc309827c7
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
604 | '''<!DOCTYPE html PUBLIC "-//W3C//DTD''' |
aedc309827c7
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
605 | ''' XHTML 1.0 Transitional//EN"\n''' |
aedc309827c7
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
606 | ''' "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
|
607 | '''.dtd">\n''' |
5837 | 608 | '''<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
|
609 | ) |
5837 | 610 | elif htmlFormat == "html5": |
7267
aedc309827c7
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
611 | head = ( |
aedc309827c7
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
612 | '''<!DOCTYPE html>\n''' |
5837 | 613 | '''<html lang="EN">\n''' |
7267
aedc309827c7
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
614 | ) |
5837 | 615 | else: |
616 | head = '<html lang="EN">\n' | |
617 | head += '''<head>\n''' | |
618 | if Preferences.getEditorExporter("HTML/FullPathAsTitle"): | |
619 | head += '''<title>{0}</title>\n'''.format( | |
620 | self.editor.getFileName()) | |
621 | else: | |
622 | head += '''<title>{0}</title>\n'''.format( | |
623 | 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
|
624 | head += ( |
aedc309827c7
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
625 | '''<meta name="Generator" content="eric6" />\n''' |
aedc309827c7
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
626 | '''<meta http-equiv="Content-Type" ''' |
aedc309827c7
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
627 | '''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
|
628 | '''{0}''' |
7309
5a434813eef3
PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7305
diff
changeset
|
629 | '''{1}''' |
7314
c32c24345ca7
PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7309
diff
changeset
|
630 | '''<style type="text/css">''' |
c32c24345ca7
PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7309
diff
changeset
|
631 | '''{2}''' |
c32c24345ca7
PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7309
diff
changeset
|
632 | '''</style>\n''' |
7267
aedc309827c7
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
633 | '''</head>\n''' |
5837 | 634 | '''<body>\n''' |
7314
c32c24345ca7
PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7309
diff
changeset
|
635 | ).format( |
c32c24345ca7
PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7309
diff
changeset
|
636 | mathjax, mermaid, |
c32c24345ca7
PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7309
diff
changeset
|
637 | PreviewerHTMLStyles.css_markdown + |
c32c24345ca7
PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7309
diff
changeset
|
638 | PreviewerHTMLStyles.css_pygments |
c32c24345ca7
PreviewerHTML, ExporterHTML:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7309
diff
changeset
|
639 | ) |
5837 | 640 | |
641 | foot = '''\n</body>\n</html>\n''' | |
642 | ||
643 | return head + body + foot |