src/eric7/Project/ProjectResourcesBrowser.py

branch
server
changeset 10635
dcec2e0c0036
parent 10439
21c28b0f9e41
child 10704
27d21e5163b8
equal deleted inserted replaced
10633:dda7e43934dc 10635:dcec2e0c0036
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 EricFileDialog, EricMessageBox 19 from eric7.EricWidgets import EricFileDialog, EricMessageBox
20 from eric7.EricWidgets.EricApplication import ericApp 20 from eric7.EricWidgets.EricApplication import ericApp
21 from eric7.EricWidgets.EricProgressDialog import EricProgressDialog 21 from eric7.EricWidgets.EricProgressDialog import EricProgressDialog
22 from eric7.SystemUtilities import QtUtilities 22 from eric7.SystemUtilities import FileSystemUtilities, QtUtilities
23 from eric7.UI.DeleteFilesConfirmationDialog import DeleteFilesConfirmationDialog 23 from eric7.UI.DeleteFilesConfirmationDialog import DeleteFilesConfirmationDialog
24 from eric7.UI.NotificationWidget import NotificationTypes 24 from eric7.UI.NotificationWidget import NotificationTypes
25 25
26 from .FileCategoryRepositoryItem import FileCategoryRepositoryItem 26 from .FileCategoryRepositoryItem import FileCategoryRepositoryItem
27 from .ProjectBaseBrowser import ProjectBaseBrowser 27 from .ProjectBaseBrowser import ProjectBaseBrowser
137 self.multiMenuActions = [] 137 self.multiMenuActions = []
138 self.dirMenuActions = [] 138 self.dirMenuActions = []
139 self.dirMultiMenuActions = [] 139 self.dirMultiMenuActions = []
140 140
141 self.menu = QMenu(self) 141 self.menu = QMenu(self)
142 if self.project.getProjectType() in [ 142 if (
143 "PyQt5", 143 FileSystemUtilities.isPlainFileName(self.project.getProjectPath())
144 "PyQt5C", 144 and self.project.getProjectType() in [
145 "PySide2", 145 "PyQt5",
146 "PySide2C", 146 "PyQt5C",
147 "PySide6", 147 "PySide2",
148 "PySide6C", 148 "PySide2C",
149 ]: 149 "PySide6",
150 "PySide6C",
151 ]
152 ):
150 self.menu.addAction(self.tr("Compile resource"), self.__compileResource) 153 self.menu.addAction(self.tr("Compile resource"), self.__compileResource)
151 self.menu.addAction( 154 self.menu.addAction(
152 self.tr("Compile all resources"), self.__compileAllResources 155 self.tr("Compile all resources"), self.__compileAllResources
153 ) 156 )
154 self.menu.addSeparator() 157 self.menu.addSeparator()
183 act = self.menu.addAction(self.tr("Remove from project"), self._removeFile) 186 act = self.menu.addAction(self.tr("Remove from project"), self._removeFile)
184 self.menuActions.append(act) 187 self.menuActions.append(act)
185 act = self.menu.addAction(self.tr("Delete"), self.__deleteFile) 188 act = self.menu.addAction(self.tr("Delete"), self.__deleteFile)
186 self.menuActions.append(act) 189 self.menuActions.append(act)
187 self.menu.addSeparator() 190 self.menu.addSeparator()
188 if self.project.getProjectType() in [ 191 if FileSystemUtilities.isPlainFileName(self.project.getProjectPath()):
189 "PyQt5", 192 if self.project.getProjectType() in [
190 "PyQt5C", 193 "PyQt5",
191 "PySide2", 194 "PyQt5C",
192 "PySide2C", 195 "PySide2",
193 "PySide6", 196 "PySide2C",
194 "PySide6C", 197 "PySide6",
195 ]: 198 "PySide6C",
196 self.menu.addAction(self.tr("New resource..."), self.__newResource) 199 ]:
197 else: 200 self.menu.addAction(self.tr("New resource..."), self.__newResource)
198 if self.hooks["newResource"] is not None: 201 else:
199 self.menu.addAction( 202 if self.hooks["newResource"] is not None:
200 self.hooksMenuEntries.get( 203 self.menu.addAction(
201 "newResource", self.tr("New resource...") 204 self.hooksMenuEntries.get(
202 ), 205 "newResource", self.tr("New resource...")
203 self.__newResource, 206 ),
204 ) 207 self.__newResource,
208 )
205 self.menu.addAction(self.tr("Add resources..."), self.__addResourceFiles) 209 self.menu.addAction(self.tr("Add resources..."), self.__addResourceFiles)
206 self.menu.addAction( 210 self.menu.addAction(
207 self.tr("Add resources directory..."), self.__addResourcesDirectory 211 self.tr("Add resources directory..."), self.__addResourcesDirectory
208 ) 212 )
209 self.menu.addSeparator() 213 self.menu.addSeparator()
210 self.menu.addAction(self.tr("Show in File Manager"), self._showInFileManager) 214 if FileSystemUtilities.isPlainFileName(self.project.getProjectPath()):
215 self.menu.addAction(
216 self.tr("Show in File Manager"), self._showInFileManager
217 )
211 self.menu.addAction(self.tr("Copy Path to Clipboard"), self._copyToClipboard) 218 self.menu.addAction(self.tr("Copy Path to Clipboard"), self._copyToClipboard)
212 self.menu.addSeparator() 219 self.menu.addSeparator()
213 self.menu.addAction(self.tr("Expand all directories"), self._expandAllDirs) 220 self.menu.addAction(self.tr("Expand all directories"), self._expandAllDirs)
214 self.menu.addAction(self.tr("Collapse all directories"), self._collapseAllDirs) 221 self.menu.addAction(self.tr("Collapse all directories"), self._collapseAllDirs)
215 self.menu.addSeparator() 222 self.menu.addSeparator()
216 self.menu.addAction(self.tr("Configure..."), self._configure) 223 self.menu.addAction(self.tr("Configure..."), self._configure)
217 224
218 self.backMenu = QMenu(self) 225 self.backMenu = QMenu(self)
219 if self.project.getProjectType() in [ 226 if FileSystemUtilities.isPlainFileName(self.project.getProjectPath()):
220 "PyQt5", 227 if self.project.getProjectType() in [
221 "PyQt5C", 228 "PyQt5",
222 "PySide2", 229 "PyQt5C",
223 "PySide2C", 230 "PySide2",
224 "PySide6", 231 "PySide2C",
225 "PySide6C", 232 "PySide6",
226 ]: 233 "PySide6C",
227 self.backMenu.addAction( 234 ]:
228 self.tr("Compile all resources"), self.__compileAllResources
229 )
230 self.backMenu.addSeparator()
231 self.backMenu.addAction(
232 self.tr("Configure rcc Compiler"), self.__configureRccCompiler
233 )
234 self.backMenu.addSeparator()
235 self.backMenu.addAction(self.tr("New resource..."), self.__newResource)
236 else:
237 if self.hooks["compileAllResources"] is not None:
238 self.backMenu.addAction( 235 self.backMenu.addAction(
239 self.hooksMenuEntries.get( 236 self.tr("Compile all resources"), self.__compileAllResources
240 "compileAllResources", self.tr("Compile all resources")
241 ),
242 self.__compileAllResources,
243 ) 237 )
244 self.backMenu.addSeparator() 238 self.backMenu.addSeparator()
245 if self.hooks["newResource"] is not None:
246 self.backMenu.addAction( 239 self.backMenu.addAction(
247 self.hooksMenuEntries.get( 240 self.tr("Configure rcc Compiler"), self.__configureRccCompiler
248 "newResource", self.tr("New resource...") 241 )
249 ), 242 self.backMenu.addSeparator()
250 self.__newResource, 243 self.backMenu.addAction(self.tr("New resource..."), self.__newResource)
251 ) 244 else:
245 if self.hooks["compileAllResources"] is not None:
246 self.backMenu.addAction(
247 self.hooksMenuEntries.get(
248 "compileAllResources", self.tr("Compile all resources")
249 ),
250 self.__compileAllResources,
251 )
252 self.backMenu.addSeparator()
253 if self.hooks["newResource"] is not None:
254 self.backMenu.addAction(
255 self.hooksMenuEntries.get(
256 "newResource", self.tr("New resource...")
257 ),
258 self.__newResource,
259 )
252 self.backMenu.addAction( 260 self.backMenu.addAction(
253 self.tr("Add resources..."), lambda: self.project.addFiles("RECOURCES") 261 self.tr("Add resources..."), lambda: self.project.addFiles("RECOURCES")
254 ) 262 )
255 self.backMenu.addAction( 263 self.backMenu.addAction(
256 self.tr("Add resources directory..."), 264 self.tr("Add resources directory..."),
257 lambda: self.project.addDirectory("RESOURCES"), 265 lambda: self.project.addDirectory("RESOURCES"),
258 ) 266 )
259 self.backMenu.addSeparator() 267 self.backMenu.addSeparator()
260 self.backMenu.addAction( 268 if FileSystemUtilities.isPlainFileName(self.project.getProjectPath()):
261 self.tr("Show in File Manager"), self._showProjectInFileManager 269 self.backMenu.addAction(
262 ) 270 self.tr("Show in File Manager"), self._showProjectInFileManager
271 )
263 self.backMenu.addSeparator() 272 self.backMenu.addSeparator()
264 self.backMenu.addAction(self.tr("Expand all directories"), self._expandAllDirs) 273 self.backMenu.addAction(self.tr("Expand all directories"), self._expandAllDirs)
265 self.backMenu.addAction( 274 self.backMenu.addAction(
266 self.tr("Collapse all directories"), self._collapseAllDirs 275 self.tr("Collapse all directories"), self._collapseAllDirs
267 ) 276 )
269 self.backMenu.addAction(self.tr("Configure..."), self._configure) 278 self.backMenu.addAction(self.tr("Configure..."), self._configure)
270 self.backMenu.setEnabled(False) 279 self.backMenu.setEnabled(False)
271 280
272 # create the menu for multiple selected files 281 # create the menu for multiple selected files
273 self.multiMenu = QMenu(self) 282 self.multiMenu = QMenu(self)
274 if self.project.getProjectType() in [ 283 if FileSystemUtilities.isPlainFileName(self.project.getProjectPath()):
275 "PyQt5", 284 if self.project.getProjectType() in [
276 "PyQt5C", 285 "PyQt5",
277 "PySide2", 286 "PyQt5C",
278 "PySide2C", 287 "PySide2",
279 "PySide6", 288 "PySide2C",
280 "PySide6C", 289 "PySide6",
281 ]: 290 "PySide6C",
282 act = self.multiMenu.addAction( 291 ]:
283 self.tr("Compile resources"), self.__compileSelectedResources
284 )
285 self.multiMenu.addSeparator()
286 self.multiMenu.addAction(
287 self.tr("Configure rcc Compiler"), self.__configureRccCompiler
288 )
289 self.multiMenu.addSeparator()
290 else:
291 if self.hooks["compileSelectedResources"] is not None:
292 act = self.multiMenu.addAction( 292 act = self.multiMenu.addAction(
293 self.hooksMenuEntries.get( 293 self.tr("Compile resources"), self.__compileSelectedResources
294 "compileSelectedResources", self.tr("Compile resources")
295 ),
296 self.__compileSelectedResources,
297 ) 294 )
298 self.multiMenu.addSeparator() 295 self.multiMenu.addSeparator()
296 self.multiMenu.addAction(
297 self.tr("Configure rcc Compiler"), self.__configureRccCompiler
298 )
299 self.multiMenu.addSeparator()
300 else:
301 if self.hooks["compileSelectedResources"] is not None:
302 act = self.multiMenu.addAction(
303 self.hooksMenuEntries.get(
304 "compileSelectedResources", self.tr("Compile resources")
305 ),
306 self.__compileSelectedResources,
307 )
308 self.multiMenu.addSeparator()
299 self.multiMenu.addAction(self.tr("Open"), self.__openFile) 309 self.multiMenu.addAction(self.tr("Open"), self.__openFile)
300 self.multiMenu.addSeparator() 310 self.multiMenu.addSeparator()
301 act = self.multiMenu.addAction(self.tr("Remove from project"), self._removeFile) 311 act = self.multiMenu.addAction(self.tr("Remove from project"), self._removeFile)
302 self.multiMenuActions.append(act) 312 self.multiMenuActions.append(act)
303 act = self.multiMenu.addAction(self.tr("Delete"), self.__deleteFile) 313 act = self.multiMenu.addAction(self.tr("Delete"), self.__deleteFile)
309 ) 319 )
310 self.multiMenu.addSeparator() 320 self.multiMenu.addSeparator()
311 self.multiMenu.addAction(self.tr("Configure..."), self._configure) 321 self.multiMenu.addAction(self.tr("Configure..."), self._configure)
312 322
313 self.dirMenu = QMenu(self) 323 self.dirMenu = QMenu(self)
314 if self.project.getProjectType() in [ 324 if FileSystemUtilities.isPlainFileName(self.project.getProjectPath()):
315 "PyQt5", 325 if self.project.getProjectType() in [
316 "PyQt5C", 326 "PyQt5",
317 "PySide2", 327 "PyQt5C",
318 "PySide2C", 328 "PySide2",
319 "PySide6", 329 "PySide2C",
320 "PySide6C", 330 "PySide6",
321 ]: 331 "PySide6C",
322 self.dirMenu.addAction( 332 ]:
323 self.tr("Compile all resources"), self.__compileAllResources
324 )
325 self.dirMenu.addSeparator()
326 self.dirMenu.addAction(
327 self.tr("Configure rcc Compiler"), self.__configureRccCompiler
328 )
329 self.dirMenu.addSeparator()
330 else:
331 if self.hooks["compileAllResources"] is not None:
332 self.dirMenu.addAction( 333 self.dirMenu.addAction(
333 self.hooksMenuEntries.get( 334 self.tr("Compile all resources"), self.__compileAllResources
334 "compileAllResources", self.tr("Compile all resources")
335 ),
336 self.__compileAllResources,
337 ) 335 )
338 self.dirMenu.addSeparator() 336 self.dirMenu.addSeparator()
337 self.dirMenu.addAction(
338 self.tr("Configure rcc Compiler"), self.__configureRccCompiler
339 )
340 self.dirMenu.addSeparator()
341 else:
342 if self.hooks["compileAllResources"] is not None:
343 self.dirMenu.addAction(
344 self.hooksMenuEntries.get(
345 "compileAllResources", self.tr("Compile all resources")
346 ),
347 self.__compileAllResources,
348 )
349 self.dirMenu.addSeparator()
339 act = self.dirMenu.addAction(self.tr("Remove from project"), self._removeDir) 350 act = self.dirMenu.addAction(self.tr("Remove from project"), self._removeDir)
340 self.dirMenuActions.append(act) 351 self.dirMenuActions.append(act)
341 act = self.dirMenu.addAction(self.tr("Delete"), self._deleteDirectory) 352 act = self.dirMenu.addAction(self.tr("Delete"), self._deleteDirectory)
342 self.dirMenuActions.append(act) 353 self.dirMenuActions.append(act)
343 self.dirMenu.addSeparator() 354 self.dirMenu.addSeparator()
344 self.dirMenu.addAction(self.tr("New resource..."), self.__newResource) 355 if FileSystemUtilities.isPlainFileName(self.project.getProjectPath()):
356 self.dirMenu.addAction(self.tr("New resource..."), self.__newResource)
345 self.dirMenu.addAction(self.tr("Add resources..."), self.__addResourceFiles) 357 self.dirMenu.addAction(self.tr("Add resources..."), self.__addResourceFiles)
346 self.dirMenu.addAction( 358 self.dirMenu.addAction(
347 self.tr("Add resources directory..."), self.__addResourcesDirectory 359 self.tr("Add resources directory..."), self.__addResourcesDirectory
348 ) 360 )
349 self.dirMenu.addSeparator() 361 self.dirMenu.addSeparator()
350 self.dirMenu.addAction(self.tr("Show in File Manager"), self._showInFileManager) 362 if FileSystemUtilities.isPlainFileName(self.project.getProjectPath()):
363 self.dirMenu.addAction(
364 self.tr("Show in File Manager"), self._showInFileManager
365 )
351 self.dirMenu.addAction(self.tr("Copy Path to Clipboard"), self._copyToClipboard) 366 self.dirMenu.addAction(self.tr("Copy Path to Clipboard"), self._copyToClipboard)
352 self.dirMenu.addSeparator() 367 self.dirMenu.addSeparator()
353 self.dirMenu.addAction(self.tr("Expand all directories"), self._expandAllDirs) 368 self.dirMenu.addAction(self.tr("Expand all directories"), self._expandAllDirs)
354 self.dirMenu.addAction( 369 self.dirMenu.addAction(
355 self.tr("Collapse all directories"), self._collapseAllDirs 370 self.tr("Collapse all directories"), self._collapseAllDirs
356 ) 371 )
357 self.dirMenu.addSeparator() 372 self.dirMenu.addSeparator()
358 self.dirMenu.addAction(self.tr("Configure..."), self._configure) 373 self.dirMenu.addAction(self.tr("Configure..."), self._configure)
359 374
360 self.dirMultiMenu = QMenu(self) 375 self.dirMultiMenu = QMenu(self)
361 if self.project.getProjectType() in [ 376 if FileSystemUtilities.isPlainFileName(self.project.getProjectPath()):
362 "PyQt5", 377 if self.project.getProjectType() in [
363 "PyQt5C", 378 "PyQt5",
364 "PySide2", 379 "PyQt5C",
365 "PySide2C", 380 "PySide2",
366 "PySide6", 381 "PySide2C",
367 "PySide6C", 382 "PySide6",
368 ]: 383 "PySide6C",
369 self.dirMultiMenu.addAction( 384 ]:
370 self.tr("Compile all resources"), self.__compileAllResources
371 )
372 self.dirMultiMenu.addSeparator()
373 self.dirMultiMenu.addAction(
374 self.tr("Configure rcc Compiler"), self.__configureRccCompiler
375 )
376 self.dirMultiMenu.addSeparator()
377 else:
378 if self.hooks["compileAllResources"] is not None:
379 self.dirMultiMenu.addAction( 385 self.dirMultiMenu.addAction(
380 self.hooksMenuEntries.get( 386 self.tr("Compile all resources"), self.__compileAllResources
381 "compileAllResources", self.tr("Compile all resources")
382 ),
383 self.__compileAllResources,
384 ) 387 )
385 self.dirMultiMenu.addSeparator() 388 self.dirMultiMenu.addSeparator()
389 self.dirMultiMenu.addAction(
390 self.tr("Configure rcc Compiler"), self.__configureRccCompiler
391 )
392 self.dirMultiMenu.addSeparator()
393 else:
394 if self.hooks["compileAllResources"] is not None:
395 self.dirMultiMenu.addAction(
396 self.hooksMenuEntries.get(
397 "compileAllResources", self.tr("Compile all resources")
398 ),
399 self.__compileAllResources,
400 )
401 self.dirMultiMenu.addSeparator()
386 self.dirMultiMenu.addAction( 402 self.dirMultiMenu.addAction(
387 self.tr("Add resources..."), lambda: self.project.addFiles("RECOURCES") 403 self.tr("Add resources..."), lambda: self.project.addFiles("RECOURCES")
388 ) 404 )
389 self.dirMultiMenu.addAction( 405 self.dirMultiMenu.addAction(
390 self.tr("Add resources directory..."), 406 self.tr("Add resources directory..."),

eric ide

mercurial