WebBrowser/WebBrowserWindow.py

changeset 5038
df7103c3f2a6
parent 5033
d1c2651060ec
child 5108
f5cb9cb98e6a
--- 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):

eric ide

mercurial