WebBrowser/Feeds/FeedsManager.py

changeset 5038
df7103c3f2a6
parent 4913
e16573640cb8
child 5389
9b1c800daff3
--- a/WebBrowser/Feeds/FeedsManager.py	Thu Jul 14 18:56:39 2016 +0200
+++ b/WebBrowser/Feeds/FeedsManager.py	Sun Jul 17 15:36:11 2016 +0200
@@ -31,10 +31,18 @@
     Class implementing a RSS feeds manager dialog.
     
     @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)
     
     UrlStringRole = Qt.UserRole
     ErrorDataRole = Qt.UserRole + 1
@@ -341,6 +349,14 @@
                 self.tr("&Open"), self.__openMessageInCurrentTab)
             menu.addAction(
                 self.tr("Open in New &Tab"), self.__openMessageInNewTab)
+            menu.addAction(
+                self.tr("Open in New &Background Tab"),
+                self.__openMessageInNewBackgroundTab)
+            menu.addAction(
+                self.tr("Open in New &Window"), self.__openMessageInNewWindow)
+            menu.addAction(
+                self.tr("Open in New Pri&vate Window"),
+                self.__openMessageInPrivateWindow)
             menu.addSeparator()
             menu.addAction(self.tr("&Copy URL to Clipboard"),
                            self.__copyUrlToClipboard)
@@ -363,28 +379,58 @@
         if self.feedsTree.indexOfTopLevelItem(itm) != -1:
             return
         
-        self.__openMessage(
-            QApplication.keyboardModifiers() &
-            Qt.ControlModifier == Qt.ControlModifier)
+        if QApplication.keyboardModifiers() & Qt.ControlModifier:
+            self.__openMessageInNewTab()
+        elif QApplication.keyboardModifiers() & Qt.ShiftModifier:
+            self.__openMessageInNewWindow()
+        else:
+            self.__openMessageInCurrentTab()
         
     def __openMessageInCurrentTab(self):
         """
         Private slot to open a feed message in the current browser tab.
         """
-        self.__openMessage(False)
+        self.__openMessage()
     
     def __openMessageInNewTab(self):
         """
         Private slot to open a feed message in a new browser tab.
         """
-        self.__openMessage(True)
+        self.__openMessage(newTab=True)
+    
+    def __openMessageInNewBackgroundTab(self):
+        """
+        Private slot to open a feed message in a new background tab.
+        """
+        self.__openMessage(newTab=True, background=True)
     
-    def __openMessage(self, newTab):
+    def __openMessageInNewWindow(self):
+        """
+        Private slot to open a feed message in a new browser window.
+        """
+        self.__openMessage(newWindow=True)
+    
+    def __openMessageInPrivateWindow(self):
+        """
+        Private slot to open a feed message in a new private browser window.
+        """
+        self.__openMessage(newWindow=True, privateWindow=True)
+    
+    def __openMessage(self, newTab=False, background=False,
+                      newWindow=False, privateWindow=False):
         """
         Private method to open a feed message.
         
         @param newTab flag indicating to open the feed message in a new tab
-            (boolean)
+        @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
         """
         itm = self.feedsTree.currentItem()
         if itm is None:
@@ -395,7 +441,15 @@
             title = itm.text(0)
             
             if newTab:
-                self.newUrl.emit(QUrl(urlString), title)
+                if background:
+                    self.newBackgroundTab.emit(QUrl(urlString), title)
+                else:
+                    self.newTab.emit(QUrl(urlString), title)
+            elif newWindow:
+                if privateWindow:
+                    self.newPrivateWindow.emit(QUrl(urlString), title)
+                else:
+                    self.newWindow.emit(QUrl(urlString), title)
             else:
                 self.openUrl.emit(QUrl(urlString), title)
         else:

eric ide

mercurial