WebBrowser/QtHelp/HelpSearchWidget.py

changeset 5038
df7103c3f2a6
parent 4875
4ee26909ac0d
child 5252
321c2003745d
equal deleted inserted replaced
5037:b2b37d7c0791 5038:df7103c3f2a6
16 16
17 class HelpSearchWidget(QWidget): 17 class HelpSearchWidget(QWidget):
18 """ 18 """
19 Class implementing a window for showing the QtHelp index. 19 Class implementing a window for showing the QtHelp index.
20 20
21 @signal linkActivated(QUrl) emitted when a search result entry is activated
22 @signal escapePressed() emitted when the ESC key was pressed 21 @signal escapePressed() emitted when the ESC key was pressed
22 @signal openUrl(QUrl, str) emitted to open a search result entry in the
23 current tab
24 @signal newTab(QUrl, str) emitted to open a search result entry in a
25 new tab
26 @signal newBackgroundTab(QUrl, str) emitted to open a search result entry
27 in a new background tab
28 @signal newWindow(QUrl, str) emitted to open a search result entry in a
29 new window
23 """ 30 """
24 linkActivated = pyqtSignal(QUrl)
25 escapePressed = pyqtSignal() 31 escapePressed = pyqtSignal()
32 openUrl = pyqtSignal(QUrl)
33 newTab = pyqtSignal(QUrl)
34 newBackgroundTab = pyqtSignal(QUrl)
35 newWindow = pyqtSignal(QUrl)
26 36
27 def __init__(self, engine, mainWindow, parent=None): 37 def __init__(self, engine, parent=None):
28 """ 38 """
29 Constructor 39 Constructor
30 40
31 @param engine reference to the help search engine (QHelpSearchEngine) 41 @param engine reference to the help search engine (QHelpSearchEngine)
32 @param mainWindow reference to the main window object (QMainWindow)
33 @param parent reference to the parent widget (QWidget) 42 @param parent reference to the parent widget (QWidget)
34 """ 43 """
35 super(HelpSearchWidget, self).__init__(parent) 44 super(HelpSearchWidget, self).__init__(parent)
36 45
37 self.__engine = engine 46 self.__engine = engine
38 self.__mw = mainWindow
39 47
40 self.__layout = QVBoxLayout(self) 48 self.__layout = QVBoxLayout(self)
41 49
42 self.__result = self.__engine.resultWidget() 50 self.__result = self.__engine.resultWidget()
43 self.__query = self.__engine.queryWidget() 51 self.__query = self.__engine.queryWidget()
46 self.__layout.addWidget(self.__result) 54 self.__layout.addWidget(self.__result)
47 55
48 self.setFocusProxy(self.__query) 56 self.setFocusProxy(self.__query)
49 57
50 self.__query.search.connect(self.__search) 58 self.__query.search.connect(self.__search)
51 self.__result.requestShowLink.connect(self.linkActivated) 59 self.__result.requestShowLink.connect(self.openUrl)
52 60
53 self.__engine.searchingStarted.connect(self.__searchingStarted) 61 self.__engine.searchingStarted.connect(self.__searchingStarted)
54 self.__engine.searchingFinished.connect(self.__searchingFinished) 62 self.__engine.searchingFinished.connect(self.__searchingFinished)
55 63
56 self.__browser = self.__result.findChildren(QTextBrowser)[0] 64 self.__browser = self.__result.findChildren(QTextBrowser)[0]
88 """ 96 """
89 if self.__browser and watched == self.__browser.viewport() and \ 97 if self.__browser and watched == self.__browser.viewport() and \
90 event.type() == QEvent.MouseButtonRelease: 98 event.type() == QEvent.MouseButtonRelease:
91 link = self.__result.linkAt(event.pos()) 99 link = self.__result.linkAt(event.pos())
92 if not link.isEmpty() and link.isValid(): 100 if not link.isEmpty() and link.isValid():
93 ctrl = event.modifiers() & Qt.ControlModifier 101 if event.button() == Qt.LeftButton:
94 if (event.button() == Qt.LeftButton and ctrl) or \ 102 if event.modifiers() & Qt.ControlModifier:
95 event.button() == Qt.MidButton: 103 self.newTab.emit(link)
96 self.__mw.newTab(link) 104 elif event.modifiers() & Qt.ShiftModifier:
105 self.newWindow.emit(link)
106 else:
107 self.openUrl.emit(link)
108 elif event.button() == Qt.MidButton:
109 self.newTab.emit(link)
97 110
98 return QWidget.eventFilter(self, watched, event) 111 return QWidget.eventFilter(self, watched, event)
99 112
100 def keyPressEvent(self, evt): 113 def keyPressEvent(self, evt):
101 """ 114 """
129 return 142 return
130 143
131 menu = QMenu() 144 menu = QMenu()
132 curTab = menu.addAction(self.tr("Open Link")) 145 curTab = menu.addAction(self.tr("Open Link"))
133 newTab = menu.addAction(self.tr("Open Link in New Tab")) 146 newTab = menu.addAction(self.tr("Open Link in New Tab"))
147 newBackgroundTab = menu.addAction(
148 self.tr("Open Link in Background Tab"))
149 newWindow = menu.addAction(self.tr("Open Link in New Window"))
134 menu.move(evt.globalPos()) 150 menu.move(evt.globalPos())
135 act = menu.exec_() 151 act = menu.exec_()
136 if act == curTab: 152 if act == curTab:
137 self.linkActivated.emit(link) 153 self.openUrl.emit(link)
138 elif act == newTab: 154 elif act == newTab:
139 self.__mw.newTab(link) 155 self.newTab.emit(link)
156 elif act == newBackgroundTab:
157 self.newBackgroundTab.emit(link)
158 elif act == newWindow:
159 self.newWindow.emit(link)

eric ide

mercurial