QScintilla/Exporters/ExporterHTML.py

changeset 429
dcc623c99907
parent 45
9a18f4dbb493
child 532
a3c0f1e2594a
equal deleted inserted replaced
428:58405c24aa09 429:dcc623c99907
81 f.write( 81 f.write(
82 ''' "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\n''') 82 ''' "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\n''')
83 f.write('''<html xmlns="http://www.w3.org/1999/xhtml">\n''') 83 f.write('''<html xmlns="http://www.w3.org/1999/xhtml">\n''')
84 f.write('''<head>\n''') 84 f.write('''<head>\n''')
85 if titleFullPath: 85 if titleFullPath:
86 f.write('''<title>%s</title>\n''' % self.editor.getFileName()) 86 f.write('''<title>{0}</title>\n'''.format(self.editor.getFileName()))
87 else: 87 else:
88 f.write('''<title>%s</title>\n''' % \ 88 f.write('''<title>{0}</title>\n'''.format(
89 os.path.basename(self.editor.getFileName())) 89 os.path.basename(self.editor.getFileName())))
90 f.write('''<meta name="Generator" content="eric5" />\n''') 90 f.write('''<meta name="Generator" content="eric5" />\n''')
91 f.write('''<meta http-equiv="Content-Type" ''' 91 f.write('''<meta http-equiv="Content-Type" '''
92 '''content="text/html; charset=utf-8" />\n''') 92 '''content="text/html; charset=utf-8" />\n''')
93 if folding: 93 if folding:
94 f.write('''<script language="JavaScript" type="text/javascript">\n''' 94 f.write('''<script language="JavaScript" type="text/javascript">\n'''
138 colour = lex.color(istyle) 138 colour = lex.color(istyle)
139 paper = lex.paper(istyle) 139 paper = lex.paper(istyle)
140 if istyle == QsciScintilla.STYLE_DEFAULT: 140 if istyle == QsciScintilla.STYLE_DEFAULT:
141 f.write('''span {\n''') 141 f.write('''span {\n''')
142 else: 142 else:
143 f.write('''.S%d {\n''' % istyle) 143 f.write('''.S{0:d} {\n'''.format(istyle))
144 if font.italic(): 144 if font.italic():
145 f.write(''' font-style: italic;\n''') 145 f.write(''' font-style: italic;\n''')
146 if font.bold(): 146 if font.bold():
147 f.write(''' font-weight: bold;\n''') 147 f.write(''' font-weight: bold;\n''')
148 if wysiwyg: 148 if wysiwyg:
149 f.write(''' font-family: '%s';\n''' % \ 149 f.write(''' font-family: '{0}';\n'''.format(
150 font.family()) 150 font.family()))
151 f.write(''' color: %s;\n''' % colour.name()) 151 f.write(''' color: {0};\n'''.format(colour.name()))
152 if istyle != QsciScintilla.STYLE_DEFAULT and \ 152 if istyle != QsciScintilla.STYLE_DEFAULT and \
153 bgColour != paper.name(): 153 bgColour != paper.name():
154 f.write(''' background: %s;\n''' % paper.name()) 154 f.write(''' background: {0};\n'''.format(
155 paper.name()))
155 f.write(''' text-decoration: inherit;\n''') 156 f.write(''' text-decoration: inherit;\n''')
156 if wysiwyg: 157 if wysiwyg:
157 f.write(''' font-size: %dpt;\n''' % \ 158 f.write(''' font-size: {0:d}pt;\n'''.format(
158 QFontInfo(font).pointSize()) 159 QFontInfo(font).pointSize()))
159 f.write('''}\n''') 160 f.write('''}\n''')
160 else: 161 else:
161 styleIsUsed[istyle] = False 162 styleIsUsed[istyle] = False
162 istyle += 1 163 istyle += 1
163 else: 164 else:
168 if font.italic(): 169 if font.italic():
169 f.write(''' font-style: italic;\n''') 170 f.write(''' font-style: italic;\n''')
170 if font.bold(): 171 if font.bold():
171 f.write(''' font-weight: bold;\n''') 172 f.write(''' font-weight: bold;\n''')
172 if wysiwyg: 173 if wysiwyg:
173 f.write(''' font-family: '%s';\n''' % font.family()) 174 f.write(''' font-family: '{0}';\n'''.format(font.family()))
174 f.write(''' color: %s;\n''' % colour.name()) 175 f.write(''' color: {0};\n'''.format(colour.name()))
175 if bgColour != paper.name(): 176 if bgColour != paper.name():
176 f.write(''' background: %s;\n''' % paper.name()) 177 f.write(''' background: {0};\n'''.format(paper.name()))
177 f.write(''' text-decoration: inherit;\n''') 178 f.write(''' text-decoration: inherit;\n''')
178 if wysiwyg: 179 if wysiwyg:
179 f.write(''' font-size: %dpt;\n''' % \ 180 f.write(''' font-size: {0:d}pt;\n'''.format(
180 QFontInfo(font).pointSize()) 181 QFontInfo(font).pointSize()))
181 f.write('''}\n''') 182 f.write('''}\n''')
182 f.write('''</style>\n''') 183 f.write('''</style>\n''')
183 f.write('''</head>\n''') 184 f.write('''</head>\n''')
184 185
185 f.write('''<body bgcolor="%s">\n''' % bgColour) 186 f.write('''<body bgcolor="{0}">\n'''.format(bgColour))
186 line = self.editor.lineAt(0) 187 line = self.editor.lineAt(0)
187 level = self.editor.foldLevelAt(line) - QsciScintilla.SC_FOLDLEVELBASE 188 level = self.editor.foldLevelAt(line) - QsciScintilla.SC_FOLDLEVELBASE
188 levelStack = [level] 189 levelStack = [level]
189 styleCurrent = self.editor.styleAt(0) 190 styleCurrent = self.editor.styleAt(0)
190 inStyleSpan = False 191 inStyleSpan = False
196 f.write('''<pre>''') 197 f.write('''<pre>''')
197 198
198 if folding: 199 if folding:
199 if self.editor.foldFlagsAt(line) & \ 200 if self.editor.foldFlagsAt(line) & \
200 QsciScintilla.SC_FOLDLEVELHEADERFLAG: 201 QsciScintilla.SC_FOLDLEVELHEADERFLAG:
201 f.write('''<span id="hd%d" onclick="toggle('%d')">''' % \ 202 f.write('''<span id="hd{0:d}" onclick="toggle('{1:d}')">'''\
202 (line, line + 1)) 203 .format(line, line + 1))
203 f.write('''<span id="bt%d">- </span>''' % line) 204 f.write('''<span id="bt{0:d}">- </span>'''.format(line))
204 inFoldSpan = True 205 inFoldSpan = True
205 else: 206 else:
206 f.write('''&nbsp; ''') 207 f.write('''&nbsp; ''')
207 208
208 if styleIsUsed[styleCurrent]: 209 if styleIsUsed[styleCurrent]:
209 f.write('''<span class="S%0d">''' % styleCurrent) 210 f.write('''<span class="S{0:0d}">'''.format(styleCurrent))
210 inStyleSpan = True 211 inStyleSpan = True
211 212
212 column = 0 213 column = 0
213 pos = 0 214 pos = 0
214 utf8 = self.editor.isUtf8() 215 utf8 = self.editor.isUtf8()
222 if inStyleSpan: 223 if inStyleSpan:
223 f.write('''</span>''') 224 f.write('''</span>''')
224 inStyleSpan = False 225 inStyleSpan = False
225 if ch not in [b'\r', b'\n']: # no need of a span for the EOL 226 if ch not in [b'\r', b'\n']: # no need of a span for the EOL
226 if styleIsUsed[style]: 227 if styleIsUsed[style]:
227 f.write('''<span class="S%d">''' % style) 228 f.write('''<span class="S{0:d}">'''.format(style))
228 inStyleSpan = True 229 inStyleSpan = True
229 styleCurrent = style 230 styleCurrent = style
230 231
231 if ch == b' ': 232 if ch == b' ':
232 if wysiwyg: 233 if wysiwyg:
282 while levelStack[-1] > newLevel: 283 while levelStack[-1] > newLevel:
283 f.write('''</span>''') 284 f.write('''</span>''')
284 levelStack.pop() 285 levelStack.pop()
285 f.write('\n') # here to get clean code 286 f.write('\n') # here to get clean code
286 if newLevel > level: 287 if newLevel > level:
287 f.write('''<span id="ln%d">''' % line) 288 f.write('''<span id="ln{0:d}">'''.format(line))
288 levelStack.append(newLevel) 289 levelStack.append(newLevel)
289 if self.editor.foldFlagsAt(line) & \ 290 if self.editor.foldFlagsAt(line) & \
290 QsciScintilla.SC_FOLDLEVELHEADERFLAG: 291 QsciScintilla.SC_FOLDLEVELHEADERFLAG:
291 f.write('''<span id="hd%d" onclick="toggle('%d')">''' % \ 292 f.write(
292 (line, line + 1)) 293 '''<span id="hd{0:d}" onclick="toggle('{1:d}')">'''\
293 f.write('''<span id="bt%d">- </span>''' % line) 294 .format(line, line + 1))
295 f.write('''<span id="bt{0:d}">- </span>'''.format(line))
294 inFoldSpan = True 296 inFoldSpan = True
295 else: 297 else:
296 f.write('''&nbsp; ''') 298 f.write('''&nbsp; ''')
297 level = newLevel 299 level = newLevel
298 else: 300 else:
300 302
301 if styleIsUsed[styleCurrent] and \ 303 if styleIsUsed[styleCurrent] and \
302 self.editor.byteAt(pos + 1) not in [b'\r', b'\n']: 304 self.editor.byteAt(pos + 1) not in [b'\r', b'\n']:
303 # We know it's the correct next style, 305 # We know it's the correct next style,
304 # but no (empty) span for an empty line 306 # but no (empty) span for an empty line
305 f.write('''<span class="S%0d">''' % styleCurrent) 307 f.write('''<span class="S{0:0d}">'''.format(styleCurrent))
306 inStyleSpan = True 308 inStyleSpan = True
307 else: 309 else:
308 if ch == b'<': 310 if ch == b'<':
309 f.write('''&lt;''') 311 f.write('''&lt;''')
310 elif ch == b'>': 312 elif ch == b'>':

eric ide

mercurial