--- 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.