eric7/HexEdit/HexEditMainWindow.py

branch
eric7
changeset 9152
8a68afaf1ba2
parent 8881
54e42bc2437a
child 9153
506e35e424d5
diff -r 8c5296fe3056 -r 8a68afaf1ba2 eric7/HexEdit/HexEditMainWindow.py
--- 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):

eric ide

mercurial