eric6/MicroPython/MicroPythonFileManagerWidget.py

branch
micropython
changeset 7137
4ed2573947ff
parent 7134
21d23ca51680
child 7229
53054eb5b15a
--- a/eric6/MicroPython/MicroPythonFileManagerWidget.py	Tue Aug 13 16:39:31 2019 +0200
+++ b/eric6/MicroPython/MicroPythonFileManagerWidget.py	Tue Aug 13 17:52:58 2019 +0200
@@ -105,7 +105,6 @@
         self.deviceFileTreeWidget.customContextMenuRequested.connect(
             self.__showDeviceContextMenu)
         
-        # TODO: add entry to show hidden files
         self.__localMenu = QMenu(self)
         self.__localMenu.addAction(self.tr("Change Directory"),
                                    self.__changeLocalDirectory)
@@ -116,8 +115,12 @@
         self.__localMenu.addSeparator()
         self.__localDelFileAct = self.__localMenu.addAction(
             self.tr("Delete File"), self.__deleteLocalFile)
+        self.__localMenu.addSeparator()
+        act = self.__localMenu.addAction(self.tr("Show Hidden Files"))
+        act.setCheckable(True)
+        act.setChecked(Preferences.getMicroPython("ShowHiddenLocal"))
+        act.triggered[bool].connect(self.__localHiddenChanged)
         
-        # TODO: add entry to show hidden files
         self.__deviceMenu = QMenu(self)
         if not self.__repl.isMicrobit():
             self.__deviceMenu.addAction(
@@ -133,6 +136,11 @@
             self.__deviceMenu.addSeparator()
         self.__devDelFileAct = self.__deviceMenu.addAction(
             self.tr("Delete File"), self.__deleteDeviceFile)
+        self.__deviceMenu.addSeparator()
+        act = self.__deviceMenu.addAction(self.tr("Show Hidden Files"))
+        act.setCheckable(True)
+        act.setChecked(Preferences.getMicroPython("ShowHiddenDevice"))
+        act.triggered[bool].connect(self.__deviceHiddenChanged)
         if not parent.isMicrobit():
             self.__deviceMenu.addSeparator()
             self.__deviceMenu.addAction(
@@ -191,7 +199,7 @@
         @type str
         """
         self.deviceCwd.setText(dirname)
-        self.__fileManager.lls(dirname)
+        self.__newDeviceList()
     
     @pyqtSlot(tuple)
     def __handleLongListFiles(self, filesList):
@@ -226,10 +234,12 @@
             dirname = dirname[:-1]
         if localDevice:
             self.deviceCwd.setText(dirname)
+            showHidden = Preferences.getMicroPython("ShowHiddenDevice")
         else:
             self.localCwd.setText(dirname)
+            showHidden = Preferences.getMicroPython("ShowHiddenLocal")
         
-        filesStatList = listdirStat(dirname)
+        filesStatList = listdirStat(dirname, showHidden=showHidden)
         filesList = [(
             decoratedName(f, s[0], os.path.isdir(os.path.join(dirname, f))),
             mode2string(s[0]),
@@ -357,7 +367,7 @@
             self.__listLocalFiles(dirname, True)
         else:
             if dirname:
-                self.__fileManager.lls(dirname)
+                self.__newDeviceList()
             else:
                 self.__fileManager.pwd()
     
@@ -426,8 +436,11 @@
                                           localDevice=True)
                 else:
                     deviceCwd = self.deviceCwd.text()
-                    if deviceCwd and deviceCwd != "/":
-                        deviceFilename = deviceCwd + "/" + deviceFilename
+                    if deviceCwd:
+                        if deviceCwd != "/":
+                            deviceFilename = deviceCwd + "/" + deviceFilename
+                        else:
+                            deviceFilename = "/" + deviceFilename
                     self.__fileManager.put(
                         os.path.join(self.localCwd.text(), filename),
                         deviceFilename
@@ -536,7 +549,7 @@
         @type str
         """
         self.__listLocalFiles(self.localCwd.text())
-        self.__fileManager.lls(self.deviceCwd.text())
+        self.__newDeviceList()
     
     @pyqtSlot(str)
     def __handleRsyncProgressMessage(self, message):
@@ -569,7 +582,10 @@
         """
         Private slot to initiate a new long list of the device directory.
         """
-        self.__fileManager.lls(self.deviceCwd.text())
+        self.__fileManager.lls(
+            self.deviceCwd.text(),
+            showHidden=Preferences.getMicroPython("ShowHiddenDevice")
+        )
     
     ##################################################################
     ## Context menu methods for the local files below
@@ -732,6 +748,17 @@
                             filename, str(exc))
                     )
     
+    @pyqtSlot(bool)
+    def __localHiddenChanged(self, checked):
+        """
+        Private slot handling a change of the local show hidden menu entry.
+        
+        @param checked new check state of the action
+        @type bool
+        """
+        Preferences.setMicroPython("ShowHiddenLocal", checked)
+        self.on_localReloadButton_clicked()
+    
     ##################################################################
     ## Context menu methods for the device files below
     ##################################################################
@@ -809,10 +836,13 @@
             if bool(len(self.deviceFileTreeWidget.selectedItems())):
                 name = self.deviceFileTreeWidget.selectedItems()[0].text(0)
                 cwd = self.deviceCwd.text()
-                if cwd and cwd != "/":
-                    dirname = cwd + "/" + name[:-1]
+                if cwd:
+                    if cwd != "/":
+                        dirname = cwd + "/" + name[:-1]
+                    else:
+                        dirname = "/" + name[:-1]
                 else:
-                    dirname = "/" + name[:-1]
+                    dirname = name[:-1]
                 dlg = DeleteFilesConfirmationDialog(
                     self,
                     self.tr("Delete Directory"),
@@ -834,10 +864,13 @@
             if bool(len(self.deviceFileTreeWidget.selectedItems())):
                 name = self.deviceFileTreeWidget.selectedItems()[0].text(0)
                 cwd = self.deviceCwd.text()
-                if cwd and cwd != "/":
-                    dirname = cwd + "/" + name[:-1]
+                if cwd:
+                    if cwd != "/":
+                        dirname = cwd + "/" + name[:-1]
+                    else:
+                        dirname = "/" + name[:-1]
                 else:
-                    dirname = "/" + name[:-1]
+                    dirname = name[:-1]
                 dlg = DeleteFilesConfirmationDialog(
                     self,
                     self.tr("Delete Directory Tree"),
@@ -858,10 +891,13 @@
             if bool(len(self.deviceFileTreeWidget.selectedItems())):
                 name = self.deviceFileTreeWidget.selectedItems()[0].text(0)
                 dirname = self.deviceCwd.text()
-                if dirname and dirname != "/":
-                    filename = dirname + "/" + name
+                if dirname:
+                    if dirname != "/":
+                        filename = dirname + "/" + name
+                    else:
+                        filename = "/" + name
                 else:
-                    filename = "/" + name
+                    filename = name
                 dlg = DeleteFilesConfirmationDialog(
                     self,
                     self.tr("Delete File"),
@@ -871,6 +907,17 @@
                 if dlg.exec_() == QDialog.Accepted:
                     self.__fileManager.delete(filename)
     
+    @pyqtSlot(bool)
+    def __deviceHiddenChanged(self, checked):
+        """
+        Private slot handling a change of the device show hidden menu entry.
+        
+        @param checked new check state of the action
+        @type bool
+        """
+        Preferences.setMicroPython("ShowHiddenDevice", checked)
+        self.on_deviceReloadButton_clicked()
+    
     @pyqtSlot()
     def __showFileSystemInfo(self):
         """

eric ide

mercurial