WebBrowser/QtHelp/HelpSearchWidget.py

changeset 5038
df7103c3f2a6
parent 4875
4ee26909ac0d
child 5252
321c2003745d
--- a/WebBrowser/QtHelp/HelpSearchWidget.py	Thu Jul 14 18:56:39 2016 +0200
+++ b/WebBrowser/QtHelp/HelpSearchWidget.py	Sun Jul 17 15:36:11 2016 +0200
@@ -18,24 +18,32 @@
     """
     Class implementing a window for showing the QtHelp index.
     
-    @signal linkActivated(QUrl) emitted when a search result entry is activated
     @signal escapePressed() emitted when the ESC key was pressed
+    @signal openUrl(QUrl, str) emitted to open a search result entry in the
+        current tab
+    @signal newTab(QUrl, str) emitted to open a search result entry in a
+        new tab
+    @signal newBackgroundTab(QUrl, str) emitted to open a search result entry
+        in a new background tab
+    @signal newWindow(QUrl, str) emitted to open a search result entry in a
+        new window
     """
-    linkActivated = pyqtSignal(QUrl)
     escapePressed = pyqtSignal()
+    openUrl = pyqtSignal(QUrl)
+    newTab = pyqtSignal(QUrl)
+    newBackgroundTab = pyqtSignal(QUrl)
+    newWindow = pyqtSignal(QUrl)
     
-    def __init__(self, engine, mainWindow, parent=None):
+    def __init__(self, engine, parent=None):
         """
         Constructor
         
         @param engine reference to the help search engine (QHelpSearchEngine)
-        @param mainWindow reference to the main window object (QMainWindow)
         @param parent reference to the parent widget (QWidget)
         """
         super(HelpSearchWidget, self).__init__(parent)
         
         self.__engine = engine
-        self.__mw = mainWindow
         
         self.__layout = QVBoxLayout(self)
         
@@ -48,7 +56,7 @@
         self.setFocusProxy(self.__query)
         
         self.__query.search.connect(self.__search)
-        self.__result.requestShowLink.connect(self.linkActivated)
+        self.__result.requestShowLink.connect(self.openUrl)
         
         self.__engine.searchingStarted.connect(self.__searchingStarted)
         self.__engine.searchingFinished.connect(self.__searchingFinished)
@@ -90,10 +98,15 @@
            event.type() == QEvent.MouseButtonRelease:
             link = self.__result.linkAt(event.pos())
             if not link.isEmpty() and link.isValid():
-                ctrl = event.modifiers() & Qt.ControlModifier
-                if (event.button() == Qt.LeftButton and ctrl) or \
-                   event.button() == Qt.MidButton:
-                    self.__mw.newTab(link)
+                if event.button() == Qt.LeftButton:
+                    if event.modifiers() & Qt.ControlModifier:
+                        self.newTab.emit(link)
+                    elif event.modifiers() & Qt.ShiftModifier:
+                        self.newWindow.emit(link)
+                    else:
+                        self.openUrl.emit(link)
+                elif event.button() == Qt.MidButton:
+                    self.newTab.emit(link)
         
         return QWidget.eventFilter(self, watched, event)
     
@@ -131,9 +144,16 @@
         menu = QMenu()
         curTab = menu.addAction(self.tr("Open Link"))
         newTab = menu.addAction(self.tr("Open Link in New Tab"))
+        newBackgroundTab = menu.addAction(
+            self.tr("Open Link in Background Tab"))
+        newWindow = menu.addAction(self.tr("Open Link in New Window"))
         menu.move(evt.globalPos())
         act = menu.exec_()
         if act == curTab:
-            self.linkActivated.emit(link)
+            self.openUrl.emit(link)
         elif act == newTab:
-            self.__mw.newTab(link)
+            self.newTab.emit(link)
+        elif act == newBackgroundTab:
+            self.newBackgroundTab.emit(link)
+        elif act == newWindow:
+            self.newWindow.emit(link)

eric ide

mercurial