src/eric7/QScintilla/Editor.py

branch
eric7
changeset 10674
8fc0af9c76dc
parent 10665
66564661c3b5
child 10676
d1479a4f1426
--- a/src/eric7/QScintilla/Editor.py	Mon Apr 08 14:55:48 2024 +0200
+++ b/src/eric7/QScintilla/Editor.py	Mon Apr 08 15:48:01 2024 +0200
@@ -1042,6 +1042,9 @@
         self.menu.addSeparator()
         self.reopenEncodingMenu = self.__initContextMenuReopenWithEncoding()
         self.menuActs["Reopen"] = self.menu.addMenu(self.reopenEncodingMenu)
+        self.menuActs["Reload"] = self.menu.addAction(
+            EricPixmapCache.getIcon("reload"), self.tr("Reload"), self.reload
+        )
         self.menuActs["Save"] = self.menu.addAction(
             EricPixmapCache.getIcon("fileSave"), self.tr("Save"), self.__contextSave
         )
@@ -6331,6 +6334,7 @@
         self.menuActs["Reopen"].setEnabled(
             not self.isModified() and bool(self.fileName)
         )
+        self.menuActs["Reload"].setEnabled(bool(self.fileName))
         self.menuActs["Save"].setEnabled(self.isModified())
         self.menuActs["Undo"].setEnabled(self.isUndoAvailable())
         self.menuActs["Redo"].setEnabled(self.isRedoAvailable())
@@ -8327,6 +8331,27 @@
 
         self.refreshed.emit()
 
+    @pyqtSlot()
+    def reload(self):
+        """
+        Public slot to reload the editor contents checking its modification state first.
+        """
+        if self.isModified():
+            ok = EricMessageBox.yesNo(
+                self,
+                self.tr("Reload File"),
+                self.tr(
+                    "<p>The editor contains unsaved modifications.</p>"
+                    "<p><b>Warning:</b> You will lose your changes upon reloading"
+                    " it.</p><p>Shall the editor really be reloaded?</p>"
+                ),
+                icon=EricMessageBox.Warning,
+            )
+        else:
+            ok = True
+        if ok:
+            self.refresh()
+
     def setMonospaced(self, on):
         """
         Public method to set/reset a monospaced font.

eric ide

mercurial