diff -r b2b37d7c0791 -r df7103c3f2a6 WebBrowser/Feeds/FeedsManager.py --- 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: