diff -r b2b37d7c0791 -r df7103c3f2a6 WebBrowser/WebBrowserWindow.py --- a/WebBrowser/WebBrowserWindow.py Thu Jul 14 18:56:39 2016 +0200 +++ b/WebBrowser/WebBrowserWindow.py Sun Jul 17 15:36:11 2016 +0200 @@ -229,14 +229,14 @@ if WebBrowserWindow.useQtHelp: # setup the TOC widget - self.__tocWindow = HelpTocWidget(self.__helpEngine, self) + self.__tocWindow = HelpTocWidget(self.__helpEngine) self.__tocDock = QDockWidget(self.tr("Contents"), self) self.__tocDock.setObjectName("TocWindow") self.__tocDock.setWidget(self.__tocWindow) self.addDockWidget(Qt.LeftDockWidgetArea, self.__tocDock) # setup the index widget - self.__indexWindow = HelpIndexWidget(self.__helpEngine, self) + self.__indexWindow = HelpIndexWidget(self.__helpEngine) self.__indexDock = QDockWidget(self.tr("Index"), self) self.__indexDock.setObjectName("IndexWindow") self.__indexDock.setWidget(self.__indexWindow) @@ -251,8 +251,7 @@ self.__indexingStarted) self.__searchEngine.indexingFinished.connect( self.__indexingFinished) - self.__searchWindow = HelpSearchWidget( - self.__searchEngine, self) + self.__searchWindow = HelpSearchWidget(self.__searchEngine) self.__searchDock = QDockWidget(self.tr("Search"), self) self.__searchDock.setObjectName("SearchWindow") self.__searchDock.setWidget(self.__searchWindow) @@ -329,20 +328,31 @@ self.__activating = False if WebBrowserWindow.useQtHelp: # TOC window - self.__tocWindow.linkActivated.connect(self.__linkActivated) self.__tocWindow.escapePressed.connect( self.__activateCurrentBrowser) + self.__tocWindow.openUrl.connect(self.openUrl) + self.__tocWindow.newTab.connect(self.openUrlNewTab) + self.__tocWindow.newBackgroundTab.connect( + self.openUrlNewBackgroundTab) + self.__tocWindow.newWindow.connect(self.openUrlNewWindow) + # index window - self.__indexWindow.linkActivated.connect(self.__linkActivated) - self.__indexWindow.linksActivated.connect( - self.__linksActivated) self.__indexWindow.escapePressed.connect( self.__activateCurrentBrowser) + self.__indexWindow.openUrl.connect(self.openUrl) + self.__indexWindow.newTab.connect(self.openUrlNewTab) + self.__indexWindow.newBackgroundTab.connect( + self.openUrlNewBackgroundTab) + self.__indexWindow.newWindow.connect(self.openUrlNewWindow) + # search window - self.__searchWindow.linkActivated.connect( - self.__linkActivated) self.__searchWindow.escapePressed.connect( self.__activateCurrentBrowser) + self.__searchWindow.openUrl.connect(self.openUrl) + self.__searchWindow.newTab.connect(self.openUrlNewTab) + self.__searchWindow.newBackgroundTab.connect( + self.openUrlNewBackgroundTab) + self.__searchWindow.newWindow.connect(self.openUrlNewWindow) state = Preferences.getWebBrowser("WebBrowserState") self.restoreState(state) @@ -961,6 +971,23 @@ self.selectAllAct.triggered.connect(self.__selectAll) self.__actions.append(self.selectAllAct) + if hasattr(QWebEnginePage, "Unselect"): + self.unselectAct = E5Action( + self.tr('Unselect'), + self.tr('Unselect'), + QKeySequence(self.tr("Ctrl+Shift+A", "Edit|Unselect")), + 0, self, 'webbrowser_edit_unselect') + self.unselectAct.setStatusTip(self.tr('Clear current selection')) + self.unselectAct.setWhatsThis(self.tr( + """<b>Unselect</b>""" + """<p>Clear the selection of the current browser.</p>""" + )) + if not self.__initShortcutsOnly: + self.unselectAct.triggered.connect(self.__unselect) + self.__actions.append(self.unselectAct) + else: + self.unselectAct = None + self.findAct = E5Action( self.tr('Find...'), UI.PixmapCache.getIcon("find.png"), @@ -1766,6 +1793,8 @@ menu.addAction(self.pasteAct) menu.addSeparator() menu.addAction(self.selectAllAct) + if self.unselectAct is not None: + menu.addAction(self.unselectAct) menu.addSeparator() menu.addAction(self.findAct) menu.addAction(self.findNextAct) @@ -1802,7 +1831,10 @@ self.historyMenu.setTearOffEnabled(True) self.historyMenu.setTitle(self.tr('H&istory')) self.historyMenu.openUrl.connect(self.openUrl) - self.historyMenu.newUrl.connect(self.openUrlNewTab) + self.historyMenu.newTab.connect(self.openUrlNewTab) + self.historyMenu.newBackgroundTab.connect(self.openUrlNewBackgroundTab) + self.historyMenu.newWindow.connect(self.openUrlNewWindow) + self.historyMenu.newPrivateWindow.connect(self.openUrlNewPrivateWindow) mb.addMenu(self.historyMenu) from .Bookmarks.BookmarksMenu import BookmarksMenuBarMenu @@ -1810,7 +1842,8 @@ self.bookmarksMenu.setTearOffEnabled(True) self.bookmarksMenu.setTitle(self.tr('&Bookmarks')) self.bookmarksMenu.openUrl.connect(self.openUrl) - self.bookmarksMenu.newUrl.connect(self.openUrlNewTab) + self.bookmarksMenu.newTab.connect(self.openUrlNewTab) + self.bookmarksMenu.newWindow.connect(self.openUrlNewWindow) mb.addMenu(self.bookmarksMenu) bookmarksActions = [] @@ -2037,7 +2070,8 @@ self.bookmarksToolBar.setObjectName("BookmarksToolBar") self.bookmarksToolBar.setIconSize(UI.Config.ToolBarIconSize) self.bookmarksToolBar.openUrl.connect(self.openUrl) - self.bookmarksToolBar.newUrl.connect(self.openUrlNewTab) + self.bookmarksToolBar.newTab.connect(self.openUrlNewTab) + self.bookmarksToolBar.newWindow.connect(self.openUrlNewWindow) self.addToolBarBreak() self.addToolBar(self.bookmarksToolBar) @@ -2112,18 +2146,23 @@ browser.url().toString(), title) @pyqtSlot() - def newTab(self, link=None, addNextTo=None): + def newTab(self, link=None, addNextTo=None, background=False): """ Public slot called to open a new web browser tab. @param link file to be displayed in the new window (string or QUrl) @param addNextTo reference to the browser to open the tab after (HelpBrowser) + @keyparam background flag indicating to open the tab in the + background (bool) + @return reference to the new browser + @rtype WebBrowserView """ if addNextTo: - self.__tabWidget.newBrowserAfter(addNextTo, link) + return self.__tabWidget.newBrowserAfter( + addNextTo, link, background=background) else: - self.__tabWidget.newBrowser(link) + return self.__tabWidget.newBrowser(link, background=background) @pyqtSlot() def newWindow(self, link=None): @@ -2132,6 +2171,8 @@ @param link URL to be displayed in the new window @type str or QUrl + @return reference to the new window + @rtype WebBrowserWindow """ if link is None: linkName = "" @@ -2144,6 +2185,8 @@ h.show() self.webBrowserWindowOpened.emit(h) + + return h @pyqtSlot() def newPrivateWindow(self, link=None): @@ -2361,7 +2404,9 @@ from .Bookmarks.BookmarksDialog import BookmarksDialog self.__bookmarksDialog = BookmarksDialog(self) self.__bookmarksDialog.openUrl.connect(self.openUrl) - self.__bookmarksDialog.newUrl.connect(self.openUrlNewTab) + self.__bookmarksDialog.newTab.connect(self.openUrlNewTab) + self.__bookmarksDialog.newBackgroundTab.connect( + self.openUrlNewBackgroundTab) self.__bookmarksDialog.show() def bookmarkAll(self): @@ -2662,6 +2707,12 @@ """ self.currentBrowser().selectAll() + def __unselect(self): + """ + Private slot to clear the selection of the current browser. + """ + self.currentBrowser().unselect() + @classmethod def isPrivate(cls): """ @@ -2895,22 +2946,6 @@ self.__activating = True self.currentBrowser().setUrl(url) self.__activating = False - - def __linksActivated(self, links, keyword): - """ - Private slot to select a topic to be shown. - - @param links dictionary with help topic as key (string) and - URL as value (QUrl) - @param keyword keyword for the link set (string) - """ - if not self.__activating: - from .QtHelp.HelpTopicDialog import HelpTopicDialog - self.__activating = True - dlg = HelpTopicDialog(self, keyword, links) - if dlg.exec_() == QDialog.Accepted: - self.currentBrowser().setSource(dlg.link()) - self.__activating = False def __activateCurrentBrowser(self): """ @@ -3391,7 +3426,7 @@ return cls._bookmarksManager - def openUrl(self, url, title): + def openUrl(self, url, title=None): """ Public slot to load a URL in the current tab. @@ -3400,7 +3435,7 @@ """ self.__linkActivated(url) - def openUrlNewTab(self, url, title): + def openUrlNewTab(self, url, title=None): """ Public slot to load a URL in a new tab. @@ -3409,6 +3444,33 @@ """ self.newTab(url) + def openUrlNewBackgroundTab(self, url, title=None): + """ + Public slot to load a URL in a new background tab. + + @param url URL to be opened (QUrl) + @param title title of the bookmark (string) + """ + self.newTab(url, background=True) + + def openUrlNewWindow(self, url, title=None): + """ + Public slot to load a URL in a new window. + + @param url URL to be opened (QUrl) + @param title title of the bookmark (string) + """ + self.newWindow(url) + + def openUrlNewPrivateWindow(self, url, title=None): + """ + Public slot to load a URL in a new private window. + + @param url URL to be opened (QUrl) + @param title title of the bookmark (string) + """ + self.newPrivateWindow(url) + @classmethod def historyManager(cls): """ @@ -3769,7 +3831,10 @@ """ feedsManager = self.feedsManager() feedsManager.openUrl.connect(self.openUrl) - feedsManager.newUrl.connect(self.openUrlNewTab) + feedsManager.newTab.connect(self.openUrlNewTab) + feedsManager.newBackgroundTab.connect(self.openUrlNewBackgroundTab) + feedsManager.newWindow.connect(self.openUrlNewWindow) + feedsManager.newPrivateWindow.connect(self.openUrlNewPrivateWindow) feedsManager.rejected.connect(self.__feedsManagerClosed) feedsManager.show() @@ -3779,7 +3844,10 @@ """ feedsManager = self.sender() feedsManager.openUrl.disconnect(self.openUrl) - feedsManager.newUrl.disconnect(self.openUrlNewTab) + feedsManager.newTab.disconnect(self.openUrlNewTab) + feedsManager.newBackgroundTab.disconnect(self.openUrlNewBackgroundTab) + feedsManager.newWindow.disconnect(self.openUrlNewWindow) + feedsManager.newPrivateWindow.disconnect(self.openUrlNewPrivateWindow) feedsManager.rejected.disconnect(self.__feedsManagerClosed) def __showSiteinfoDialog(self):