WebBrowser/WebBrowserView.py

branch
QtWebEngine
changeset 4715
79009bc4acd5
parent 4713
8dca047daf4b
child 4717
5841f229baf7
--- a/WebBrowser/WebBrowserView.py	Wed Feb 03 20:05:29 2016 +0100
+++ b/WebBrowser/WebBrowserView.py	Thu Feb 04 19:39:54 2016 +0100
@@ -10,7 +10,7 @@
 
 from __future__ import unicode_literals
 try:
-    str = unicode
+    str = unicode           # __IGNORE_EXCEPTION__
 except NameError:
     pass
 
@@ -228,13 +228,16 @@
         
 ##        self.page().databaseQuotaExceeded.connect(self.__databaseQuotaExceeded)
         
-        # TODO: re-enable onece Open Search is done
+        # TODO: Open Search
 ##        self.__mw.openSearchManager().currentEngineChanged.connect(
 ##            self.__currentEngineChanged)
         
+        self.__rwhvqt = None
+        # TODO: eventFilter (see below)
+##        self.installEventFilter(self)
         self.setAcceptDrops(True)
         
-        # TODO: re-enable for Access Keys
+        # TODO: Access Keys
 ##        self.__enableAccessKeys = Preferences.getHelp("AccessKeysEnabled")
 ##        self.__accessKeysPressed = False
 ##        self.__accessKeyLabels = []
@@ -247,8 +250,9 @@
         
         self.__clickedFrame = None
         
-        # TODO: re-enable once done
+        # TODO: PIM
 ##        self.__mw.personalInformationManager().connectPage(self.page())
+        # TODO: GreaseMonkey
 ##        self.__mw.greaseMonkeyManager().connectPage(self.page())
 ##        
 ##        self.__inspector = None
@@ -459,6 +463,8 @@
         """
         Public slot to move to the first page loaded.
         """
+##        homeUrl = QUrl("http://localhost")
+##        # TODO: eric: scheme or Configuration page
         homeUrl = QUrl(Preferences.getWebBrowser("HomePage"))
         self.setSource(homeUrl)
         self.__urlChanged(self.history().currentItem().url())
@@ -524,7 +530,7 @@
         if value != self.zoomValue():
             self.setZoomFactor(value / 100.0)
             self.__currentZoom = value
-            # TODO: re-enable this when Zoom Manager is done
+            # TODO: Zoom Manager
 ##            if saveValue:
 ##                Helpviewer.HelpWindow.HelpWindow.zoomManager().setZoomValue(
 ##                    self.url(), value)
@@ -606,7 +612,7 @@
         else:
             self.findText(txt, findFlags, callback)
     
-    # TODO: re-enable once WebBrowserWebElement is done
+    # TODO: WebBrowserWebElement
 ##    def __isMediaElement(self, element):
 ##        """
 ##        Private method to check, if the given element is a media element.
