QScintilla/MiniEditor.py

changeset 5742
dc9cd8059221
parent 5603
4f2dd0850803
child 6038
b9d2063e610e
--- a/QScintilla/MiniEditor.py	Sat May 20 14:33:00 2017 +0200
+++ b/QScintilla/MiniEditor.py	Sat May 20 16:13:23 2017 +0200
@@ -127,19 +127,19 @@
             "replace": []
         }
         from .SearchReplaceWidget import SearchReplaceWidget
-        self.searchDlg = SearchReplaceWidget(False, self, self)
-        self.replaceDlg = SearchReplaceWidget(True, self, self)
+        self.__searchWidget = SearchReplaceWidget(False, self, self)
+        self.__replaceWidget = SearchReplaceWidget(True, self, self)
         
         centralWidget = QWidget()
         layout = QVBoxLayout()
         layout.setContentsMargins(1, 1, 1, 1)
         layout.addWidget(self.__textEdit)
-        layout.addWidget(self.searchDlg)
-        layout.addWidget(self.replaceDlg)
+        layout.addWidget(self.__searchWidget)
+        layout.addWidget(self.__replaceWidget)
         centralWidget.setLayout(layout)
         self.setCentralWidget(centralWidget)
-        self.searchDlg.hide()
-        self.replaceDlg.hide()
+        self.__searchWidget.hide()
+        self.__replaceWidget.hide()
         
         self.lexer_ = None
         self.apiLanguage = ""
@@ -180,9 +180,9 @@
             self.__contextMenuRequested)
         
         self.__textEdit.selectionChanged.connect(
-            self.searchDlg.selectionChanged)
+            self.__searchWidget.selectionChanged)
         self.__textEdit.selectionChanged.connect(
-            self.replaceDlg.selectionChanged)
+            self.__replaceWidget.selectionChanged)
         
         self.__setCurrentFile("")
         if filename:
@@ -1954,7 +1954,7 @@
             """ dialog is shown to enter the searchtext and options"""
             """ for the search.</p>"""
         ))
-        self.searchAct.triggered.connect(self.__search)
+        self.searchAct.triggered.connect(self.showSearchWidget)
         self.searchActions.append(self.searchAct)
         
         self.searchNextAct = E5Action(
@@ -1974,7 +1974,7 @@
             """ editor. The previously entered searchtext and options are"""
             """ reused.</p>"""
         ))
-        self.searchNextAct.triggered.connect(self.searchDlg.findNext)
+        self.searchNextAct.triggered.connect(self.__searchNext)
         self.searchActions.append(self.searchNextAct)
         
         self.searchPrevAct = E5Action(
@@ -1994,7 +1994,7 @@
             """ current editor. The previously entered searchtext and"""
             """ options are reused.</p>"""
         ))
-        self.searchPrevAct.triggered.connect(self.searchDlg.findPrev)
+        self.searchPrevAct.triggered.connect(self.__searchPrev)
         self.searchActions.append(self.searchPrevAct)
         
         self.searchClearMarkersAct = E5Action(
@@ -2033,8 +2033,76 @@
             """ it. A dialog is shown to enter the searchtext, the"""
             """ replacement text and options for the search and replace.</p>"""
         ))
-        self.replaceAct.triggered.connect(self.__replace)
+        self.replaceAct.triggered.connect(self.showReplaceWidget)
         self.searchActions.append(self.replaceAct)
