src/eric7/PdfViewer/PdfSearchWidget.py

branch
pdf_viewer
changeset 9722
63135ab601e7
parent 9709
c89fc15ecf56
child 10439
21c28b0f9e41
equal deleted inserted replaced
9714:2a3c6f6f88b6 9722:63135ab601e7
5 5
6 """ 6 """
7 Module implementing a Search widget. 7 Module implementing a Search widget.
8 """ 8 """
9 9
10 from PyQt6.QtCore import Qt, pyqtSlot, QModelIndex, pyqtSignal 10 from PyQt6.QtCore import QModelIndex, Qt, pyqtSignal, pyqtSlot
11 from PyQt6.QtPdf import QPdfSearchModel, QPdfDocument, QPdfLink 11 from PyQt6.QtPdf import QPdfDocument, QPdfLink, QPdfSearchModel
12 from PyQt6.QtWidgets import ( 12 from PyQt6.QtWidgets import (
13 QWidget, QVBoxLayout, QLabel, QLineEdit, QHBoxLayout, QToolButton, 13 QAbstractItemView,
14 QAbstractItemView, QTreeWidget, QTreeWidgetItem 14 QHBoxLayout,
15 QLabel,
16 QLineEdit,
17 QToolButton,
18 QTreeWidget,
19 QTreeWidgetItem,
20 QVBoxLayout,
21 QWidget,
15 ) 22 )
16 23
17 from eric7 import Preferences 24 from eric7 import Preferences
18 from eric7.EricGui import EricPixmapCache 25 from eric7.EricGui import EricPixmapCache
19 26
134 index, QPdfSearchModel.Role.Page.value 141 index, QPdfSearchModel.Role.Page.value
135 ) 142 )
136 ) 143 )
137 ), 144 ),
138 "", 145 "",
139 ] 146 ],
140 ) 147 )
141 contextBefore = self.__searchModel.data( 148 contextBefore = self.__searchModel.data(
142 index, QPdfSearchModel.Role.ContextBefore.value 149 index, QPdfSearchModel.Role.ContextBefore.value
143 ) 150 )
144 if len(contextBefore) > contextLength: 151 if len(contextBefore) > contextLength:
148 ) 155 )
149 if len(contextAfter) > contextLength: 156 if len(contextAfter) > contextLength:
150 contextAfter = "{0} ...".format(contextAfter[:contextLength]) 157 contextAfter = "{0} ...".format(contextAfter[:contextLength])
151 resultLabel = QLabel( 158 resultLabel = QLabel(
152 self.tr( 159 self.tr(
153 "{0}<b>{1}</b>{2}", 160 "{0}<b>{1}</b>{2}", "context before, search string, context after"
154 "context before, search string, context after"
155 ).format(contextBefore, self.searchString(), contextAfter) 161 ).format(contextBefore, self.searchString(), contextAfter)
156 ) 162 )
157 self.setItemWidget(itm, 1, resultLabel) 163 self.setItemWidget(itm, 1, resultLabel)
158 164
159 if Preferences.getPdfViewer("PdfSearchHighlightAll"): 165 if Preferences.getPdfViewer("PdfSearchHighlightAll"):
239 245
240 class PdfSearchWidget(QWidget): 246 class PdfSearchWidget(QWidget):
241 """ 247 """
242 Class implementing a Search widget. 248 Class implementing a Search widget.
243 249
244 @signal searchResultAktivated(QPdfLink) emitted to send the activated search 250 @signal searchResultActivated(QPdfLink) emitted to send the activated search
245 result link 251 result link
246 @signal searchNextAvailable(bool) emitted to indicate the availability of 252 @signal searchNextAvailable(bool) emitted to indicate the availability of
247 search results after the current one 253 search results after the current one
248 @signal searchPrevAvailable(bool) emitted to indicate the availability of 254 @signal searchPrevAvailable(bool) emitted to indicate the availability of
249 search results before the current one 255 search results before the current one
276 self.__header.setAlignment(Qt.AlignmentFlag.AlignCenter) 282 self.__header.setAlignment(Qt.AlignmentFlag.AlignCenter)
277 self.__layout.addWidget(self.__header) 283 self.__layout.addWidget(self.__header)
278 284
279 # Line 2: search entry and navigation buttons 285 # Line 2: search entry and navigation buttons
280 self.__searchLineLayout = QHBoxLayout() 286 self.__searchLineLayout = QHBoxLayout()
281 287
282 self.__searchEdit = QLineEdit(self) 288 self.__searchEdit = QLineEdit(self)
283 self.__searchEdit.setPlaceholderText(self.tr("Search ...")) 289 self.__searchEdit.setPlaceholderText(self.tr("Search ..."))
284 self.__searchEdit.setClearButtonEnabled(True) 290 self.__searchEdit.setClearButtonEnabled(True)
285 self.__searchLineLayout.addWidget(self.__searchEdit) 291 self.__searchLineLayout.addWidget(self.__searchEdit)
286 292
287 # layout for the navigation buttons 293 # layout for the navigation buttons
288 self.__buttonsLayout = QHBoxLayout() 294 self.__buttonsLayout = QHBoxLayout()
289 self.__buttonsLayout.setSpacing(0) 295 self.__buttonsLayout.setSpacing(0)
290 296
291 self.__findPrevButton = QToolButton(self) 297 self.__findPrevButton = QToolButton(self)
294 ) 300 )
295 self.__findPrevButton.setIcon(EricPixmapCache.getIcon("1leftarrow")) 301 self.__findPrevButton.setIcon(EricPixmapCache.getIcon("1leftarrow"))
296 self.__buttonsLayout.addWidget(self.__findPrevButton) 302 self.__buttonsLayout.addWidget(self.__findPrevButton)
297 303
298 self.__findNextButton = QToolButton(self) 304 self.__findNextButton = QToolButton(self)
299 self.__findNextButton.setToolTip(self.tr("Press to move to the next occurrence")) 305 self.__findNextButton.setToolTip(
306 self.tr("Press to move to the next occurrence")
307 )
300 self.__findNextButton.setIcon(EricPixmapCache.getIcon("1rightarrow")) 308 self.__findNextButton.setIcon(EricPixmapCache.getIcon("1rightarrow"))
301 self.__buttonsLayout.addWidget(self.__findNextButton) 309 self.__buttonsLayout.addWidget(self.__findNextButton)
302 310
303 self.__searchLineLayout.addLayout(self.__buttonsLayout) 311 self.__searchLineLayout.addLayout(self.__buttonsLayout)
304 self.__layout.addLayout(self.__searchLineLayout) 312 self.__layout.addLayout(self.__searchLineLayout)
377 @pyqtSlot(QTreeWidgetItem) 385 @pyqtSlot(QTreeWidgetItem)
378 def __entrySelected(self, item): 386 def __entrySelected(self, item):
379 """ 387 """
380 Private slot to handle the selection of a search result entry. 388 Private slot to handle the selection of a search result entry.
381 389
382 @param index index of the activated entry 390 @param item reference to the selected item
383 @type QModelIndex 391 @type QTreeWidgetItem
384 """ 392 """
385 link = self.__resultsWidget.getPdfLink(item) 393 link = self.__resultsWidget.getPdfLink(item)
386 self.searchResultActivated.emit(link) 394 self.searchResultActivated.emit(link)
387 395
388 @pyqtSlot() 396 @pyqtSlot()

eric ide

mercurial