15 from PyQt6.QtWidgets import QDialog, QMenu |
15 from PyQt6.QtWidgets import QDialog, QMenu |
16 |
16 |
17 from eric7 import Preferences |
17 from eric7 import Preferences |
18 from eric7.EricGui import EricPixmapCache |
18 from eric7.EricGui import EricPixmapCache |
19 from eric7.EricWidgets import EricMessageBox |
19 from eric7.EricWidgets import EricMessageBox |
|
20 from eric7.SystemUtilities import FileSystemUtilities |
20 from eric7.UI.DeleteFilesConfirmationDialog import DeleteFilesConfirmationDialog |
21 from eric7.UI.DeleteFilesConfirmationDialog import DeleteFilesConfirmationDialog |
21 from eric7.Utilities import MimeTypes |
22 from eric7.Utilities import MimeTypes |
22 |
23 |
23 from .FileCategoryRepositoryItem import FileCategoryRepositoryItem |
24 from .FileCategoryRepositoryItem import FileCategoryRepositoryItem |
24 from .ProjectBaseBrowser import ProjectBaseBrowser |
25 from .ProjectBaseBrowser import ProjectBaseBrowser |
157 self.menu.addAction(self.tr("Add files..."), self.__addOthersFiles) |
158 self.menu.addAction(self.tr("Add files..."), self.__addOthersFiles) |
158 self.menu.addAction(self.tr("Add directory..."), self.__addOthersDirectory) |
159 self.menu.addAction(self.tr("Add directory..."), self.__addOthersDirectory) |
159 self.menu.addSeparator() |
160 self.menu.addSeparator() |
160 self.menu.addAction(self.tr("Refresh"), self.__refreshItem) |
161 self.menu.addAction(self.tr("Refresh"), self.__refreshItem) |
161 self.menu.addSeparator() |
162 self.menu.addSeparator() |
162 self.menu.addAction(self.tr("Show in File Manager"), self._showInFileManager) |
163 self.menuFileManagerAct = self.menu.addAction( |
|
164 self.tr("Show in File Manager"), self._showInFileManager |
|
165 ) |
163 self.menu.addAction(self.tr("Copy Path to Clipboard"), self._copyToClipboard) |
166 self.menu.addAction(self.tr("Copy Path to Clipboard"), self._copyToClipboard) |
164 self.menu.addSeparator() |
167 self.menu.addSeparator() |
165 self.menu.addAction(self.tr("Expand all directories"), self._expandAllDirs) |
168 self.menu.addAction(self.tr("Expand all directories"), self._expandAllDirs) |
166 self.menu.addAction(self.tr("Collapse all directories"), self._collapseAllDirs) |
169 self.menu.addAction(self.tr("Collapse all directories"), self._collapseAllDirs) |
167 self.menu.addSeparator() |
170 self.menu.addSeparator() |
178 self.dirMenuActions.append(self.deleteDirAct) |
181 self.dirMenuActions.append(self.deleteDirAct) |
179 self.dirMenu.addSeparator() |
182 self.dirMenu.addSeparator() |
180 self.dirMenu.addAction(self.tr("Add files..."), self.__addOthersFiles) |
183 self.dirMenu.addAction(self.tr("Add files..."), self.__addOthersFiles) |
181 self.dirMenu.addAction(self.tr("Add directory..."), self.__addOthersDirectory) |
184 self.dirMenu.addAction(self.tr("Add directory..."), self.__addOthersDirectory) |
182 self.dirMenu.addSeparator() |
185 self.dirMenu.addSeparator() |
183 self.dirMenu.addAction(self.tr("Show in File Manager"), self._showInFileManager) |
186 self.dirMenuFileManagerAct = self.dirMenu.addAction( |
|
187 self.tr("Show in File Manager"), self._showInFileManager |
|
188 ) |
184 self.dirMenu.addAction(self.tr("Copy Path to Clipboard"), self._copyToClipboard) |
189 self.dirMenu.addAction(self.tr("Copy Path to Clipboard"), self._copyToClipboard) |
185 self.dirMenu.addSeparator() |
190 self.dirMenu.addSeparator() |
186 self.dirMenu.addAction(self.tr("Expand all directories"), self._expandAllDirs) |
191 self.dirMenu.addAction(self.tr("Expand all directories"), self._expandAllDirs) |
187 self.dirMenu.addAction( |
192 self.dirMenu.addAction( |
188 self.tr("Collapse all directories"), self._collapseAllDirs |
193 self.tr("Collapse all directories"), self._collapseAllDirs |
196 ) |
201 ) |
197 self.backMenu.addAction( |
202 self.backMenu.addAction( |
198 self.tr("Add directory..."), lambda: self.project.addDirectory("OTHERS") |
203 self.tr("Add directory..."), lambda: self.project.addDirectory("OTHERS") |
199 ) |
204 ) |
200 self.backMenu.addSeparator() |
205 self.backMenu.addSeparator() |
201 self.backMenu.addAction( |
206 self.backMenuFileManagerAct = self.backMenu.addAction( |
202 self.tr("Show in File Manager"), self._showProjectInFileManager |
207 self.tr("Show in File Manager"), self._showProjectInFileManager |
203 ) |
208 ) |
204 self.backMenu.addSeparator() |
209 self.backMenu.addSeparator() |
205 self.backMenu.addAction(self.tr("Expand all directories"), self._expandAllDirs) |
210 self.backMenu.addAction(self.tr("Expand all directories"), self._expandAllDirs) |
206 self.backMenu.addAction( |
211 self.backMenu.addAction( |
238 @param coord the position of the mouse pointer |
243 @param coord the position of the mouse pointer |
239 @type QPoint |
244 @type QPoint |
240 """ |
245 """ |
241 if not self.project.isOpen(): |
246 if not self.project.isOpen(): |
242 return |
247 return |
|
248 |
|
249 isRemote = FileSystemUtilities.isRemoteFileName(self.project.getProjectPath()) |
243 |
250 |
244 with contextlib.suppress(Exception): # secok |
251 with contextlib.suppress(Exception): # secok |
245 cnt = self.getSelectedItemsCount( |
252 cnt = self.getSelectedItemsCount( |
246 [ |
253 [ |
247 ProjectBrowserFileItem, |
254 ProjectBrowserFileItem, |
270 if isinstance(itm, ProjectBrowserFileItem): |
277 if isinstance(itm, ProjectBrowserFileItem): |
271 self.editPixmapAct.setVisible(itm.isPixmapFile()) |
278 self.editPixmapAct.setVisible(itm.isPixmapFile()) |
272 self.openInEditorAct.setVisible(itm.isSvgFile()) |
279 self.openInEditorAct.setVisible(itm.isSvgFile()) |
273 self.openInPdfViewerAct.setVisible(itm.isPdfFile()) |
280 self.openInPdfViewerAct.setVisible(itm.isPdfFile()) |
274 self.mimeTypeAct.setVisible(True) |
281 self.mimeTypeAct.setVisible(True) |
|
282 self.menuFileManagerAct.setVisible(not isRemote) |
275 self.menu.popup(self.mapToGlobal(coord)) |
283 self.menu.popup(self.mapToGlobal(coord)) |
276 elif isinstance(itm, ProjectBrowserDirectoryItem): |
284 elif isinstance( |
|
285 itm, |
|
286 ( |
|
287 ProjectBrowserDirectoryItem, |
|
288 ProjectBrowserSimpleDirectoryItem, |
|
289 ), |
|
290 ): |
277 self.removeDirAct.setVisible(True) |
291 self.removeDirAct.setVisible(True) |
278 self.deleteDirAct.setVisible(True) |
292 self.deleteDirAct.setVisible(True) |
279 self.dirMenu.popup(self.mapToGlobal(coord)) |
293 self.dirMenuFileManagerAct.setVisible(not isRemote) |
280 elif isinstance(itm, ProjectBrowserSimpleDirectoryItem): |
|
281 self.removeDirAct.setVisible(False) |
|
282 self.deleteDirAct.setVisible(False) |
|
283 self.dirMenu.popup(self.mapToGlobal(coord)) |
294 self.dirMenu.popup(self.mapToGlobal(coord)) |
284 else: |
295 else: |
|
296 self.backMenuFileManagerAct.setVisible(not isRemote) |
285 self.backMenu.popup(self.mapToGlobal(coord)) |
297 self.backMenu.popup(self.mapToGlobal(coord)) |
286 else: |
298 else: |
|
299 self.backMenuFileManagerAct.setVisible(not isRemote) |
287 self.backMenu.popup(self.mapToGlobal(coord)) |
300 self.backMenu.popup(self.mapToGlobal(coord)) |
288 |
301 |
289 def __showContextMenu(self): |
302 def __showContextMenu(self): |
290 """ |
303 """ |
291 Private slot called by the menu aboutToShow signal. |
304 Private slot called by the menu aboutToShow signal. |
334 itm = self.model().item(self.currentIndex()) |
347 itm = self.model().item(self.currentIndex()) |
335 if isinstance( |
348 if isinstance( |
336 itm, (ProjectBrowserSimpleDirectoryItem, ProjectBrowserDirectoryItem) |
349 itm, (ProjectBrowserSimpleDirectoryItem, ProjectBrowserDirectoryItem) |
337 ): |
350 ): |
338 self.renameFileAct.setEnabled(False) |
351 self.renameFileAct.setEnabled(False) |
339 else: |
352 elif self.vcsHelper is not None: |
340 self.vcsHelper.showContextMenu(menu, self.menuActions) |
353 self.vcsHelper.showContextMenu(menu, self.menuActions) |
341 |
354 |
342 def _editPixmap(self): |
355 def _editPixmap(self): |
343 """ |
356 """ |
344 Protected slot to handle the open in icon editor popup menu entry. |
357 Protected slot to handle the open in icon editor popup menu entry. |