--- a/src/eric7/PdfViewer/PdfViewerWindow.py Wed Jan 18 16:38:29 2023 +0100 +++ b/src/eric7/PdfViewer/PdfViewerWindow.py Fri Jan 20 15:05:59 2023 +0100 @@ -146,12 +146,15 @@ self.__zoomSelector.zoomFactorChanged.connect(self.__view.setZoomFactor) self.__view.zoomFactorChanged.connect(self.__zoomSelector.setZoomFactor) self.__view.zoomModeChanged.connect(self.__zoomSelector.setZoomMode) + self.__view.selectionAvailable.connect(self.copyAct.setEnabled) self.__tocWidget.topicActivated.connect(self.__tocActivated) self.__searchWidget.searchResultActivated.connect(self.__handleSearchResult) self.__searchWidget.searchNextAvailable.connect(self.searchNextAct.setEnabled) self.__searchWidget.searchPrevAvailable.connect(self.searchPrevAct.setEnabled) + self.__searchWidget.searchCleared.connect(self.__view.clearSearchMarkers) + self.__searchWidget.searchResult.connect(self.__view.addSearchMarker) PdfViewerWindow.windows.append(self) @@ -505,11 +508,22 @@ """ Private method to create the Edit actions. """ + self.copyAct = EricAction( + self.tr("Copy"), + EricPixmapCache.getIcon("editCopy"), + self.tr("&Copy"), + QKeySequence(self.tr("Ctrl+C", "Edit|Copy")), + 0, + self, + "pdfviewer_edit_copy", + ) + self.copyAct.triggered.connect(self.__copyText) + self.__actions.append(self.copyAct) + self.copyAllAct = EricAction( self.tr("Copy All Text"), - EricPixmapCache.getIcon("editCopy"), - self.tr("&Copy All Text"), - QKeySequence(self.tr("Ctrl+C", "Edit|Copy All Text")), + self.tr("Copy &All Text"), + QKeySequence(self.tr("Alt+Ctrl+C", "Edit|Copy All Text")), 0, self, "pdfviewer_edit_copyall", @@ -519,7 +533,7 @@ self.copyAllPageAct = EricAction( self.tr("Copy All Page Text"), - self.tr("Copy &All Page Text"), + self.tr("Copy All Page &Text"), QKeySequence(self.tr("Shift+Ctrl+C", "Edit|Copy All Page Text")), 0, self, @@ -564,6 +578,7 @@ self.searchPrevAct.triggered.connect(self.__searchWidget.previousResult) self.__actions.append(self.searchPrevAct) + self.copyAct.setEnabled(False) self.searchNextAct.setEnabled(False) self.searchPrevAct.setEnabled(False) @@ -741,8 +756,9 @@ menu = mb.addMenu(self.tr("&Edit")) menu.setTearOffEnabled(True) + menu.addAction(self.copyAct) + menu.addSeparator() menu.addAction(self.copyAllAct) - menu.addSeparator() menu.addAction(self.copyAllPageAct) menu.addSeparator() menu.addAction(self.searchAct) @@ -1078,6 +1094,7 @@ @type QPdfLink """ self.__view.pageNavigator().jump(link) + self.__view.addSearchMarker(link) @pyqtSlot() def __search(self): @@ -1433,3 +1450,12 @@ QGuiApplication.clipboard().setText( "\r\n".join(textPages), QClipboard.Mode.Clipboard ) + + @pyqtSlot() + def __copyText(self): + """ + Private slot to copy the selected text to the system clipboard. + """ + selection = self.__view.getSelection() + if selection is not None: + selection.copyToClipboard()