src/eric7/PdfViewer/PdfViewerWindow.py

branch
pdf_viewer
changeset 9707
717f95e35ca8
parent 9706
c0ff0b4d5657
child 9712
24bdc37413dd
--- 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()

eric ide

mercurial