eric6/UI/Previewers/PreviewerHTML.py

branch
without_py2_and_pyqt4
changeset 7196
ab0a91b82b37
parent 7192
a22eee00b052
child 7198
684261ef2165
diff -r a22eee00b052 -r ab0a91b82b37 eric6/UI/Previewers/PreviewerHTML.py
--- a/eric6/UI/Previewers/PreviewerHTML.py	Sat Aug 31 12:58:11 2019 +0200
+++ b/eric6/UI/Previewers/PreviewerHTML.py	Sun Sep 01 17:43:03 2019 +0200
@@ -53,22 +53,14 @@
             from PyQt5.QtWebEngineWidgets import QWebEngineView
             self.previewView = QWebEngineView(self)
             self.previewView.page().linkHovered.connect(self.__showLink)
-            self.__usesWebKit = False
         except ImportError:
-            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
+            self.__previewAvailable = False
+            self.titleLabel.setText(self.tr(
+                "<b>HTML Preview is not available!<br/>"
+                "Install QtWebEngine.</b>"))
+            self.titleLabel.setAlignment(Qt.AlignHCenter)
+            self.__layout.addStretch()
+            return
         
         sizePolicy = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Expanding)
         sizePolicy.setHorizontalStretch(0)
@@ -94,9 +86,6 @@
         self.jsCheckBox.clicked[bool].connect(self.on_jsCheckBox_clicked)
         self.ssiCheckBox.clicked[bool].connect(self.on_ssiCheckBox_clicked)
         self.previewView.titleChanged.connect(self.on_previewView_titleChanged)
-        if self.__usesWebKit:
-            self.previewView.linkClicked.connect(
-                self.on_previewView_linkClicked)
         
         self.jsCheckBox.setChecked(
             Preferences.getUI("ShowFilePreviewJS"))
@@ -234,14 +223,10 @@
         self.__previewedPath = Utilities.normcasepath(
             Utilities.fromNativeSeparators(filePath))
         self.__saveScrollBarPositions()
-        if self.__usesWebKit:
-            self.previewView.page().mainFrame().contentsSizeChanged.connect(
-                self.__restoreScrollBarPositions)
-        else:
-            self.previewView.page().loadFinished.connect(
-                self.__restoreScrollBarPositions)
-            if not filePath:
-                filePath = "/"
+        self.previewView.page().loadFinished.connect(
+            self.__restoreScrollBarPositions)
+        if not filePath:
+            filePath = "/"
         if rootPath:
             baseUrl = QUrl.fromLocalFile(rootPath + "/index.html")
         else:
@@ -266,84 +251,39 @@
         """
         Private method to save scroll bar positions for a previewed editor.
         """
-        if self.__usesWebKit:
-            frame = self.previewView.page().mainFrame()
-            if frame.contentsSize() == QSize(0, 0):
-                return  # no valid data, nothing to save
-            
-            pos = frame.scrollPosition()
-            self.__scrollBarPositions[self.__previewedPath] = pos
-            self.__hScrollBarAtEnd[self.__previewedPath] = \
-                frame.scrollBarMaximum(Qt.Horizontal) == pos.x()
-            self.__vScrollBarAtEnd[self.__previewedPath] = \
-                frame.scrollBarMaximum(Qt.Vertical) == pos.y()
-        else:
-            from PyQt5.QtCore import QPoint
-            try:
-                pos = self.previewView.scrollPosition()
-            except AttributeError:
-                pos = self.__execJavaScript(
-                    "(function() {"
-                    "var res = {"
-                    "    x: 0,"
-                    "    y: 0,"
-                    "};"
-                    "res.x = window.scrollX;"
-                    "res.y = window.scrollY;"
-                    "return res;"
-                    "})()"
-                )
-                if pos is not None:
-                    pos = QPoint(pos["x"], pos["y"])
-                else:
-                    pos = QPoint(0, 0)
-            self.__scrollBarPositions[self.__previewedPath] = pos
-            self.__hScrollBarAtEnd[self.__previewedPath] = False
-            self.__vScrollBarAtEnd[self.__previewedPath] = False
+        from PyQt5.QtCore import QPoint
+        try:
+            pos = self.previewView.scrollPosition()
+        except AttributeError:
+            pos = self.__execJavaScript(
+                "(function() {"
+                "var res = {"
+                "    x: 0,"
+                "    y: 0,"
+                "};"
+                "res.x = window.scrollX;"
+                "res.y = window.scrollY;"
+                "return res;"
+                "})()"
+            )
+            if pos is not None:
+                pos = QPoint(pos["x"], pos["y"])
+            else:
+                pos = QPoint(0, 0)
+        self.__scrollBarPositions[self.__previewedPath] = pos
+        self.__hScrollBarAtEnd[self.__previewedPath] = False
+        self.__vScrollBarAtEnd[self.__previewedPath] = False
 
     def __restoreScrollBarPositions(self):
         """
         Private method to restore scroll bar positions for a previewed editor.
         """
-        if self.__usesWebKit:
-            try:
-                self.previewView.page().mainFrame().contentsSizeChanged.\
-                    disconnect(self.__restoreScrollBarPositions)
-            except TypeError:
-                # not connected, simply ignore it
-                pass
-            
-            if self.__previewedPath not in self.__scrollBarPositions:
-                return
-            
-            frame = self.previewView.page().mainFrame()
-            frame.setScrollPosition(
-                self.__scrollBarPositions[self.__previewedPath])
-            
-            if self.__hScrollBarAtEnd[self.__previewedPath]:
-                frame.setScrollBarValue(
-                    Qt.Horizontal, frame.scrollBarMaximum(Qt.Horizontal))
-            
-            if self.__vScrollBarAtEnd[self.__previewedPath]:
-                frame.setScrollBarValue(
-                    Qt.Vertical, frame.scrollBarMaximum(Qt.Vertical))
-        else:
-            if self.__previewedPath not in self.__scrollBarPositions:
-                return
-            
-            pos = self.__scrollBarPositions[self.__previewedPath]
-            self.previewView.page().runJavaScript(
-                "window.scrollTo({0}, {1});".format(pos.x(), pos.y()))
-    
-    @pyqtSlot(QUrl)
-    def on_previewView_linkClicked(self, url):
-        """
-        Private slot handling the clicking of a link.
+        if self.__previewedPath not in self.__scrollBarPositions:
+            return
         
-        @param url URL of the clicked link
-        @type QUrl
-        """
-        e5App().getObject("UserInterface").launchHelpViewer(url)
+        pos = self.__scrollBarPositions[self.__previewedPath]
+        self.previewView.page().runJavaScript(
+            "window.scrollTo({0}, {1});".format(pos.x(), pos.y()))
     
     def __execJavaScript(self, script):
         """

eric ide

mercurial