91 act = self.menu.addAction(self.tr("Remove from project"), self.__removeItem) |
92 act = self.menu.addAction(self.tr("Remove from project"), self.__removeItem) |
92 self.menuActions.append(act) |
93 self.menuActions.append(act) |
93 act = self.menu.addAction(self.tr("Delete"), self.__deleteItem) |
94 act = self.menu.addAction(self.tr("Delete"), self.__deleteItem) |
94 self.menuActions.append(act) |
95 self.menuActions.append(act) |
95 self.menu.addSeparator() |
96 self.menu.addSeparator() |
96 self.menu.addAction(self.tr("Add files..."), self.project.addOthersFiles) |
97 self.menu.addAction(self.tr("Add files..."), self.__addOthersFiles) |
97 self.menu.addAction(self.tr("Add directory..."), self.project.addOthersDir) |
98 self.menu.addAction(self.tr("Add directory..."), self.__addOthersDirectory) |
98 self.menu.addSeparator() |
99 self.menu.addSeparator() |
99 self.menu.addAction(self.tr("Refresh"), self.__refreshItem) |
100 self.menu.addAction(self.tr("Refresh"), self.__refreshItem) |
100 self.menu.addSeparator() |
101 self.menu.addSeparator() |
101 self.menu.addAction(self.tr("Copy Path to Clipboard"), self._copyToClipboard) |
102 self.menu.addAction(self.tr("Copy Path to Clipboard"), self._copyToClipboard) |
102 self.menu.addSeparator() |
103 self.menu.addSeparator() |
103 self.menu.addAction(self.tr("Expand all directories"), self._expandAllDirs) |
104 self.menu.addAction(self.tr("Expand all directories"), self._expandAllDirs) |
104 self.menu.addAction(self.tr("Collapse all directories"), self._collapseAllDirs) |
105 self.menu.addAction(self.tr("Collapse all directories"), self._collapseAllDirs) |
105 self.menu.addSeparator() |
106 self.menu.addSeparator() |
106 self.menu.addAction(self.tr("Configure..."), self._configure) |
107 self.menu.addAction(self.tr("Configure..."), self._configure) |
|
108 |
|
109 self.dirMenu = QMenu(self) |
|
110 self.removeDirAct = self.dirMenu.addAction( |
|
111 self.tr("Remove from project"), self._removeDir |
|
112 ) |
|
113 self.dirMenuActions.append(self.removeDirAct) |
|
114 self.deleteDirAct = self.dirMenu.addAction( |
|
115 self.tr("Delete"), self._deleteDirectory |
|
116 ) |
|
117 self.dirMenuActions.append(self.deleteDirAct) |
|
118 self.dirMenu.addSeparator() |
|
119 self.dirMenu.addAction(self.tr("Add files..."), self.__addOthersFiles) |
|
120 self.dirMenu.addAction(self.tr("Add directory..."), self.__addOthersDirectory) |
|
121 self.dirMenu.addSeparator() |
|
122 self.dirMenu.addAction(self.tr("Copy Path to Clipboard"), self._copyToClipboard) |
|
123 self.dirMenu.addSeparator() |
|
124 self.dirMenu.addAction(self.tr("Expand all directories"), self._expandAllDirs) |
|
125 self.dirMenu.addAction( |
|
126 self.tr("Collapse all directories"), self._collapseAllDirs |
|
127 ) |
|
128 self.dirMenu.addSeparator() |
|
129 self.dirMenu.addAction(self.tr("Configure..."), self._configure) |
107 |
130 |
108 self.backMenu = QMenu(self) |
131 self.backMenu = QMenu(self) |
109 self.backMenu.addAction(self.tr("Add files..."), self.project.addOthersFiles) |
132 self.backMenu.addAction(self.tr("Add files..."), self.project.addOthersFiles) |
110 self.backMenu.addAction(self.tr("Add directory..."), self.project.addOthersDir) |
133 self.backMenu.addAction(self.tr("Add directory..."), self.project.addOthersDir) |
111 self.backMenu.addSeparator() |
134 self.backMenu.addSeparator() |
132 self.multiMenu.addSeparator() |
155 self.multiMenu.addSeparator() |
133 self.multiMenu.addAction(self.tr("Configure..."), self._configure) |
156 self.multiMenu.addAction(self.tr("Configure..."), self._configure) |
134 |
157 |
135 self.menu.aboutToShow.connect(self.__showContextMenu) |
158 self.menu.aboutToShow.connect(self.__showContextMenu) |
136 self.multiMenu.aboutToShow.connect(self.__showContextMenuMulti) |
159 self.multiMenu.aboutToShow.connect(self.__showContextMenuMulti) |
|
160 self.dirMenu.aboutToShow.connect(self.__showContextMenuDir) |
137 self.backMenu.aboutToShow.connect(self.__showContextMenuBack) |
161 self.backMenu.aboutToShow.connect(self.__showContextMenuBack) |
138 self.mainMenu = self.menu |
162 self.mainMenu = self.menu |
139 |
163 |
140 def _contextMenuRequested(self, coord): |
164 def _contextMenuRequested(self, coord): |
141 """ |
165 """ |
145 """ |
169 """ |
146 if not self.project.isOpen(): |
170 if not self.project.isOpen(): |
147 return |
171 return |
148 |
172 |
149 with contextlib.suppress(Exception): |
173 with contextlib.suppress(Exception): |
150 cnt = self.getSelectedItemsCount() |
174 cnt = self.getSelectedItemsCount([ |
151 if cnt <= 1: |
175 ProjectBrowserFileItem, |
|
176 ProjectBrowserDirectoryItem, |
|
177 ProjectBrowserSimpleDirectoryItem, |
|
178 ]) |
|
179 if cnt < 1: |
152 index = self.indexAt(coord) |
180 index = self.indexAt(coord) |
153 if index.isValid(): |
181 if index.isValid(): |
154 self._selectSingleItem(index) |
182 self._selectSingleItem(index) |
155 cnt = self.getSelectedItemsCount() |
183 cnt = self.getSelectedItemsCount([ |
|
184 ProjectBrowserFileItem, |
|
185 ProjectBrowserDirectoryItem, |
|
186 ProjectBrowserSimpleDirectoryItem, |
|
187 ]) |
156 |
188 |
157 if cnt > 1: |
189 if cnt > 1: |
158 self.multiMenu.popup(self.mapToGlobal(coord)) |
190 self.multiMenu.popup(self.mapToGlobal(coord)) |
159 else: |
191 else: |
160 index = self.indexAt(coord) |
192 index = self.indexAt(coord) |
164 self.editPixmapAct.setVisible(itm.isPixmapFile()) |
196 self.editPixmapAct.setVisible(itm.isPixmapFile()) |
165 self.openInEditorAct.setVisible(itm.isSvgFile()) |
197 self.openInEditorAct.setVisible(itm.isSvgFile()) |
166 self.mimeTypeAct.setVisible(True) |
198 self.mimeTypeAct.setVisible(True) |
167 self.menu.popup(self.mapToGlobal(coord)) |
199 self.menu.popup(self.mapToGlobal(coord)) |
168 elif isinstance(itm, ProjectBrowserDirectoryItem): |
200 elif isinstance(itm, ProjectBrowserDirectoryItem): |
169 self.editPixmapAct.setVisible(False) |
201 self.removeDirAct.setVisible(True) |
170 self.mimeTypeAct.setVisible(False) |
202 self.deleteDirAct.setVisible(True) |
171 self.menu.popup(self.mapToGlobal(coord)) |
203 self.dirMenu.popup(self.mapToGlobal(coord)) |
|
204 elif isinstance(itm, ProjectBrowserSimpleDirectoryItem): |
|
205 self.removeDirAct.setVisible(False) |
|
206 self.deleteDirAct.setVisible(False) |
|
207 self.dirMenu.popup(self.mapToGlobal(coord)) |
172 else: |
208 else: |
173 self.backMenu.popup(self.mapToGlobal(coord)) |
209 self.backMenu.popup(self.mapToGlobal(coord)) |
174 else: |
210 else: |
175 self.backMenu.popup(self.mapToGlobal(coord)) |
211 self.backMenu.popup(self.mapToGlobal(coord)) |
176 |
212 |
187 Private slot called by the multiMenu aboutToShow signal. |
223 Private slot called by the multiMenu aboutToShow signal. |
188 """ |
224 """ |
189 ProjectBaseBrowser._showContextMenuMulti(self, self.multiMenu) |
225 ProjectBaseBrowser._showContextMenuMulti(self, self.multiMenu) |
190 |
226 |
191 self.showMenu.emit("MainMulti", self.multiMenu) |
227 self.showMenu.emit("MainMulti", self.multiMenu) |
|
228 |
|
229 def __showContextMenuDir(self): |
|
230 """ |
|
231 Private slot called by the dirMenu aboutToShow signal. |
|
232 """ |
|
233 ProjectBaseBrowser._showContextMenuDir(self, self.dirMenu) |
|
234 |
|
235 self.showMenu.emit("MainDir", self.dirMenu) |
192 |
236 |
193 def __showContextMenuBack(self): |
237 def __showContextMenuBack(self): |
194 """ |
238 """ |
195 Private slot called by the backMenu aboutToShow signal. |
239 Private slot called by the backMenu aboutToShow signal. |
196 """ |
240 """ |
315 ) |
359 ) |
316 if ok: |
360 if ok: |
317 textMimeTypesList.append(mimetype) |
361 textMimeTypesList.append(mimetype) |
318 Preferences.setUI("TextMimeTypes", textMimeTypesList) |
362 Preferences.setUI("TextMimeTypes", textMimeTypesList) |
319 |
363 |
|
364 def __addOthersFiles(self): |
|
365 """ |
|
366 Private method to add files to the project. |
|
367 """ |
|
368 itm = self.model().item(self.currentIndex()) |
|
369 if isinstance(itm, ProjectBrowserFileItem): |
|
370 dn = os.path.dirname(itm.fileName()) |
|
371 elif isinstance( |
|
372 itm, (ProjectBrowserSimpleDirectoryItem, ProjectBrowserDirectoryItem) |
|
373 ): |
|
374 dn = itm.dirName() |
|
375 else: |
|
376 dn = None |
|
377 self.project.addFiles("others", dn) |
|
378 |
|
379 def __addOthersDirectory(self): |
|
380 """ |
|
381 Private method to add files of a directory to the project. |
|
382 """ |
|
383 itm = self.model().item(self.currentIndex()) |
|
384 if isinstance(ProjectBrowserFileItem): |
|
385 dn = os.path.dirname(itm.fileName()) |
|
386 elif isinstance( |
|
387 itm, (ProjectBrowserSimpleDirectoryItem, ProjectBrowserDirectoryItem) |
|
388 ): |
|
389 dn = itm.dirName() |
|
390 else: |
|
391 dn = None |
|
392 self.project.addDirectory("others", dn) |
|
393 |
320 def __removeItem(self): |
394 def __removeItem(self): |
321 """ |
395 """ |
322 Private slot to remove the selected entry from the OTHERS project |
396 Private slot to remove the selected entry from the OTHERS project |
323 data area. |
397 data area. |
324 """ |
398 """ |