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) |