@@ -625,12 +631,12 @@
         @param evt reference to the context menu event object
             (QContextMenuEvent)
         """
-        # TODO: re-enable once User Agent is done
+        # TODO: User Agent
 ##        from .UserAgent.UserAgentMenu import UserAgentMenu
         menu = QMenu(self)
         
 ##        frameAtPos = self.page().frameAt(evt.pos())
-        # TODO: re-enable once WebHitTestResult is done
+        # TODO: WebHitTestResult
 ##        hit = self.page().hitTestContent(evt.pos())
 ##        if not hit.linkUrl().isEmpty():
 ##            menu.addAction(
@@ -763,7 +769,7 @@
         if not menu.isEmpty():
             menu.addSeparator()
         
-        # TODO: re-enable once PIM is done
+        # TODO: PIM
 ##        self.__mw.personalInformationManager().createSubMenu(menu, self, hit)
         
         menu.addAction(self.__mw.newTabAct)
@@ -812,14 +818,15 @@
 ##            menu.addMenu(fmenu)
 ##            menu.addSeparator()
         
-        menu.addAction(
-            UI.PixmapCache.getIcon("bookmark22.png"),
-            self.tr("Bookmark this Page"), self.addBookmark)
+        # TODO: Bookmarks
+##        menu.addAction(
+##            UI.PixmapCache.getIcon("bookmark22.png"),
+##            self.tr("Bookmark this Page"), self.addBookmark)
         menu.addAction(
             UI.PixmapCache.getIcon("mailSend.png"),
             self.tr("Send Page Link"), self.__sendLink).setData(self.url())
         menu.addSeparator()
-        # TODO: re-enable once User Agent is done
+        # TODO: User Agent
 ##        self.__userAgentMenu = UserAgentMenu(self.tr("User Agent"),
 ##                                             url=self.url())
 ##        menu.addMenu(self.__userAgentMenu)
@@ -841,7 +848,7 @@
         menu.addAction(self.__mw.findAct)
         menu.addSeparator()
         if self.selectedText():
-            # TODO: re-enable once Open Search is done
+            # TODO: Open Search
 ##            self.__searchMenu = menu.addMenu(self.tr("Search with..."))
 ##            
 ##            from .OpenSearch.OpenSearchEngineAction import \
@@ -856,7 +863,7 @@
 ##            
 ##            menu.addSeparator()
             
-            # TODO: re-enable once Languages Dialog is done
+            # TODO: Languages Dialog
 ##            from .HelpLanguagesDialog import HelpLanguagesDialog
 ##            languages = Preferences.toList(
 ##                Preferences.Prefs.settings.value(
@@ -896,7 +903,7 @@
 ##                           self.__addSearchEngine).setData(element)
 ##            menu.addSeparator()
         
-        # TODO: re-enable once Web Inspector is done
+        # TODO: Web Inspector
 ##        menu.addAction(
 ##            UI.PixmapCache.getIcon("webInspector.png"),
 ##            self.tr("Web Inspector..."), self.__webInspector)
@@ -1306,10 +1313,7 @@
         
         @param evt reference to the wheel event (QWheelEvent)
         """
-        if qVersion() >= "5.0.0":
-            delta = evt.angleDelta().y()
-        else:
-            delta = evt.delta()
+        delta = evt.angleDelta().y()
         if evt.modifiers() & Qt.ControlModifier:
             if delta < 0:
                 self.zoomOut()
@@ -1328,45 +1332,45 @@
         
         super(WebBrowserView, self).wheelEvent(evt)
     
