src/eric7/QScintilla/Editor.py

branch
server
changeset 10680
306373ccf8fd
parent 10636
24d9e6ff8111
parent 10679
4d3e0ce54322
child 10704
27d21e5163b8
diff -r 280a53840aa3 -r 306373ccf8fd src/eric7/QScintilla/Editor.py
--- a/src/eric7/QScintilla/Editor.py	Tue Mar 26 10:55:04 2024 +0100
+++ b/src/eric7/QScintilla/Editor.py	Wed Apr 10 17:03:56 2024 +0200
@@ -1053,6 +1053,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
         )
@@ -1659,7 +1662,7 @@
                 self.setLanguage(self.supportedLanguages[language][1])
                 self.checkSyntax()
 
-        self.__docstringGenerator = None
+        self.resetDocstringGenerator()
 
     def __languageChanged(self, language, propagate=True):
         """
@@ -1682,7 +1685,7 @@
             self.setLanguage(self.supportedLanguages[language][1], propagate=propagate)
             self.checkSyntax()
 
-        self.__docstringGenerator = None
+        self.resetDocstringGenerator()
 
     def __resetLanguage(self, propagate=True):
         """
@@ -1711,7 +1714,7 @@
         with contextlib.suppress(AttributeError):
             self.menuActs["MonospacedFont"].setChecked(self.useMonospaced)
 
-        self.__docstringGenerator = None
+        self.resetDocstringGenerator()
 
         if not self.inLanguageChanged and propagate:
             self.inLanguageChanged = True
@@ -6402,6 +6405,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["SaveAsRemote"].setEnabled(
             ericApp().getObject("EricServer").isServerConnected()
@@ -8383,6 +8387,15 @@
                     # do not prompt for this change again...
                     self.recordModificationTime()
 
+    def getModificationTime(self):
+        """
+        Public method to get the time of the latest (saved) modification.
+
+        @return time of the latest modification
+        @rtype int
+        """
+        return self.lastModified
+
     @pyqtSlot()
     def recordModificationTime(self, filename=""):
         """
@@ -8499,6 +8512,28 @@
 
         self.refreshed.emit()
 
+    @pyqtSlot()
+    def reload(self):
+        """
+        Public slot to reload the editor contents checking its modification state first.
+        """
+        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,
+            )
+            if self.isModified()
+            else True
+        )
+        if ok:
+            self.refresh()
+
     def setMonospaced(self, on):
         """
         Public method to set/reset a monospaced font.
@@ -9989,6 +10024,12 @@
     ## Methods implementing the docstring generator interface
     #######################################################################
 
+    def resetDocstringGenerator(self):
+        """
+        Public method to reset the current docstring generator.
+        """
+        self.__docstringGenerator = None
+
     def getDocstringGenerator(self):
         """
         Public method to get a reference to the docstring generator.

eric ide

mercurial