src/eric7/MicroPython/MicroPythonFileManagerWidget.py

branch
eric7
changeset 9853
080e060a0383
parent 9802
22aeee2bf35f
child 9905
189b7a23c3c6
--- a/src/eric7/MicroPython/MicroPythonFileManagerWidget.py	Mon Mar 06 11:39:26 2023 +0100
+++ b/src/eric7/MicroPython/MicroPythonFileManagerWidget.py	Mon Mar 06 16:13:42 2023 +0100
@@ -29,7 +29,6 @@
 from eric7.EricWidgets.EricPathPicker import EricPathPickerModes
 from eric7.UI.DeleteFilesConfirmationDialog import DeleteFilesConfirmationDialog
 
-from .MicroPythonFileManager import MicroPythonFileManager
 from .MicroPythonFileSystemUtilities import (
     decoratedName,
     listdirStat,
@@ -44,12 +43,12 @@
     Class implementing a file manager for MicroPython devices.
     """
 
-    def __init__(self, device, parent=None):
+    def __init__(self, fileManager, parent=None):
         """
         Constructor
 
-        @param device MicroPython device object
-        @type BaseDevice
+        @param fileManager reference to the device file manager interface
+        @type MicroPythonFileManager
         @param parent reference to the parent widget
         @type QWidget
         """
@@ -94,7 +93,7 @@
         )
 
         self.__progressInfoDialog = None
-        self.__fileManager = MicroPythonFileManager(device, self)
+        self.__fileManager = fileManager
 
         self.__fileManager.longListFiles.connect(self.__handleLongListFiles)
         self.__fileManager.currentDir.connect(self.__handleCurrentDir)
@@ -741,7 +740,7 @@
             filename, ok = QInputDialog.getText(
                 self,
                 self.tr("Save File As"),
-                self.tr("Enter a new name for the file"),
+                self.tr("Enter a new name for the file:"),
                 QLineEdit.EchoMode.Normal,
                 filename,
             )
@@ -770,15 +769,25 @@
 
         text = aw.text()
         if self.__repl.deviceSupportsLocalFileAccess():
-            with open(os.path.join(self.deviceCwd.text(), filename), "w") as f:
+            filename = os.path.join(self.deviceCwd.text(), filename)
+            os.makedirs(os.path.dirname(filename), exist_ok=True)
+            with open(filename, "w") as f:
                 f.write(text)
+            self.__newDeviceList()
+            aw.setFileName(filename)
         else:
-            deviceCwd = self.deviceCwd.text()
-            if deviceCwd:
-                filename = (
-                    deviceCwd + "/" + filename if deviceCwd != "/" else "/" + filename
-                )
+            if not filename.startswith("/"):
+                deviceCwd = self.deviceCwd.text()
+                if deviceCwd:
+                    filename = (
+                        deviceCwd + "/" + filename
+                        if deviceCwd != "/"
+                        else "/" + filename
+                    )
+            dirname = filename.rsplit("/", 1)[0]
+            self.__fileManager.makedirs(dirname)
             self.__fileManager.putData(filename, text.encode("utf-8"))
+            aw.setFileName("device:" + filename)
 
         aw.setModified(False)
         aw.resetOnlineChangeTraceInfo()

eric ide

mercurial