-    def keyPressEvent(self, evt):
-        """
-        Protected method called by a key press.
-        
-        @param evt reference to the key event (QKeyEvent)
-        """
-        # TODO: PIM
-##        if self.__mw.personalInformationManager().viewKeyPressEvent(self, evt):
-##            return
-        
-        # TODO: Access Keys
-##        if self.__enableAccessKeys:
-##            self.__accessKeysPressed = (
-##                evt.modifiers() == Qt.ControlModifier and
-##                evt.key() == Qt.Key_Control)
-##            if not self.__accessKeysPressed:
-##                if self.__checkForAccessKey(evt):
-##                    self.__hideAccessKeys()
-##                    evt.accept()
-##                    return
-##                self.__hideAccessKeys()
-##            else:
-##                QTimer.singleShot(300, self.__accessKeyShortcut)
-        
-        self.__ctrlPressed = (evt.key() == Qt.Key_Control)
-        super(WebBrowserView, self).keyPressEvent(evt)
-    
-    def keyReleaseEvent(self, evt):
-        """
-        Protected method called by a key release.
-        
-        @param evt reference to the key event (QKeyEvent)
-        """
-        # TODO: Access Keys
-##        if self.__enableAccessKeys:
-##            self.__accessKeysPressed = evt.key() == Qt.Key_Control
-        
-        self.__ctrlPressed = False
-        super(WebBrowserView, self).keyReleaseEvent(evt)
+##    def keyPressEvent(self, evt):
+##        """
+##        Protected method called by a key press.
+##        
+##        @param evt reference to the key event (QKeyEvent)
+##        """
+##        # TODO: PIM
+####        if self.__mw.personalInformationManager().viewKeyPressEvent(self, evt):
+####            return
+##        
+##        # TODO: Access Keys
+####        if self.__enableAccessKeys:
+####            self.__accessKeysPressed = (
+####                evt.modifiers() == Qt.ControlModifier and
+####                evt.key() == Qt.Key_Control)
+####            if not self.__accessKeysPressed:
+####                if self.__checkForAccessKey(evt):
+####                    self.__hideAccessKeys()
+####                    evt.accept()
+####                    return
+####                self.__hideAccessKeys()
+####            else:
+####                QTimer.singleShot(300, self.__accessKeyShortcut)
+##        
+##        self.__ctrlPressed = (evt.key() == Qt.Key_Control)
+##        super(WebBrowserView, self).keyPressEvent(evt)
+##    
+##    def keyReleaseEvent(self, evt):
+##        """
+##        Protected method called by a key release.
+##        
+##        @param evt reference to the key event (QKeyEvent)
+##        """
+##        # TODO: Access Keys
+####        if self.__enableAccessKeys:
+####            self.__accessKeysPressed = evt.key() == Qt.Key_Control
+##        
+##        self.__ctrlPressed = False
+##        super(WebBrowserView, self).keyReleaseEvent(evt)
     
     def focusOutEvent(self, evt):
         """
@@ -1409,6 +1413,73 @@
                 self.__currentZoom = int(scaleFactor * 100)
                 self.__applyZoom()
             evt.accept()
+##bool WebView::eventFilter(QObject *obj, QEvent *event)
+##{
+##    // Hack to find widget that receives input events
+##    if (obj == this && event->type() == QEvent::ChildAdded) {
+##        QWidget *child = qobject_cast<QWidget*>(static_cast<QChildEvent*>(event)->child());
+##        if (child && child->inherits("QtWebEngineCore::RenderWidgetHostViewQtDelegateWidget")) {
+##            m_rwhvqt = child;
+##            m_rwhvqt->installEventFilter(this);
+##        }
+##    }
+##
+##    // Forward events to WebView
+##    if (obj == m_rwhvqt) {
+###define HANDLE_EVENT(f, t) \
+##        { \
+##        bool wasAccepted = event->isAccepted(); \
+##        event->setAccepted(false); \
+##        f(static_cast<t*>(event)); \
+##        bool ret = event->isAccepted(); \
+##        event->setAccepted(wasAccepted); \
+##        return ret; \
+##        }
+##
+##        switch (event->type()) {
+##        case QEvent::KeyPress:
+##            HANDLE_EVENT(_keyPressEvent, QKeyEvent);
+##
+##        case QEvent::KeyRelease:
+##            HANDLE_EVENT(_keyReleaseEvent, QKeyEvent);
+##
+##        case QEvent::MouseButtonPress:
+##            HANDLE_EVENT(_mousePressEvent, QMouseEvent);
+##
+##        case QEvent::MouseButtonRelease:
+##            HANDLE_EVENT(_mouseReleaseEvent, QMouseEvent);
+##
+##        case QEvent::MouseMove:
+##            HANDLE_EVENT(_mouseMoveEvent, QMouseEvent);
+##
+##        case QEvent::Wheel:
+##            HANDLE_EVENT(_wheelEvent, QWheelEvent);
+##
+##        default:
+##            break;
+##        }
+##
+###undef HANDLE_EVENT
+##    }
+##
+##    // Block already handled events
+##    if (obj == this) {
+##        switch (event->type()) {
+##        case QEvent::KeyPress:
+##        case QEvent::KeyRelease:
+##        case QEvent::MouseButtonPress:
+##        case QEvent::MouseButtonRelease:
+##        case QEvent::MouseMove:
+##        case QEvent::Wheel:
+##            return true;
+##
+##        default:
+##            break;
+##        }
+##    }
+##
+##    return QWebEngineView::eventFilter(obj, event);
+##}
     
     def clearHistory(self):
         """
@@ -1481,7 +1552,7 @@
             self.zoomIn()
             self.zoomOut()
         
-        # TODO: ZoomManager
+        # TODO: Zoom Manager
 ##        zoomValue = Helpviewer.HelpWindow.HelpWindow.zoomManager()\
 ##            .zoomValue(self.url())
 ##        self.setZoomValue(zoomValue)
@@ -1867,7 +1938,7 @@
     ## RSS related methods below
     ###########################################################################
     
-    # TODO: extract links from page to implement RSS stuff
+    # TODO: RSS, extract links from page to implement RSS stuff
 ##    def checkRSS(self):
 ##        """
 ##        Public method to check, if the loaded page contains feed links.

eric ide

mercurial