diff -r f0e22f3a5878 -r 2eed840795c0 src/eric7/MicroPython/MicroPythonFileManagerWidget.py --- a/src/eric7/MicroPython/MicroPythonFileManagerWidget.py Wed Feb 15 15:55:37 2023 +0100 +++ b/src/eric7/MicroPython/MicroPythonFileManagerWidget.py Wed Feb 15 17:45:10 2023 +0100 @@ -57,7 +57,7 @@ self.setupUi(self) self.__repl = parent - self.__deviceWithLocalAccess = device.supportsLocalFileAccess() + deviceWithLocalAccess = device.supportsLocalFileAccess() self.syncButton.setIcon(EricPixmapCache.getIcon("2rightarrow")) self.putButton.setIcon(EricPixmapCache.getIcon("1rightarrow")) @@ -149,10 +149,9 @@ self.__deviceMenu.addAction( self.tr("Create Directory"), self.__createDeviceDirectory ) - if not self.__deviceWithLocalAccess: - self.__devDelDirAct = self.__deviceMenu.addAction( - self.tr("Delete Directory"), self.__deleteDeviceDirectory - ) + self.__devDelDirAct = self.__deviceMenu.addAction( + self.tr("Delete Directory"), self.__deleteDeviceDirectory + ) self.__devDelDirTreeAct = self.__deviceMenu.addAction( self.tr("Delete Directory Tree"), self.__deleteDeviceDirectoryTree ) @@ -188,7 +187,7 @@ ) self.__listLocalFiles(dirname) - if self.__deviceWithLocalAccess: + if self.__repl.deviceSupportsLocalFileAccess(): dirname = self.__repl.getDeviceWorkspace() if dirname: self.__listLocalFiles(dirname, True) @@ -264,7 +263,7 @@ """ if not dirname: dirname = os.getcwd() - if dirname.endswith(os.sep): + if dirname != os.sep and dirname.endswith(os.sep): dirname = dirname[:-1] if localDevice: self.deviceCwd.setText(dirname) @@ -326,6 +325,16 @@ self.putButton.setEnabled(enable) self.putAsButton.setEnabled(enable) + @pyqtSlot(str) + def on_localCwd_textChanged(self, cwd): + """ + Public slot handling a change of the current local working directory. + + @param cwd current local working directory + @type str + """ + self.localUpButton.setEnabled(cwd != os.sep) + @pyqtSlot() def on_localUpButton_clicked(self): """ @@ -368,7 +377,7 @@ @param column column of the activation @type int """ - if self.__deviceWithLocalAccess: + if self.__repl.deviceSupportsLocalFileAccess(): name = os.path.join(self.deviceCwd.text(), item.text(0)) if name.endswith("/"): # directory names end with a '/' @@ -411,6 +420,16 @@ self.openButton.setEnabled(enable) self.saveButton.setEnabled(enable) + @pyqtSlot(str) + def on_deviceCwd_textChanged(self, cwd): + """ + Public slot handling a change of the current device working directory. + + @param cwd current device working directory + @type str + """ + self.deviceUpButton.setEnabled(cwd != "/") + @pyqtSlot() def on_deviceUpButton_clicked(self): """ @@ -418,7 +437,7 @@ """ cwd = self.deviceCwd.text() dirname = os.path.dirname(cwd) - if self.__deviceWithLocalAccess: + if self.__repl.deviceSupportsLocalFileAccess(): self.__listLocalFiles(dirname, True) else: self.__fileManager.cd(dirname) @@ -428,7 +447,7 @@ """ Private slot to move to the device home directory. """ - if self.__deviceWithLocalAccess: + if self.__repl.deviceSupportsLocalFileAccess(): dirname = self.__repl.getDeviceWorkspace() if dirname: self.__listLocalFiles(dirname, True) @@ -443,7 +462,7 @@ Private slot to reload the device list. """ dirname = self.deviceCwd.text() - if self.__deviceWithLocalAccess: + if self.__repl.deviceSupportsLocalFileAccess(): self.__listLocalFiles(dirname, True) else: if dirname: @@ -508,7 +527,7 @@ elif action == "rename": deviceFilename = os.path.basename(resultFilename) - if self.__deviceWithLocalAccess: + if self.__repl.deviceSupportsLocalFileAccess(): shutil.copy2( os.path.join(self.localCwd.text(), filename), os.path.join(self.deviceCwd.text(), deviceFilename), @@ -573,7 +592,7 @@ elif action == "rename": localFilename = resultFilename - if self.__deviceWithLocalAccess: + if self.__repl.deviceSupportsLocalFileAccess(): shutil.copy2( os.path.join(self.deviceCwd.text(), filename), os.path.join(self.localCwd.text(), localFilename), @@ -616,7 +635,7 @@ self.localCwd.text(), self.deviceCwd.text(), mirror=True, - localDevice=self.__deviceWithLocalAccess, + localDevice=self.__repl.deviceSupportsLocalFileAccess(), ) @pyqtSlot(str, str) @@ -677,7 +696,7 @@ selectedItems = self.deviceFileTreeWidget.selectedItems() if selectedItems: filename = selectedItems[0].text(0).strip() - if self.__deviceWithLocalAccess: + if self.__repl.deviceSupportsLocalFileAccess(): name = os.path.join(self.deviceCwd.text(), filename) if not name.endswith("/") and Utilities.MimeTypes.isTextFile(name): ericApp().getObject("ViewManager").getEditor(name) @@ -751,7 +770,7 @@ filename = os.path.basename(resultFilename) text = aw.text() - if self.__deviceWithLocalAccess: + if self.__repl.deviceSupportsLocalFileAccess(): with open(os.path.join(self.deviceCwd.text(), filename), "w") as f: f.write(text) else: @@ -959,8 +978,7 @@ isDir = False isFile = False if not self.__repl.isMicrobit(): - if not self.__deviceWithLocalAccess: - self.__devDelDirAct.setEnabled(isDir) + self.__devDelDirAct.setEnabled(isDir) self.__devDelDirTreeAct.setEnabled(isDir) self.__devDelFileAct.setEnabled(isFile) @@ -974,7 +992,7 @@ Note: This triggers a re-population of the device list for the new current directory. """ - if self.__deviceWithLocalAccess: + if self.__repl.deviceSupportsLocalFileAccess(): self.__changeLocalDirectory(True) else: dirPath, ok = QInputDialog.getText( @@ -994,7 +1012,7 @@ """ Private slot to create a directory on the device. """ - if self.__deviceWithLocalAccess: + if self.__repl.deviceSupportsLocalFileAccess(): self.__createLocalDirectory(True) else: dirPath, ok = QInputDialog.getText( @@ -1011,7 +1029,7 @@ """ Private slot to delete an empty directory on the device. """ - if self.__deviceWithLocalAccess: + if self.__repl.deviceSupportsLocalFileAccess(): self.__deleteLocalDirectoryTree(True) else: if bool(len(self.deviceFileTreeWidget.selectedItems())): @@ -1039,7 +1057,7 @@ Private slot to delete a directory and all its subdirectories recursively. """ - if self.__deviceWithLocalAccess: + if self.__repl.deviceSupportsLocalFileAccess(): self.__deleteLocalDirectoryTree(True) else: if bool(len(self.deviceFileTreeWidget.selectedItems())): @@ -1066,7 +1084,7 @@ """ Private slot to delete a file. """ - if self.__deviceWithLocalAccess: + if self.__repl.deviceSupportsLocalFileAccess(): self.__deleteLocalFile(True) else: if bool(len(self.deviceFileTreeWidget.selectedItems())):