--- a/eric7/HexEdit/HexEditMainWindow.py Wed Jun 15 09:44:07 2022 +0200 +++ b/eric7/HexEdit/HexEditMainWindow.py Thu Jun 16 18:28:59 2022 +0200 @@ -9,10 +9,10 @@ import os import contextlib +import pathlib from PyQt6.QtCore import ( - pyqtSignal, pyqtSlot, QFile, QFileInfo, QSize, QCoreApplication, QLocale, - QIODevice + pyqtSignal, pyqtSlot, QFile, QSize, QCoreApplication, QLocale, QIODevice ) from PyQt6.QtGui import QKeySequence, QAction from PyQt6.QtWidgets import ( @@ -1082,7 +1082,7 @@ if not fileName: return False - if QFileInfo(fileName).exists(): + if pathlib.Path(fileName).exists(): res = EricMessageBox.yesNo( self, self.tr("Save binary file"), @@ -1165,42 +1165,34 @@ if not fileName: return - ext = QFileInfo(fileName).suffix() - if not ext: + fpath = pathlib.Path(fileName) + if not fpath.suffix: ex = selectedFilter.split("(*")[1].split(")")[0] if ex: - fileName += ex - if QFileInfo(fileName).exists(): + fpath = fpath.with_suffix(ex) + if fpath.exists(): res = EricMessageBox.yesNo( self, self.tr("Save to readable file"), self.tr("<p>The file <b>{0}</b> already exists." - " Overwrite it?</p>").format(fileName), + " Overwrite it?</p>").format(str(fpath)), icon=EricMessageBox.Warning) if not res: return - file = QFile(fileName) - if not file.open(QIODevice.OpenModeFlag.WriteOnly): - EricMessageBox.warning( - self, self.tr("eric Hex Editor"), - self.tr("Cannot write file '{0}:\n{1}.") - .format(fileName, file.errorString())) - return - readableData = ( self.__editor.selectionToReadableString() if selectionOnly else self.__editor.toReadableString() ) - res = file.write(readableData.encode("latin1")) != -1 - file.close() - - if not res: + try: + with fpath.open("w", encoding="latin1") as f: + f.write(readableData) + except OSError as err: EricMessageBox.warning( self, self.tr("eric Hex Editor"), self.tr("Cannot write file '{0}:\n{1}.") - .format(fileName, file.errorString())) + .format(str(fpath), str(err))) return self.__statusBar.showMessage(self.tr("File saved"), 2000) @@ -1258,7 +1250,7 @@ @return filename part @rtype str """ - return QFileInfo(fullFileName).fileName() + return pathlib.Path(fullFileName).name def setRecentPaths(self, openPath, savePath): """ @@ -1435,7 +1427,7 @@ Utilities.compactPath( rs, HexEditMainWindow.maxMenuFilePathLen))) act.setData(rs) - act.setEnabled(QFileInfo(rs).exists()) + act.setEnabled(pathlib.Path(rs).exists()) self.__recentMenu.addSeparator() self.__recentMenu.addAction(self.tr('&Clear'), self.__clearRecent) @@ -1469,7 +1461,7 @@ rs = Preferences.Prefs.rsettings.value(recentNameHexFiles) if rs is not None: for f in Preferences.toList(rs): - if QFileInfo(f).exists(): + if pathlib.Path(f).exists(): self.__recent.append(f) def __saveRecent(self):