--- a/eric6/QScintilla/Exporters/ExporterHTML.py Fri Oct 09 17:19:29 2020 +0200 +++ b/eric6/QScintilla/Exporters/ExporterHTML.py Sat Oct 10 12:20:51 2020 +0200 @@ -15,12 +15,12 @@ import sys import io -from PyQt5.QtCore import Qt -from PyQt5.QtGui import QCursor, QFontInfo -from PyQt5.QtWidgets import QApplication, QInputDialog +from PyQt5.QtGui import QFontInfo +from PyQt5.QtWidgets import QInputDialog from PyQt5.Qsci import QsciScintilla from E5Gui import E5MessageBox +from E5Gui.E5OverrideCursor import E5OverrideCursor from .ExporterBase import ExporterBase @@ -392,60 +392,56 @@ if not filename: return - try: - QApplication.setOverrideCursor(QCursor(Qt.WaitCursor)) - QApplication.processEvents() - - fn = self.editor.getFileName() - if fn: - extension = os.path.normcase(os.path.splitext(fn)[1][1:]) + fn = self.editor.getFileName() + if fn: + extension = os.path.normcase(os.path.splitext(fn)[1][1:]) + else: + extension = "" + + if ( + extension in Preferences.getEditor( + "PreviewMarkdownFileNameExtensions") or + self.editor.getLanguage().lower() == "markdown" + ): + # export markdown to HTML + colorSchemes = [ + self.tr("Light Background Color"), + self.tr("Dark Background Color"), + ] + colorScheme, ok = QInputDialog.getItem( + None, + self.tr("Markdown Export"), + self.tr("Select color scheme:"), + colorSchemes, + 0, False) + if ok: + colorSchemeIndex = colorSchemes.index(colorScheme) else: - extension = "" + # light background as default + colorSchemeIndex = 0 + with E5OverrideCursor(): + html = self.__generateFromMarkdown(colorSchemeIndex == 1) + elif ( + extension in Preferences.getEditor( + "PreviewRestFileNameExtensions") or + self.editor.getLanguage().lower() == "restructuredtext" + ): + # export ReST to HTML + with E5OverrideCursor(): + html = self.__generateFromReSTDocutils() + else: + tabSize = self.editor.getEditorConfig("TabWidth") + if tabSize == 0: + tabSize = 4 + wysiwyg = Preferences.getEditorExporter("HTML/WYSIWYG") + folding = Preferences.getEditorExporter("HTML/Folding") + onlyStylesUsed = Preferences.getEditorExporter( + "HTML/OnlyStylesUsed") + titleFullPath = Preferences.getEditorExporter( + "HTML/FullPathAsTitle") + tabs = Preferences.getEditorExporter("HTML/UseTabs") - if ( - extension in Preferences.getEditor( - "PreviewMarkdownFileNameExtensions") or - self.editor.getLanguage().lower() == "markdown" - ): - # export markdown to HTML - colorSchemes = [ - self.tr("Light Background Color"), - self.tr("Dark Background Color"), - ] - QApplication.restoreOverrideCursor() - colorScheme, ok = QInputDialog.getItem( - None, - self.tr("Markdown Export"), - self.tr("Select color scheme:"), - colorSchemes, - 0, False) - if ok: - colorSchemeIndex = colorSchemes.index(colorScheme) - else: - # light background as default - colorSchemeIndex = 0 - QApplication.setOverrideCursor(QCursor(Qt.WaitCursor)) - QApplication.processEvents() - html = self.__generateFromMarkdown(colorSchemeIndex == 1) - elif ( - extension in Preferences.getEditor( - "PreviewRestFileNameExtensions") or - self.editor.getLanguage().lower() == "restructuredtext" - ): - # export ReST to HTML - html = self.__generateFromReSTDocutils() - else: - tabSize = self.editor.getEditorConfig("TabWidth") - if tabSize == 0: - tabSize = 4 - wysiwyg = Preferences.getEditorExporter("HTML/WYSIWYG") - folding = Preferences.getEditorExporter("HTML/Folding") - onlyStylesUsed = Preferences.getEditorExporter( - "HTML/OnlyStylesUsed") - titleFullPath = Preferences.getEditorExporter( - "HTML/FullPathAsTitle") - tabs = Preferences.getEditorExporter("HTML/UseTabs") - + with E5OverrideCursor(): generator = HTMLGenerator(self.editor) html = generator.generate( tabSize=tabSize, @@ -455,33 +451,30 @@ onlyStylesUsed=onlyStylesUsed, titleFullPath=titleFullPath ) - - if html: - try: + + if html: + try: + with E5OverrideCursor(): f = open(filename, "w", encoding="utf-8") f.write(html) f.close() - except IOError as err: - QApplication.restoreOverrideCursor() - E5MessageBox.critical( - self.editor, - self.tr("Export source"), - self.tr( - """<p>The source could not be exported to""" - """ <b>{0}</b>.</p><p>Reason: {1}</p>""") - .format(filename, str(err))) - else: - QApplication.restoreOverrideCursor() + except IOError as err: E5MessageBox.critical( self.editor, self.tr("Export source"), self.tr( """<p>The source could not be exported to""" - """ <b>{0}</b>.</p><p>Reason: No HTML code""" - """ generated.</p>""") - .format(filename)) - finally: - QApplication.restoreOverrideCursor() + """ <b>{0}</b>.</p><p>Reason: {1}</p>""") + .format(filename, str(err))) + else: + E5MessageBox.critical( + self.editor, + self.tr("Export source"), + self.tr( + """<p>The source could not be exported to""" + """ <b>{0}</b>.</p><p>Reason: No HTML code""" + """ generated.</p>""") + .format(filename)) def __generateFromReSTDocutils(self): """