diff -r b7aef103355a -r 080e060a0383 src/eric7/MicroPython/MicroPythonFileManagerWidget.py --- 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()