8 """ |
8 """ |
9 |
9 |
10 import os |
10 import os |
11 |
11 |
12 from PyQt5.QtCore import ( |
12 from PyQt5.QtCore import ( |
13 QModelIndex, pyqtSignal, QUrl, Qt, QCoreApplication, QItemSelectionModel, |
13 pyqtSignal, pyqtSlot, Qt, QUrl, QCoreApplication, QItemSelectionModel, |
14 QElapsedTimer |
14 QModelIndex, QElapsedTimer |
15 ) |
15 ) |
16 from PyQt5.QtGui import QDesktopServices |
16 from PyQt5.QtGui import QDesktopServices |
17 from PyQt5.QtWidgets import QTreeView, QApplication, QMenu, QAbstractItemView |
17 from PyQt5.QtWidgets import ( |
|
18 QTreeView, QApplication, QMenu, QAbstractItemView, QAction |
|
19 ) |
18 |
20 |
19 from E5Gui.E5Application import e5App |
21 from E5Gui.E5Application import e5App |
20 from E5Gui import E5FileDialog, E5MessageBox |
22 from E5Gui import E5FileDialog, E5MessageBox |
21 |
23 |
22 from Project.ProjectBrowserModel import ProjectBrowserSimpleDirectoryItem |
24 from Project.ProjectBrowserModel import ProjectBrowserSimpleDirectoryItem |
202 |
204 |
203 def __createPopupMenus(self): |
205 def __createPopupMenus(self): |
204 """ |
206 """ |
205 Private method to generate the various popup menus. |
207 Private method to generate the various popup menus. |
206 """ |
208 """ |
|
209 self.showHiddenFilesAct = QAction( |
|
210 QCoreApplication.translate('Browser', 'Show Hidden Files')) |
|
211 self.showHiddenFilesAct.setCheckable(True) |
|
212 self.showHiddenFilesAct.toggled.connect(self._showHidden) |
|
213 self.showHiddenFilesAct.setChecked( |
|
214 Preferences.getUI("BrowsersListHiddenFiles")) |
|
215 |
207 # create the popup menu for source files |
216 # create the popup menu for source files |
208 self.sourceMenu = QMenu(self) |
217 self.sourceMenu = QMenu(self) |
209 self.sourceMenu.addAction( |
218 self.sourceMenu.addAction( |
210 QCoreApplication.translate('Browser', 'Open'), self._openItem) |
219 QCoreApplication.translate('Browser', 'Open'), self._openItem) |
211 self.unittestAct = self.sourceMenu.addAction( |
220 self.unittestAct = self.sourceMenu.addAction( |
221 self.__refreshSource) |
230 self.__refreshSource) |
222 self.sourceMenu.addSeparator() |
231 self.sourceMenu.addSeparator() |
223 self.sourceMenu.addAction( |
232 self.sourceMenu.addAction( |
224 QCoreApplication.translate('Browser', 'Copy Path to Clipboard'), |
233 QCoreApplication.translate('Browser', 'Copy Path to Clipboard'), |
225 self._copyToClipboard) |
234 self._copyToClipboard) |
|
235 self.sourceMenu.addSeparator() |
|
236 self.sourceMenu.addAction(self.showHiddenFilesAct) |
226 |
237 |
227 # create the popup menu for general use |
238 # create the popup menu for general use |
228 self.menu = QMenu(self) |
239 self.menu = QMenu(self) |
229 self.menu.addAction( |
240 self.menu.addAction( |
230 QCoreApplication.translate('Browser', 'Open'), self._openItem) |
241 QCoreApplication.translate('Browser', 'Open'), self._openItem) |
240 self.__showMimeType) |
251 self.__showMimeType) |
241 self.menu.addSeparator() |
252 self.menu.addSeparator() |
242 self.menu.addAction( |
253 self.menu.addAction( |
243 QCoreApplication.translate('Browser', 'Copy Path to Clipboard'), |
254 QCoreApplication.translate('Browser', 'Copy Path to Clipboard'), |
244 self._copyToClipboard) |
255 self._copyToClipboard) |
245 |
256 self.menu.addSeparator() |
|
257 self.menu.addAction(self.showHiddenFilesAct) |
|
258 |
246 # create the menu for multiple selected files |
259 # create the menu for multiple selected files |
247 self.multiMenu = QMenu(self) |
260 self.multiMenu = QMenu(self) |
248 self.multiMenu.addAction( |
261 self.multiMenu.addAction( |
249 QCoreApplication.translate('Browser', 'Open'), self._openItem) |
262 QCoreApplication.translate('Browser', 'Open'), self._openItem) |
|
263 self.multiMenu.addSeparator() |
|
264 self.multiMenu.addAction(self.showHiddenFilesAct) |
250 |
265 |
251 # create the directory menu |
266 # create the directory menu |
252 self.dirMenu = QMenu(self) |
267 self.dirMenu = QMenu(self) |
253 self.dirMenu.addAction( |
268 self.dirMenu.addAction( |
254 QCoreApplication.translate('Browser', 'New toplevel directory...'), |
269 QCoreApplication.translate('Browser', 'New toplevel directory...'), |
272 'Browser', 'Find && Replace in this directory'), |
287 'Browser', 'Find && Replace in this directory'), |
273 self.__replaceInDirectory) |
288 self.__replaceInDirectory) |
274 self.dirMenu.addAction( |
289 self.dirMenu.addAction( |
275 QCoreApplication.translate('Browser', 'Copy Path to Clipboard'), |
290 QCoreApplication.translate('Browser', 'Copy Path to Clipboard'), |
276 self._copyToClipboard) |
291 self._copyToClipboard) |
|
292 self.dirMenu.addSeparator() |
|
293 self.dirMenu.addAction(self.showHiddenFilesAct) |
277 |
294 |
278 # create the attribute menu |
295 # create the attribute menu |
279 self.gotoMenu = QMenu(QCoreApplication.translate('Browser', "Goto"), |
296 self.gotoMenu = QMenu(QCoreApplication.translate('Browser', "Goto"), |
280 self) |
297 self) |
281 self.gotoMenu.aboutToShow.connect(self._showGotoMenu) |
298 self.gotoMenu.aboutToShow.connect(self._showGotoMenu) |
291 # create the background menu |
308 # create the background menu |
292 self.backMenu = QMenu(self) |
309 self.backMenu = QMenu(self) |
293 self.backMenu.addAction( |
310 self.backMenu.addAction( |
294 QCoreApplication.translate('Browser', 'New toplevel directory...'), |
311 QCoreApplication.translate('Browser', 'New toplevel directory...'), |
295 self.__newToplevelDir) |
312 self.__newToplevelDir) |
|
313 self.backMenu.addSeparator() |
|
314 self.backMenu.addAction(self.showHiddenFilesAct) |
296 |
315 |
297 def mouseDoubleClickEvent(self, mouseEvent): |
316 def mouseDoubleClickEvent(self, mouseEvent): |
298 """ |
317 """ |
299 Protected method of QAbstractItemView. |
318 Protected method of QAbstractItemView. |
300 |
319 |
557 fn = "" |
576 fn = "" |
558 |
577 |
559 if fn: |
578 if fn: |
560 cb = QApplication.clipboard() |
579 cb = QApplication.clipboard() |
561 cb.setText(fn) |
580 cb.setText(fn) |
562 |
581 |
|
582 @pyqtSlot(bool) |
|
583 def _showHidden(self, checked): |
|
584 """ |
|
585 Protected slot to show or hide hidden files. |
|
586 |
|
587 @param checked flag indicating the state of the action |
|
588 @type bool |
|
589 """ |
|
590 self.__sortModel.setShowHiddenFiles(checked) |
|
591 # remember the current state |
|
592 Preferences.setUI("BrowsersListHiddenFiles", checked) |
|
593 |
563 def handleUnittest(self): |
594 def handleUnittest(self): |
564 """ |
595 """ |
565 Public slot to handle the unittest popup menu entry. |
596 Public slot to handle the unittest popup menu entry. |
566 """ |
597 """ |
567 try: |
598 try: |