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