src/eric7/MicroPython/MicroPythonFileManagerWidget.py

branch
eric7
changeset 9767
2eed840795c0
parent 9766
f0e22f3a5878
child 9769
c6cda4cb81d5
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())):

eric ide

mercurial