WebBrowser/History/HistoryDialog.py

changeset 5038
df7103c3f2a6
parent 4734
ce0b1f024da9
child 5389
9b1c800daff3
--- a/WebBrowser/History/HistoryDialog.py	Thu Jul 14 18:56:39 2016 +0200
+++ b/WebBrowser/History/HistoryDialog.py	Sun Jul 17 15:36:11 2016 +0200
@@ -25,10 +25,18 @@
     Class implementing a dialog to manage history.
     
     @signal openUrl(QUrl, str) emitted to open a URL in the current tab
-    @signal newUrl(QUrl, str) emitted to open a URL in a new tab
+    @signal newTab(QUrl, str) emitted to open a URL in a new tab
+    @signal newBackgroundTab(QUrl, str) emitted to open a URL in a new
+        background tab
+    @signal newWindow(QUrl, str) emitted to open a URL in a new window
+    @signal newPrivateWindow(QUrl, str) emitted to open a URL in a new
+        private window
     """
     openUrl = pyqtSignal(QUrl, str)
-    newUrl = pyqtSignal(QUrl, str)
+    newTab = pyqtSignal(QUrl, str)
+    newBackgroundTab = pyqtSignal(QUrl, str)
+    newWindow = pyqtSignal(QUrl, str)
+    newPrivateWindow = pyqtSignal(QUrl, str)
     
     def __init__(self, parent=None, manager=None):
         """
@@ -86,11 +94,21 @@
         menu = QMenu()
         idx = self.historyTree.indexAt(pos)
         idx = idx.sibling(idx.row(), 0)
-        if idx.isValid() and not self.historyTree.model().hasChildren(idx):
+        if idx.isValid() and \
+            not self.historyTree.model().hasChildren(idx) and \
+                len(self.historyTree.selectionModel().selectedRows()) == 1:
             menu.addAction(
                 self.tr("&Open"), self.__openHistoryInCurrentTab)
             menu.addAction(
                 self.tr("Open in New &Tab"), self.__openHistoryInNewTab)
+            menu.addAction(
+                self.tr("Open in New &Background Tab"),
+                self.__openHistoryInNewBackgroundTab)
+            menu.addAction(
+                self.tr("Open in New &Window"), self.c)
+            menu.addAction(
+                self.tr("Open in New Pri&vate Window"),
+                self.__openHistoryInPrivateWindow)
             menu.addSeparator()
             menu.addAction(self.tr("&Copy"), self.__copyHistory)
         menu.addAction(self.tr("&Remove"), self.historyTree.removeSelected)
@@ -102,33 +120,79 @@
         
         @param idx reference to the entry index (QModelIndex)
         """
-        self.__openHistory(
-            QApplication.keyboardModifiers() & Qt.ControlModifier)
+        if QApplication.keyboardModifiers() & Qt.ControlModifier:
+            self.__openHistoryInNewTab()
+        elif QApplication.keyboardModifiers() & Qt.ShiftModifier:
+            self.__openHistoryInNewWindow()
+        else:
+            self.__openHistoryInCurrentTab()
         
     def __openHistoryInCurrentTab(self):
         """
         Private slot to open a history entry in the current browser tab.
         """
-        self.__openHistory(False)
+        self.__openHistory()
     
     def __openHistoryInNewTab(self):
         """
         Private slot to open a history entry in a new browser tab.
         """
-        self.__openHistory(True)
+        self.__openHistory(newTab=True)
+    
+    def __openHistoryInNewBackgroundTab(self):
+        """
+        Private slot to open a history entry in a new background tab.
+        """
+        self.__openHistory(newTab=True, background=True)
     
-    def __openHistory(self, newTab):
+    def __openHistoryInNewWindow(self):
+        """
+        Private slot to open a history entry in a new browser window.
+        """
+        self.__openHistory(newWindow=True)
+    
+    def __openHistoryInPrivateWindow(self):
+        """
+        Private slot to open a history entry in a new private browser window.
+        """
+        self.__openHistory(newWindow=True, privateWindow=True)
+    
+    def __openHistory(self, newTab=False, background=False,
+                      newWindow=False, privateWindow=False):
         """
         Private method to open a history entry.
         
-        @param newTab flag indicating to open the history entry in a new tab
+        @param newTab flag indicating to open the feed message in a new tab
+        @type bool
+        @param background flag indicating to open the bookmark in a new
+            background tab
+        @type bool
+        @param newWindow flag indicating to open the bookmark in a new window
+        @type bool
+        @param privateWindow flag indicating to open the bookmark in a new
+            private window
+        @type bool
             (boolean)
         """
         idx = self.historyTree.currentIndex()
         if newTab:
-            self.newUrl.emit(
-                idx.data(HistoryModel.UrlRole),
-                idx.data(HistoryModel.TitleRole))
+            if background:
+                self.newBackgroundTab.emit(
+                    idx.data(HistoryModel.UrlRole),
+                    idx.data(HistoryModel.TitleRole))
+            else:
+                self.newTab.emit(
+                    idx.data(HistoryModel.UrlRole),
+                    idx.data(HistoryModel.TitleRole))
+        elif newWindow:
+            if privateWindow:
+                self.newPrivateWindow.emit(
+                    idx.data(HistoryModel.UrlRole),
+                    idx.data(HistoryModel.TitleRole))
+            else:
+                self.newWindow.emit(
+                    idx.data(HistoryModel.UrlRole),
+                    idx.data(HistoryModel.TitleRole))
         else:
             self.openUrl.emit(
                 idx.data(HistoryModel.UrlRole),

eric ide

mercurial