diff -r b2b37d7c0791 -r df7103c3f2a6 WebBrowser/History/HistoryDialog.py --- 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),