eric6/UI/Browser.py

changeset 8109
486984bb52e3
parent 7923
91e843545d9a
child 8114
b7abbf3f82a3
--- a/eric6/UI/Browser.py	Tue Feb 16 18:25:47 2021 +0100
+++ b/eric6/UI/Browser.py	Wed Feb 17 17:51:42 2021 +0100
@@ -10,11 +10,13 @@
 import os
 
 from PyQt5.QtCore import (
-    QModelIndex, pyqtSignal, QUrl, Qt, QCoreApplication, QItemSelectionModel,
-    QElapsedTimer
+    pyqtSignal, pyqtSlot, Qt, QUrl, QCoreApplication, QItemSelectionModel,
+    QModelIndex, QElapsedTimer
 )
 from PyQt5.QtGui import QDesktopServices
-from PyQt5.QtWidgets import QTreeView, QApplication, QMenu, QAbstractItemView
+from PyQt5.QtWidgets import (
+    QTreeView, QApplication, QMenu, QAbstractItemView, QAction
+)
 
 from E5Gui.E5Application import e5App
 from E5Gui import E5FileDialog, E5MessageBox
@@ -204,6 +206,13 @@
         """
         Private method to generate the various popup menus.
         """
+        self.showHiddenFilesAct = QAction(
+            QCoreApplication.translate('Browser', 'Show Hidden Files'))
+        self.showHiddenFilesAct.setCheckable(True)
+        self.showHiddenFilesAct.toggled.connect(self._showHidden)
+        self.showHiddenFilesAct.setChecked(
+            Preferences.getUI("BrowsersListHiddenFiles"))
+        
         # create the popup menu for source files
         self.sourceMenu = QMenu(self)
         self.sourceMenu.addAction(
@@ -223,6 +232,8 @@
         self.sourceMenu.addAction(
             QCoreApplication.translate('Browser', 'Copy Path to Clipboard'),
             self._copyToClipboard)
+        self.sourceMenu.addSeparator()
+        self.sourceMenu.addAction(self.showHiddenFilesAct)
         
         # create the popup menu for general use
         self.menu = QMenu(self)
@@ -242,11 +253,15 @@
         self.menu.addAction(
             QCoreApplication.translate('Browser', 'Copy Path to Clipboard'),
             self._copyToClipboard)
-
+        self.menu.addSeparator()
+        self.menu.addAction(self.showHiddenFilesAct)
+        
         # create the menu for multiple selected files
         self.multiMenu = QMenu(self)
         self.multiMenu.addAction(
             QCoreApplication.translate('Browser', 'Open'), self._openItem)
+        self.multiMenu.addSeparator()
+        self.multiMenu.addAction(self.showHiddenFilesAct)
         
         # create the directory menu
         self.dirMenu = QMenu(self)
@@ -274,6 +289,8 @@
         self.dirMenu.addAction(
             QCoreApplication.translate('Browser', 'Copy Path to Clipboard'),
             self._copyToClipboard)
+        self.dirMenu.addSeparator()
+        self.dirMenu.addAction(self.showHiddenFilesAct)
         
         # create the attribute menu
         self.gotoMenu = QMenu(QCoreApplication.translate('Browser', "Goto"),
@@ -293,6 +310,8 @@
         self.backMenu.addAction(
             QCoreApplication.translate('Browser', 'New toplevel directory...'),
             self.__newToplevelDir)
+        self.backMenu.addSeparator()
+        self.backMenu.addAction(self.showHiddenFilesAct)
 
     def mouseDoubleClickEvent(self, mouseEvent):
         """
@@ -559,7 +578,19 @@
         if fn:
             cb = QApplication.clipboard()
             cb.setText(fn)
+    
+    @pyqtSlot(bool)
+    def _showHidden(self, checked):
+        """
+        Protected slot to show or hide hidden files.
         
+        @param checked flag indicating the state of the action
+        @type bool
+        """
+        self.__sortModel.setShowHiddenFiles(checked)
+        # remember the current state
+        Preferences.setUI("BrowsersListHiddenFiles", checked)
+    
     def handleUnittest(self):
         """
         Public slot to handle the unittest popup menu entry.

eric ide

mercurial