Helpviewer/History/HistoryMenu.py

changeset 1694
648466a9451b
parent 1693
9bb872e26a33
child 1965
96f5a76e1845
--- a/Helpviewer/History/HistoryMenu.py	Sun Mar 04 18:20:13 2012 +0100
+++ b/Helpviewer/History/HistoryMenu.py	Sat Mar 10 15:17:52 2012 +0100
@@ -10,7 +10,7 @@
 import sys
 
 from PyQt4.QtCore import pyqtSignal, Qt, QMimeData, QUrl, QModelIndex
-from PyQt4.QtGui import QAbstractProxyModel, QSortFilterProxyModel
+from PyQt4.QtGui import QAbstractProxyModel, QSortFilterProxyModel, QMenu
 
 from E5Gui.E5ModelMenu import E5ModelMenu
 from E5Gui import E5MessageBox
@@ -253,19 +253,28 @@
     openUrl = pyqtSignal(QUrl, str)
     newUrl = pyqtSignal(QUrl, str)
     
-    def __init__(self, parent=None):
+    def __init__(self, parent=None, tabWidget=None):
         """
         Constructor
         
         @param parent reference to the parent widget (QWidget)
+        @param tabWidget reference to the tab widget managing the browser
+            tabs (HelpTabWidget
         """
         E5ModelMenu.__init__(self, parent)
         
+        self.__tabWidget = tabWidget
+        
         self.__historyManager = None
         self.__historyMenuModel = None
         self.__initialActions = []
         self.__mostVisitedMenu = None
         
+        self.__closedTabsMenu = QMenu(self.trUtf8("Closed Tabs"))
+        self.__closedTabsMenu.aboutToShow.connect(self.__aboutToShowClosedTabsMenu)
+        self.__tabWidget.closedTabsManager().closedTabAvailable.connect(
+            self.__closedTabAvailable)
+        
         self.setMaxRows(7)
         
         self.activated.connect(self.__activated)
@@ -320,6 +329,9 @@
             self.__mostVisitedMenu.openUrl.connect(self.openUrl)
             self.__mostVisitedMenu.newUrl.connect(self.newUrl)
         self.addMenu(self.__mostVisitedMenu)
+        act = self.addMenu(self.__closedTabsMenu)
+        act.setIcon(UI.PixmapCache.getIcon("trash.png"))
+        act.setEnabled(self.__tabWidget.canRestoreClosedTab())
         self.addSeparator()
         
         act = self.addAction(UI.PixmapCache.getIcon("history.png"),
@@ -358,6 +370,35 @@
                 self.trUtf8("Clear History"),
                 self.trUtf8("""Do you want to clear the history?""")):
             self.__historyManager.clear()
+    
+    def __aboutToShowClosedTabsMenu(self):
+        """
+        Private slot to populate the closed tabs menu.
+        """
+        fm = self.__closedTabsMenu.fontMetrics()
+        maxWidth = fm.width('m') * 40
+        
+        self.__closedTabsMenu.clear()
+        index = 0
+        for tab in self.__tabWidget.closedTabsManager().allClosedTabs():
+            title = fm.elidedText(tab.title, Qt.ElideRight, maxWidth)
+            self.__closedTabsMenu.addAction(
+                Helpviewer.HelpWindow.HelpWindow.icon(tab.url), title, 
+                self.__tabWidget.restoreClosedTab).setData(index)
+            index += 1
+        self.__closedTabsMenu.addSeparator()
+        self.__closedTabsMenu.addAction(self.trUtf8("Restore All Closed Tabs"),
+            self.__tabWidget.restoreAllClosedTabs)
+        self.__closedTabsMenu.addAction(self.trUtf8("Clear List"),
+            self.__tabWidget.clearClosedTabsList)
+    
+    def __closedTabAvailable(self, avail):
+        """
+        Private slot to handle changes of the availability of closed tabs.
+        
+        @param avail flag indicating the availability of closed tabs (boolean)
+        """
+        self.__closedTabsMenu.setEnabled(avail)
 
 
 class HistoryMostVisitedMenu(E5ModelMenu):

eric ide

mercurial