2 |
2 |
3 # Copyright (c) 2002 - 2013 Detlev Offenbach <detlev@die-offenbachs.de> |
3 # Copyright (c) 2002 - 2013 Detlev Offenbach <detlev@die-offenbachs.de> |
4 # |
4 # |
5 |
5 |
6 """ |
6 """ |
7 Module implementing a class used to display the parts of the project, that don't fit |
7 Module implementing a class used to display the parts of the project, that |
8 the other categories. |
8 don't fit the other categories. |
9 """ |
9 """ |
10 |
10 |
11 import mimetypes |
11 import mimetypes |
12 |
12 |
13 from PyQt4.QtCore import QModelIndex, pyqtSignal, QUrl |
13 from PyQt4.QtCore import QModelIndex, pyqtSignal, QUrl |
19 from .ProjectBaseBrowser import ProjectBaseBrowser |
19 from .ProjectBaseBrowser import ProjectBaseBrowser |
20 |
20 |
21 |
21 |
22 class ProjectOthersBrowser(ProjectBaseBrowser): |
22 class ProjectOthersBrowser(ProjectBaseBrowser): |
23 """ |
23 """ |
24 A class used to display the parts of the project, that don't fit the other categories. |
24 A class used to display the parts of the project, that don't fit the |
|
25 other categories. |
25 |
26 |
26 @signal sourceFile(str) emitted to open a file |
27 @signal sourceFile(str) emitted to open a file |
27 @signal pixmapFile(str) emitted to open a pixmap file |
28 @signal pixmapFile(str) emitted to open a pixmap file |
28 @signal pixmapEditFile(str) emitted to edit a pixmap file |
29 @signal pixmapEditFile(str) emitted to edit a pixmap file |
29 @signal svgFile(str) emitted to open a SVG file |
30 @signal svgFile(str) emitted to open a SVG file |
30 @signal closeSourceWindow(str) emitted after a file has been removed/deleted |
31 @signal closeSourceWindow(str) emitted after a file has been |
31 from the project |
32 removed/deleted from the project |
32 @signal showMenu(str, QMenu) emitted when a menu is about to be shown. The name |
33 @signal showMenu(str, QMenu) emitted when a menu is about to be shown. |
33 of the menu and a reference to the menu are given. |
34 The name of the menu and a reference to the menu are given. |
34 """ |
35 """ |
35 showMenu = pyqtSignal(str, QMenu) |
36 showMenu = pyqtSignal(str, QMenu) |
36 |
37 |
37 def __init__(self, project, parent=None): |
38 def __init__(self, project, parent=None): |
38 """ |
39 """ |
39 Constructor |
40 Constructor |
40 |
41 |
41 @param project reference to the project object |
42 @param project reference to the project object |
42 @param parent parent widget of this browser (QWidget) |
43 @param parent parent widget of this browser (QWidget) |
43 """ |
44 """ |
44 ProjectBaseBrowser.__init__(self, project, ProjectBrowserOthersType, parent) |
45 ProjectBaseBrowser.__init__(self, project, ProjectBrowserOthersType, |
|
46 parent) |
45 |
47 |
46 self.selectedItemsFilter = [ProjectBrowserFileItem, ProjectBrowserDirectoryItem] |
48 self.selectedItemsFilter = [ProjectBrowserFileItem, |
|
49 ProjectBrowserDirectoryItem] |
47 self.specialMenuEntries = [1] |
50 self.specialMenuEntries = [1] |
48 |
51 |
49 self.setWindowTitle(self.trUtf8('Others')) |
52 self.setWindowTitle(self.trUtf8('Others')) |
50 |
53 |
51 self.setWhatsThis(self.trUtf8( |
54 self.setWhatsThis(self.trUtf8( |
70 self._editPixmap) |
73 self._editPixmap) |
71 self.menu.addSeparator() |
74 self.menu.addSeparator() |
72 self.renameFileAct = self.menu.addAction(self.trUtf8('Rename file'), |
75 self.renameFileAct = self.menu.addAction(self.trUtf8('Rename file'), |
73 self._renameFile) |
76 self._renameFile) |
74 self.menuActions.append(self.renameFileAct) |
77 self.menuActions.append(self.renameFileAct) |
75 act = self.menu.addAction(self.trUtf8('Remove from project'), self.__removeItem) |
78 act = self.menu.addAction( |
|
79 self.trUtf8('Remove from project'), self.__removeItem) |
76 self.menuActions.append(act) |
80 self.menuActions.append(act) |
77 act = self.menu.addAction(self.trUtf8('Delete'), self.__deleteItem) |
81 act = self.menu.addAction(self.trUtf8('Delete'), self.__deleteItem) |
78 self.menuActions.append(act) |
82 self.menuActions.append(act) |
79 self.menu.addSeparator() |
83 self.menu.addSeparator() |
80 self.menu.addAction(self.trUtf8('Add files...'), self.project.addOthersFiles) |
84 self.menu.addAction( |
81 self.menu.addAction(self.trUtf8('Add directory...'), self.project.addOthersDir) |
85 self.trUtf8('Add files...'), self.project.addOthersFiles) |
|
86 self.menu.addAction( |
|
87 self.trUtf8('Add directory...'), self.project.addOthersDir) |
82 self.menu.addSeparator() |
88 self.menu.addSeparator() |
83 self.menu.addAction(self.trUtf8('Refresh'), self.__refreshItem) |
89 self.menu.addAction(self.trUtf8('Refresh'), self.__refreshItem) |
84 self.menu.addSeparator() |
90 self.menu.addSeparator() |
85 self.menu.addAction(self.trUtf8('Copy Path to Clipboard'), |
91 self.menu.addAction(self.trUtf8('Copy Path to Clipboard'), |
86 self._copyToClipboard) |
92 self._copyToClipboard) |
108 |
114 |
109 self.multiMenu.addSeparator() |
115 self.multiMenu.addSeparator() |
110 act = self.multiMenu.addAction(self.trUtf8('Remove from project'), |
116 act = self.multiMenu.addAction(self.trUtf8('Remove from project'), |
111 self.__removeItem) |
117 self.__removeItem) |
112 self.multiMenuActions.append(act) |
118 self.multiMenuActions.append(act) |
113 act = self.multiMenu.addAction(self.trUtf8('Delete'), self.__deleteItem) |
119 act = self.multiMenu.addAction( |
|
120 self.trUtf8('Delete'), self.__deleteItem) |
114 self.multiMenuActions.append(act) |
121 self.multiMenuActions.append(act) |
115 self.multiMenu.addSeparator() |
122 self.multiMenu.addSeparator() |
116 self.multiMenu.addAction(self.trUtf8('Expand all directories'), |
123 self.multiMenu.addAction(self.trUtf8('Expand all directories'), |
117 self._expandAllDirs) |
124 self._expandAllDirs) |
118 self.multiMenu.addAction(self.trUtf8('Collapse all directories'), |
125 self.multiMenu.addAction(self.trUtf8('Collapse all directories'), |
234 else: |
241 else: |
235 QDesktopServices.openUrl(QUrl(itm.fileName())) |
242 QDesktopServices.openUrl(QUrl(itm.fileName())) |
236 |
243 |
237 def __removeItem(self): |
244 def __removeItem(self): |
238 """ |
245 """ |
239 Private slot to remove the selected entry from the OTHERS project data area. |
246 Private slot to remove the selected entry from the OTHERS project |
|
247 data area. |
240 """ |
248 """ |
241 itmList = self.getSelectedItems() |
249 itmList = self.getSelectedItems() |
242 |
250 |
243 for itm in itmList[:]: |
251 for itm in itmList[:]: |
244 if isinstance(itm, ProjectBrowserFileItem): |
252 if isinstance(itm, ProjectBrowserFileItem): |
279 names.extend(dirNames) |
288 names.extend(dirNames) |
280 del itmList |
289 del itmList |
281 del dirFullNames |
290 del dirFullNames |
282 del dirNames |
291 del dirNames |
283 |
292 |
284 from UI.DeleteFilesConfirmationDialog import DeleteFilesConfirmationDialog |
293 from UI.DeleteFilesConfirmationDialog import \ |
|
294 DeleteFilesConfirmationDialog |
285 dlg = DeleteFilesConfirmationDialog(self.parent(), |
295 dlg = DeleteFilesConfirmationDialog(self.parent(), |
286 self.trUtf8("Delete files/directories"), |
296 self.trUtf8("Delete files/directories"), |
287 self.trUtf8("Do you really want to delete these entries from the project?"), |
297 self.trUtf8( |
|
298 "Do you really want to delete these entries from the" |
|
299 " project?"), |
288 names) |
300 names) |
289 |
301 |
290 if dlg.exec_() == QDialog.Accepted: |
302 if dlg.exec_() == QDialog.Accepted: |
291 for itm, fn2, fn in zip(items[:], fullNames, names): |
303 for itm, fn2, fn in zip(items[:], fullNames, names): |
292 if isinstance(itm, ProjectBrowserFileItem): |
304 if isinstance(itm, ProjectBrowserFileItem): |