UI/Previewers/PreviewerHTML.py

changeset 6372
ae44c83fccab
parent 6287
9a193ff6d24a
child 6395
613e37fabd96
child 6645
ad476851d7e0
--- a/UI/Previewers/PreviewerHTML.py	Tue Jun 26 18:39:14 2018 +0200
+++ b/UI/Previewers/PreviewerHTML.py	Tue Jun 26 18:50:04 2018 +0200
@@ -51,17 +51,28 @@
         self.titleLabel.setTextInteractionFlags(Qt.NoTextInteraction)
         self.__layout.addWidget(self.titleLabel)
         
+        self.__previewAvailable = True
+        
         try:
             from PyQt5.QtWebEngineWidgets import QWebEngineView
             self.previewView = QWebEngineView(self)
             self.previewView.page().linkHovered.connect(self.__showLink)
             self.__usesWebKit = False
         except ImportError:
-            from PyQt5.QtWebKitWidgets import QWebPage, QWebView
-            self.previewView = QWebView(self)
-            self.previewView.page().setLinkDelegationPolicy(
-                QWebPage.DelegateAllLinks)
-            self.__usesWebKit = True
+            try:
+                from PyQt5.QtWebKitWidgets import QWebPage, QWebView
+                self.previewView = QWebView(self)
+                self.previewView.page().setLinkDelegationPolicy(
+                    QWebPage.DelegateAllLinks)
+                self.__usesWebKit = True
+            except ImportError:
+                self.__previewAvailable = False
+                self.titleLabel.setText(self.tr(
+                    "<b>HTML Preview is not available!<br/>"
+                    "Install QtWebEngine or QtWebKit.</b>"))
+                self.titleLabel.setAlignment(Qt.AlignHCenter)
+                self.__layout.addStretch()
+                return
         
         sizePolicy = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Expanding)
         sizePolicy.setHorizontalStretch(0)
@@ -110,7 +121,8 @@
         """
         Public method to perform shutdown actions.
         """
-        self.__processingThread.wait()
+        if self.__previewAvailable:
+            self.__processingThread.wait()
     
     @pyqtSlot(bool)
     def on_jsCheckBox_clicked(self, checked):
@@ -161,6 +173,9 @@
         
         @param editor editor to be processed (Editor)
         """
+        if not self.__previewAvailable:
+            return
+        
         if editor is None:
             editor = self.__previewedEditor
         else:

eric ide

mercurial