+        
+        self.replaceAndSearchAct = E5Action(
+            QCoreApplication.translate(
+                'ViewManager', 'Replace and Search'),
+            UI.PixmapCache.getIcon("editReplaceSearch.png"),
+            QCoreApplication.translate(
+                'ViewManager', 'Replace and Search'),
+            QKeySequence(QCoreApplication.translate(
+                'ViewManager', "Meta+R", "Search|Replace and Search")),
+            0,
+            self, 'vm_replace_search')
+        self.replaceAndSearchAct.setStatusTip(QCoreApplication.translate(
+            'ViewManager',
+            'Replace the found text and search the next occurrence'))
+        self.replaceAndSearchAct.setWhatsThis(QCoreApplication.translate(
+            'ViewManager',
+            """<b>Replace and Search</b>"""
+            """<p>Replace the found occurrence of text in the current"""
+            """ editor and search for the next one. The previously entered"""
+            """ search text and options are reused.</p>"""
+        ))
+        self.replaceAndSearchAct.triggered.connect(
+            self.__replaceWidget.replaceSearch)
+        self.searchActions.append(self.replaceAndSearchAct)
+        
+        self.replaceSelectionAct = E5Action(
+            QCoreApplication.translate(
+                'ViewManager', 'Replace Occurrence'),
+            UI.PixmapCache.getIcon("editReplace.png"),
+            QCoreApplication.translate(
+                'ViewManager', 'Replace Occurrence'),
+            QKeySequence(QCoreApplication.translate(
+                'ViewManager', "Ctrl+Meta+R", "Search|Replace Occurrence")),
+            0,
+            self, 'vm_replace_occurrence')
+        self.replaceSelectionAct.setStatusTip(QCoreApplication.translate(
+            'ViewManager', 'Replace the found text'))
+        self.replaceSelectionAct.setWhatsThis(QCoreApplication.translate(
+            'ViewManager',
+            """<b>Replace Occurrence</b>"""
+            """<p>Replace the found occurrence of the search text in the"""
+            """ current editor.</p>"""
+        ))
+        self.replaceSelectionAct.triggered.connect(
+            self.__replaceWidget.replace)
+        self.searchActions.append(self.replaceSelectionAct)
+        
+        self.replaceAllAct = E5Action(
+            QCoreApplication.translate(
+                'ViewManager', 'Replace All'),
+            UI.PixmapCache.getIcon("editReplaceAll.png"),
+            QCoreApplication.translate(
+                'ViewManager', 'Replace All'),
+            QKeySequence(QCoreApplication.translate(
+                'ViewManager', "Shift+Meta+R", "Search|Replace All")),
+            0,
+            self, 'vm_replace_all')
+        self.replaceAllAct.setStatusTip(QCoreApplication.translate(
+            'ViewManager', 'Replace search text occurrences'))
+        self.replaceAllAct.setWhatsThis(QCoreApplication.translate(
+            'ViewManager',
+            """<b>Replace All</b>"""
+            """<p>Replace all occurrences of the search text in the current"""
+            """ editor.</p>"""
+        ))
+        self.replaceAllAct.triggered.connect(
+            self.__replaceWidget.replaceAll)
+        self.searchActions.append(self.replaceAllAct)
     
     def __createHelpActions(self):
         """
@@ -2114,6 +2182,9 @@
         self.editMenu.addAction(self.searchPrevAct)
         self.editMenu.addAction(self.searchClearMarkersAct)
         self.editMenu.addAction(self.replaceAct)
+        self.editMenu.addAction(self.replaceAndSearchAct)
+        self.editMenu.addAction(self.replaceSelectionAct)
+        self.editMenu.addAction(self.replaceAllAct)
         
         self.menuBar().addSeparator()
         
@@ -3043,13 +3114,39 @@
         """
         line, index = self.__textEdit.getCursorPosition()
         return self.__getWord(line, index)
+        
+    def showSearchWidget(self):
+        """
+        Public method to show the search widget.
+        """
+        self.__replaceWidget.hide()
+        self.__searchWidget.show()
+        self.__searchWidget.show(self.textForFind())
     
-    def __search(self):
+    def __searchNext(self):
+        """
+        Private slot to handle the search next action.
         """
-        Private method to handle the search action.
+        if self.__replaceWidget.isVisible():
+            self.__replaceWidget.findNext()
+        else:
+            self.__searchWidget.findNext()
+    
+    def __searchPrev(self):
+        """
+        Private slot to handle the search previous action.
         """
-        self.replaceDlg.close()
-        self.searchDlg.show(self.textForFind())
+        if self.__replaceWidget.isVisible():
+            self.__replaceWidget.findPrev()
+        else:
+            self.__searchWidget.findPrev()
+    
+    def showReplaceWidget(self):
+        """
+        Public method to show the replace widget.
+        """
+        self.__searchWidget.hide()
+        self.__replaceWidget.show(self.textForFind())
     
     def __searchClearMarkers(self):
         """
@@ -3057,13 +3154,6 @@
         """
         self.clearSearchIndicators()
     
-    def __replace(self):
-        """
-        Private method to handle the replace action.
-        """
-        self.searchDlg.close()
-        self.replaceDlg.show(self.textForFind())
-    
     def activeWindow(self):
         """
         Public method to fulfill the ViewManager interface.

eric ide

mercurial