271 """ |
271 """ |
272 Private method to save scroll bar positions for a previewed editor. |
272 Private method to save scroll bar positions for a previewed editor. |
273 """ |
273 """ |
274 frame = self.previewView.page().mainFrame() |
274 frame = self.previewView.page().mainFrame() |
275 if frame.contentsSize() == QSize(0, 0): |
275 if frame.contentsSize() == QSize(0, 0): |
276 return # no valid data, nothing to save |
276 return # no valid data, nothing to save |
277 |
277 |
278 pos = frame.scrollPosition() |
278 pos = frame.scrollPosition() |
279 self.__scrollBarPositions[self.__previewedPath] = pos |
279 self.__scrollBarPositions[self.__previewedPath] = pos |
280 self.__hScrollBarAtEnd[self.__previewedPath] = \ |
280 self.__hScrollBarAtEnd[self.__previewedPath] = \ |
281 frame.scrollBarMaximum(Qt.Horizontal) == pos.x() |
281 frame.scrollBarMaximum(Qt.Horizontal) == pos.x() |
315 e5App().getObject("UserInterface").launchHelpViewer(url.toString()) |
315 e5App().getObject("UserInterface").launchHelpViewer(url.toString()) |
316 |
316 |
317 |
317 |
318 class PreviewProcessingThread(QThread): |
318 class PreviewProcessingThread(QThread): |
319 """ |
319 """ |
320 Class implementing a thread to process some text into HTML usable by the |
320 Class implementing a thread to process some text into HTML usable by the |
321 previewer view. |
321 previewer view. |
322 |
322 |
323 @signal htmlReady(str,str) emitted with the file name and processed HTML to signal |
323 @signal htmlReady(str,str) emitted with the file name and processed HTML to signal |
324 the availability of the processed HTML |
324 the availability of the processed HTML |
325 """ |
325 """ |
498 (see |
498 (see |
499 <a href="http://achinghead.com/python-markdown-adding-insert-delete.html"> |
499 <a href="http://achinghead.com/python-markdown-adding-insert-delete.html"> |
500 this page for details</a>) |
500 this page for details</a>) |
501 """ |
501 """ |
502 DEL_RE = r'(~~)(.*?)~~' |
502 DEL_RE = r'(~~)(.*?)~~' |
|
503 |
503 def extendMarkdown(self, md, md_globals): |
504 def extendMarkdown(self, md, md_globals): |
504 # Create the del pattern |
505 # Create the del pattern |
505 del_tag = markdown.inlinepatterns.SimpleTagPattern(self.DEL_RE, 'del') |
506 del_tag = markdown.inlinepatterns.SimpleTagPattern(self.DEL_RE, 'del') |
506 # Insert del pattern into markdown parser |
507 # Insert del pattern into markdown parser |
507 md.inlinePatterns.add('del', del_tag, '>not_strong') |
508 md.inlinePatterns.add('del', del_tag, '>not_strong') |
508 |
509 |
509 extensions.append(_StrikeThroughExtension()) |
510 extensions.append(_StrikeThroughExtension()) |
510 |
511 |
511 try: |
512 try: |
512 return markdown.markdown(text, extensions + ['mathjax']) |
513 return markdown.markdown(text, extensions + ['mathjax']) |
513 except (ImportError, ValueError): |
514 except (ImportError, ValueError): |
514 # markdown raises ValueError or ImportError, depends on version |
515 # markdown raises ValueError or ImportError, depends on version |
515 # It is not clear, how to distinguish missing mathjax from other errors. |
516 # It is not clear, how to distinguish missing mathjax from other errors. |
516 # So keep going without mathjax. |
517 # So keep going without mathjax. |
517 return markdown.markdown(text, extensions) |
518 return markdown.markdown(text, extensions) |