WebBrowser/WebBrowserTabBar.py

branch
QtWebEngine
changeset 4713
8dca047daf4b
parent 4631
5c1a96925da4
child 4715
79009bc4acd5
diff -r 0a9162801b8d -r 8dca047daf4b WebBrowser/WebBrowserTabBar.py
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/WebBrowser/WebBrowserTabBar.py	Wed Feb 03 20:05:29 2016 +0100
@@ -0,0 +1,173 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2010 - 2016 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing a specialized tab bar for the web browser.
+"""
+
+from __future__ import unicode_literals
+
+from PyQt5.QtCore import Qt, QPoint, QTimer, QEvent
+from PyQt5.QtWidgets import QFrame, QLabel
+
+from E5Gui.E5TabWidget import E5WheelTabBar
+from E5Gui.E5PassivePopup import E5PassivePopup
+
+import Preferences
+
+
+class WebBrowserTabBar(E5WheelTabBar):
+    """
+    Class implementing the tab bar of the web browser.
+    """
+    def __init__(self, parent=None):
+        """
+        Constructor
+        
+        @param parent reference to the parent widget (WebBrowserTabWidget)
+        """
+        super(WebBrowserTabBar, self).__init__(parent)
+        
+        self.__tabWidget = parent
+        
+        self.__previewPopup = None
+        self.__currentTabPreviewIndex = -1
+        
+        self.setMouseTracking(True)
+    
+    def __showTabPreview(self):
+        """
+        Private slot to show the tab preview.
+        """
+        pass
+        # TODO: page preview
+##        indexedBrowser = self.__tabWidget.browserAt(
+##            self.__currentTabPreviewIndex)
+##        currentBrowser = self.__tabWidget.currentBrowser()
+##        
+##        if indexedBrowser is None or currentBrowser is None:
+##            return
+##        
+##        # no previews during load
+##        if indexedBrowser.progress() != 0:
+##            return
+##        
+##        w = self.tabSizeHint(self.__currentTabPreviewIndex).width()
+##        h = int(w * currentBrowser.height() / currentBrowser.width())
+##        
+##        self.__previewPopup = E5PassivePopup(self)
+##        self.__previewPopup.setFrameShape(QFrame.StyledPanel)
+##        self.__previewPopup.setFrameShadow(QFrame.Plain)
+##        self.__previewPopup.setFixedSize(w, h)
+##        
+##        from .HelpSnap import renderTabPreview
+##        label = QLabel()
+##        label.setPixmap(renderTabPreview(indexedBrowser.page(), w, h))
+##        
+##        self.__previewPopup.setView(label)
+##        self.__previewPopup.layout().setAlignment(Qt.AlignTop)
+##        self.__previewPopup.layout().setContentsMargins(0, 0, 0, 0)
+##        
+##        tr = self.tabRect(self.__currentTabPreviewIndex)
+##        pos = QPoint(tr.x(), tr.y() + tr.height())
+##        
+##        self.__previewPopup.show(self.mapToGlobal(pos))
+    
+    def mouseMoveEvent(self, evt):
+        """
+        Protected method to handle mouse move events.
+        
+        @param evt reference to the mouse move event (QMouseEvent)
+        """
+        if self.count() == 1:
+            return
+        
+        E5WheelTabBar.mouseMoveEvent(self, evt)
+        
+        # TODO: page preview
+##        if Preferences.getHelp("ShowPreview"):
+##            # Find the tab under the mouse
+##            i = 0
+##            tabIndex = -1
+##            while i < self.count() and tabIndex == -1:
+##                if self.tabRect(i).contains(evt.pos()):
+##                    tabIndex = i
+##                i += 1
+##            
+##            # If found and not the current tab then show tab preview
+##            if tabIndex != -1 and \
+##               tabIndex != self.currentIndex() and \
+##               self.__currentTabPreviewIndex != tabIndex and \
+##               evt.buttons() == Qt.NoButton:
+##                self.__currentTabPreviewIndex = tabIndex
+##                QTimer.singleShot(200, self.__showTabPreview)
+##            
+##            # If current tab or not found then hide previous tab preview
+##            if tabIndex == self.currentIndex() or \
+##               tabIndex == -1:
+##                if self.__previewPopup is not None:
+##                    self.__previewPopup.hide()
+##                self.__currentTabPreviewIndex = -1
+    
+    def leaveEvent(self, evt):
+        """
+        Protected method to handle leave events.
+        
+        @param evt reference to the leave event (QEvent)
+        """
+        # TODO: page preview
+##        if Preferences.getHelp("ShowPreview"):
+##            # If leave tabwidget then hide previous tab preview
+##            if self.__previewPopup is not None:
+##                self.__previewPopup.hide()
+##            self.__currentTabPreviewIndex = -1
+        
+        E5WheelTabBar.leaveEvent(self, evt)
+    
+    def mousePressEvent(self, evt):
+        """
+        Protected method to handle mouse press events.
+        
+        @param evt reference to the mouse press event (QMouseEvent)
+        """
+        # TODO: page preview
+##        if Preferences.getHelp("ShowPreview"):
+##            if self.__previewPopup is not None:
+##                self.__previewPopup.hide()
+##            self.__currentTabPreviewIndex = -1
+        
+        E5WheelTabBar.mousePressEvent(self, evt)
+    
+    def event(self, evt):
+        """
+        Public method to handle event.
+        
+        This event handler just handles the tooltip event and passes the
+        handling of all others to the superclass.
+        
+        @param evt reference to the event to be handled (QEvent)
+        @return flag indicating, if the event was handled (boolean)
+        """
+        # TODO: page preview
+##        if evt.type() == QEvent.ToolTip and \
+##           Preferences.getHelp("ShowPreview"):
+##            # suppress tool tips if we are showing previews
+##            evt.setAccepted(True)
+##            return True
+        
+        return E5WheelTabBar.event(self, evt)
+    
+    def tabRemoved(self, index):
+        """
+        Public slot to handle the removal of a tab.
+        
+        @param index index of the removed tab (integer)
+        """
+        pass
+        # TODO: page preview
+##        if Preferences.getHelp("ShowPreview"):
+##            if self.__previewPopup is not None:
+##                self.__previewPopup.hide()
+##            self.__currentTabPreviewIndex = -1

eric ide

mercurial