eric6/WebBrowser/WebBrowserView.py

branch
without_py2_and_pyqt4
changeset 7201
6b42677d7043
parent 7192
a22eee00b052
child 7229
53054eb5b15a
equal deleted inserted replaced
7200:ebab8ba287e6 7201:6b42677d7043
10 10
11 from __future__ import unicode_literals 11 from __future__ import unicode_literals
12 12
13 import os 13 import os
14 14
15 from PyQt5.QtCore import pyqtSignal, pyqtSlot, PYQT_VERSION, Qt, QUrl, \ 15 from PyQt5.QtCore import pyqtSignal, pyqtSlot, Qt, QUrl, QFileInfo, QTimer, \
16 QFileInfo, QTimer, QEvent, QPoint, QPointF, QDateTime, QStandardPaths, \ 16 QEvent, QPoint, QPointF, QDateTime, QStandardPaths, QByteArray, \
17 QByteArray, QIODevice, QDataStream 17 QIODevice, QDataStream
18 from PyQt5.QtGui import QDesktopServices, QClipboard, QIcon, \ 18 from PyQt5.QtGui import QDesktopServices, QClipboard, QIcon, \
19 QContextMenuEvent, QPixmap, QCursor 19 QContextMenuEvent, QPixmap, QCursor
20 from PyQt5.QtWidgets import qApp, QStyle, QMenu, QApplication, QDialog 20 from PyQt5.QtWidgets import qApp, QStyle, QMenu, QApplication, QDialog
21 from PyQt5.QtWebEngineWidgets import QWebEngineView, QWebEnginePage, \ 21 from PyQt5.QtWebEngineWidgets import QWebEngineView, QWebEnginePage, \
22 QWebEngineDownloadItem 22 QWebEngineDownloadItem
127 self.__inspector = None 127 self.__inspector = None
128 WebInspector.registerView(self) 128 WebInspector.registerView(self)
129 129
130 self.__restoreData = None 130 self.__restoreData = None
131 131
132 if qVersionTuple() >= (5, 8, 0): 132 if self.parentWidget() is not None:
133 if self.parentWidget() is not None: 133 self.parentWidget().installEventFilter(self)
134 self.parentWidget().installEventFilter(self) 134
135 135 if qVersionTuple() < (5, 11, 0):
136 if qVersionTuple() >= (5, 8, 0) and qVersionTuple() < (5, 11, 0):
137 lay = self.layout() 136 lay = self.layout()
138 lay.currentChanged.connect( 137 lay.currentChanged.connect(
139 lambda: QTimer.singleShot(0, self.__setRwhvqt)) 138 lambda: QTimer.singleShot(0, self.__setRwhvqt))
140 self.__setRwhvqt() 139 self.__setRwhvqt()
141 140
572 @type QMenu 571 @type QMenu
573 @param hitTest reference to the hit test object 572 @param hitTest reference to the hit test object
574 @type WebHitTestResult 573 @type WebHitTestResult
575 """ 574 """
576 spellCheckActionCount = 0 575 spellCheckActionCount = 0
577 if qVersionTuple() >= (5, 7, 0) and PYQT_VERSION >= 0x50700: 576 contextMenuData = self.page().contextMenuData()
578 contextMenuData = self.page().contextMenuData() 577 hitTest.updateWithContextMenuData(contextMenuData)
579 hitTest.updateWithContextMenuData(contextMenuData) 578
579 if bool(contextMenuData.misspelledWord()):
580 boldFont = menu.font()
581 boldFont.setBold(True)
580 582
581 if qVersionTuple() >= (5, 8, 0) and PYQT_VERSION >= 0x50800 and \ 583 for suggestion in contextMenuData.spellCheckerSuggestions():
582 bool(contextMenuData.misspelledWord()): 584 act = menu.addAction(suggestion)
583 boldFont = menu.font() 585 act.setFont(boldFont)
584 boldFont.setBold(True) 586 act.triggered.connect(
585 587 lambda: self.__replaceMisspelledWord)(act)
586 for suggestion in contextMenuData.spellCheckerSuggestions(): 588
587 act = menu.addAction(suggestion) 589 if not bool(menu.actions()):
588 act.setFont(boldFont) 590 menu.addAction(self.tr("No suggestions")).setEnabled(False)
589 act.triggered.connect( 591
590 lambda: self.__replaceMisspelledWord)(act) 592 menu.addSeparator()
591 593 spellCheckActionCount = len(menu.actions())
592 if not bool(menu.actions()):
593 menu.addAction(self.tr("No suggestions")).setEnabled(False)
594
595 menu.addSeparator()
596 spellCheckActionCount = len(menu.actions())
597 594
598 if not hitTest.linkUrl().isEmpty() and \ 595 if not hitTest.linkUrl().isEmpty() and \
599 hitTest.linkUrl().scheme() != "javascript": 596 hitTest.linkUrl().scheme() != "javascript":
600 self.__createLinkContextMenu(menu, hitTest) 597 self.__createLinkContextMenu(menu, hitTest)
601 598
1521 self.parentWidget() is not None: 1518 self.parentWidget() is not None:
1522 self.parentWidget().installEventFilter(self) 1519 self.parentWidget().installEventFilter(self)
1523 1520
1524 # find the render widget receiving events for the web page 1521 # find the render widget receiving events for the web page
1525 if obj is self and evt.type() == QEvent.ChildAdded: 1522 if obj is self and evt.type() == QEvent.ChildAdded:
1526 if qVersionTuple() < (5, 8, 0): 1523 if qVersionTuple() >= (5, 11, 0):
1527 child = evt.child()
1528 if child and child.inherits(
1529 "QtWebEngineCore::"
1530 "RenderWidgetHostViewQtDelegateWidget"):
1531 self.__rwhvqt = child
1532 self.grabGesture(Qt.PinchGesture)
1533 self.__rwhvqt.grabGesture(Qt.PinchGesture)
1534 self.__rwhvqt.installEventFilter(self)
1535 elif qVersionTuple() >= (5, 11, 0):
1536 QTimer.singleShot(0, self.__setRwhvqt) 1524 QTimer.singleShot(0, self.__setRwhvqt)
1537 1525
1538 # forward events to WebBrowserView 1526 # forward events to WebBrowserView
1539 if obj is self.__rwhvqt and \ 1527 if obj is self.__rwhvqt and \
1540 evt.type() in [QEvent.KeyPress, QEvent.KeyRelease, 1528 evt.type() in [QEvent.KeyPress, QEvent.KeyRelease,
1855 """ 1843 """
1856 url = self.url() 1844 url = self.url()
1857 if url.isEmpty(): 1845 if url.isEmpty():
1858 return 1846 return
1859 1847
1860 if qVersionTuple() >= (5, 8, 0) and PYQT_VERSION >= 0x50800: 1848 fileName, savePageFormat = self.__getSavePageFileNameAndFormat()
1861 # since Qt 5.8.0 1849 if fileName:
1862 fileName, savePageFormat = self.__getSavePageFileNameAndFormat() 1850 self.page().save(fileName, savePageFormat)
1863 if fileName:
1864 self.page().save(fileName, savePageFormat)
1865 else:
1866 self.triggerPageAction(QWebEnginePage.SavePage)
1867 1851
1868 def __getSavePageFileNameAndFormat(self): 1852 def __getSavePageFileNameAndFormat(self):
1869 """ 1853 """
1870 Private method to get the file name to save the page to. 1854 Private method to get the file name to save the page to.
1871 1855

eric ide

mercurial