eric7/Project/Project.py

branch
eric7
changeset 9117
c6afba2049cf
parent 9092
043848f65726
child 9125
3d2411181b3c
equal deleted inserted replaced
9116:698660ef7350 9117:c6afba2049cf
2339 bool(self.pdata["TRANSLATIONPATTERN"])) 2339 bool(self.pdata["TRANSLATIONPATTERN"]))
2340 self.makeGrp.setEnabled( 2340 self.makeGrp.setEnabled(
2341 self.pdata["MAKEPARAMS"]["MakeEnabled"]) 2341 self.pdata["MAKEPARAMS"]["MakeEnabled"])
2342 self.menuMakeAct.setEnabled( 2342 self.menuMakeAct.setEnabled(
2343 self.pdata["MAKEPARAMS"]["MakeEnabled"]) 2343 self.pdata["MAKEPARAMS"]["MakeEnabled"])
2344 self.menuOtherToolsAct.setEnabled(True)
2344 2345
2345 self.projectAboutToBeCreated.emit() 2346 self.projectAboutToBeCreated.emit()
2346 2347
2347 hashStr = str(QCryptographicHash.hash( 2348 hashStr = str(QCryptographicHash.hash(
2348 QByteArray(self.ppath.encode("utf-8")), 2349 QByteArray(self.ppath.encode("utf-8")),
3031 bool(self.pdata["TRANSLATIONPATTERN"])) 3032 bool(self.pdata["TRANSLATIONPATTERN"]))
3032 self.makeGrp.setEnabled( 3033 self.makeGrp.setEnabled(
3033 self.pdata["MAKEPARAMS"]["MakeEnabled"]) 3034 self.pdata["MAKEPARAMS"]["MakeEnabled"])
3034 self.menuMakeAct.setEnabled( 3035 self.menuMakeAct.setEnabled(
3035 self.pdata["MAKEPARAMS"]["MakeEnabled"]) 3036 self.pdata["MAKEPARAMS"]["MakeEnabled"])
3037 self.menuOtherToolsAct.setEnabled(True)
3036 3038
3037 # open a project debugger properties file being quiet 3039 # open a project debugger properties file being quiet
3038 # about errors 3040 # about errors
3039 if Preferences.getProject("AutoLoadDbgProperties"): 3041 if Preferences.getProject("AutoLoadDbgProperties"):
3040 self.__readDebugProperties(True) 3042 self.__readDebugProperties(True)
3287 self.menuApidocAct.setEnabled(False) 3289 self.menuApidocAct.setEnabled(False)
3288 self.menuPackagersAct.setEnabled(False) 3290 self.menuPackagersAct.setEnabled(False)
3289 self.pluginGrp.setEnabled(False) 3291 self.pluginGrp.setEnabled(False)
3290 self.makeGrp.setEnabled(False) 3292 self.makeGrp.setEnabled(False)
3291 self.menuMakeAct.setEnabled(False) 3293 self.menuMakeAct.setEnabled(False)
3294 self.menuOtherToolsAct.setEnabled(False)
3292 3295
3293 self.__model.projectClosed() 3296 self.__model.projectClosed()
3294 self.projectClosedHooks.emit() 3297 self.projectClosedHooks.emit()
3295 self.projectClosed.emit(shutdown) 3298 self.projectClosed.emit(shutdown)
3296 3299
4384 """ target is necessary.</p>""" 4387 """ target is necessary.</p>"""
4385 )) 4388 ))
4386 self.makeTestAct.triggered.connect( 4389 self.makeTestAct.triggered.connect(
4387 lambda: self.__executeMake(questionOnly=True)) 4390 lambda: self.__executeMake(questionOnly=True))
4388 self.actions.append(self.makeTestAct) 4391 self.actions.append(self.makeTestAct)
4392
4393 self.createSBOMAct = EricAction(
4394 self.tr('Create SBOM File'),
4395 self.tr('Create &SBOM File'), 0, 0,
4396 self, 'project_create_sbom')
4397 self.createSBOMAct.setStatusTip(
4398 self.tr("Create a SBOM file of the project dependencies."))
4399 self.createSBOMAct.setWhatsThis(self.tr(
4400 """<b>Create SBOM File</b>"""
4401 """<p>This allows the creation of a SBOM file of the project"""
4402 """ dependencies. This may be based on various input sources"""
4403 """ and will be saved as a CycloneDX SBOM file.</p>"""
4404 ))
4405 self.createSBOMAct.triggered.connect(self.__createSBOMFile)
4406 self.actions.append(self.createSBOMAct)
4389 4407
4390 self.closeAct.setEnabled(False) 4408 self.closeAct.setEnabled(False)
4391 self.saveAct.setEnabled(False) 4409 self.saveAct.setEnabled(False)
4392 self.saveasAct.setEnabled(False) 4410 self.saveasAct.setEnabled(False)
4393 self.actGrp2.setEnabled(False) 4411 self.actGrp2.setEnabled(False)
4422 self.graphicsMenu = QMenu(self.tr('&Diagrams'), toolsMenu) 4440 self.graphicsMenu = QMenu(self.tr('&Diagrams'), toolsMenu)
4423 self.packagersMenu = QMenu(self.tr('Pac&kagers'), toolsMenu) 4441 self.packagersMenu = QMenu(self.tr('Pac&kagers'), toolsMenu)
4424 self.apidocMenu = QMenu(self.tr('Source &Documentation'), toolsMenu) 4442 self.apidocMenu = QMenu(self.tr('Source &Documentation'), toolsMenu)
4425 self.apidocMenu.setTearOffEnabled(True) 4443 self.apidocMenu.setTearOffEnabled(True)
4426 self.makeMenu = QMenu(self.tr('Make'), toolsMenu) 4444 self.makeMenu = QMenu(self.tr('Make'), toolsMenu)
4445 self.othersMenu = QMenu(self.tr('Other Tools'), toolsMenu)
4427 4446
4428 self.__menus = { 4447 self.__menus = {
4429 "Main": menu, 4448 "Main": menu,
4430 "Recent": self.recentMenu, 4449 "Recent": self.recentMenu,
4431 "VCS": self.vcsMenu, 4450 "VCS": self.vcsMenu,
4435 "Session": self.sessionMenu, 4454 "Session": self.sessionMenu,
4436 "Apidoc": self.apidocMenu, 4455 "Apidoc": self.apidocMenu,
4437 "Debugger": self.debuggerMenu, 4456 "Debugger": self.debuggerMenu,
4438 "Packagers": self.packagersMenu, 4457 "Packagers": self.packagersMenu,
4439 "Make": self.makeMenu, 4458 "Make": self.makeMenu,
4459 "OtherTools": self.othersMenu,
4440 } 4460 }
4441 4461
4442 # connect the aboutToShow signals 4462 # connect the aboutToShow signals
4443 self.recentMenu.aboutToShow.connect(self.__showContextMenuRecent) 4463 self.recentMenu.aboutToShow.connect(self.__showContextMenuRecent)
4444 self.recentMenu.triggered.connect(self.__openRecent) 4464 self.recentMenu.triggered.connect(self.__openRecent)
4449 self.apidocMenu.aboutToShow.connect(self.__showContextMenuApiDoc) 4469 self.apidocMenu.aboutToShow.connect(self.__showContextMenuApiDoc)
4450 self.packagersMenu.aboutToShow.connect(self.__showContextMenuPackagers) 4470 self.packagersMenu.aboutToShow.connect(self.__showContextMenuPackagers)
4451 self.sessionMenu.aboutToShow.connect(self.__showContextMenuSession) 4471 self.sessionMenu.aboutToShow.connect(self.__showContextMenuSession)
4452 self.debuggerMenu.aboutToShow.connect(self.__showContextMenuDebugger) 4472 self.debuggerMenu.aboutToShow.connect(self.__showContextMenuDebugger)
4453 self.makeMenu.aboutToShow.connect(self.__showContextMenuMake) 4473 self.makeMenu.aboutToShow.connect(self.__showContextMenuMake)
4474 self.othersMenu.aboutToShow.connect(self.__showContextMenuOthers)
4454 menu.aboutToShow.connect(self.__showMenu) 4475 menu.aboutToShow.connect(self.__showMenu)
4455 4476
4456 # build the show menu 4477 # build the show menu
4457 self.menuShow.setTearOffEnabled(True) 4478 self.menuShow.setTearOffEnabled(True)
4458 self.menuShow.addAction(self.codeMetricsAct) 4479 self.menuShow.addAction(self.codeMetricsAct)
4480 4501
4481 # build the make menu 4502 # build the make menu
4482 self.makeMenu.setTearOffEnabled(True) 4503 self.makeMenu.setTearOffEnabled(True)
4483 self.makeMenu.addActions(self.makeGrp.actions()) 4504 self.makeMenu.addActions(self.makeGrp.actions())
4484 self.makeMenu.addSeparator() 4505 self.makeMenu.addSeparator()
4506
4507 # build the 'Other Tools' menu
4508 self.othersMenu.setTearOffEnabled(True)
4509 self.othersMenu.addAction(self.createSBOMAct)
4485 4510
4486 # build the project main menu 4511 # build the project main menu
4487 menu.setTearOffEnabled(True) 4512 menu.setTearOffEnabled(True)
4488 menu.addActions(self.actGrp1.actions()) 4513 menu.addActions(self.actGrp1.actions())
4489 self.menuRecentAct = menu.addMenu(self.recentMenu) 4514 self.menuRecentAct = menu.addMenu(self.recentMenu)
4517 self.menuShowAct = toolsMenu.addMenu(self.menuShow) 4542 self.menuShowAct = toolsMenu.addMenu(self.menuShow)
4518 toolsMenu.addSeparator() 4543 toolsMenu.addSeparator()
4519 self.menuApidocAct = toolsMenu.addMenu(self.apidocMenu) 4544 self.menuApidocAct = toolsMenu.addMenu(self.apidocMenu)
4520 toolsMenu.addSeparator() 4545 toolsMenu.addSeparator()
4521 self.menuPackagersAct = toolsMenu.addMenu(self.packagersMenu) 4546 self.menuPackagersAct = toolsMenu.addMenu(self.packagersMenu)
4547 toolsMenu.addSeparator()
4548 self.menuOtherToolsAct = toolsMenu.addMenu(self.othersMenu)
4522 4549
4523 self.menuCheckAct.setEnabled(False) 4550 self.menuCheckAct.setEnabled(False)
4524 self.menuShowAct.setEnabled(False) 4551 self.menuShowAct.setEnabled(False)
4525 self.menuDiagramAct.setEnabled(False) 4552 self.menuDiagramAct.setEnabled(False)
4526 self.menuSessionAct.setEnabled(False) 4553 self.menuSessionAct.setEnabled(False)
4527 self.menuDebuggerAct.setEnabled(False) 4554 self.menuDebuggerAct.setEnabled(False)
4528 self.menuApidocAct.setEnabled(False) 4555 self.menuApidocAct.setEnabled(False)
4529 self.menuPackagersAct.setEnabled(False) 4556 self.menuPackagersAct.setEnabled(False)
4530 self.menuMakeAct.setEnabled(False) 4557 self.menuMakeAct.setEnabled(False)
4558 self.menuOtherToolsAct.setEnabled(False)
4531 4559
4532 self.__menu = menu 4560 self.__menu = menu
4533 self.__toolsMenu = toolsMenu 4561 self.__toolsMenu = toolsMenu
4534 4562
4535 return menu, toolsMenu 4563 return menu, toolsMenu
5912 5940
5913 @return configured docstring style 5941 @return configured docstring style
5914 @rtype str 5942 @rtype str
5915 """ 5943 """
5916 return self.pdata["DOCSTRING"] 5944 return self.pdata["DOCSTRING"]
5945
5946 #########################################################################
5947 ## Below are methods implementing the 'SBOM' support
5948 #########################################################################
5949
5950 def __showContextMenuOthers(self):
5951 """
5952 Private slot called before the 'Other Tools' menu is shown.
5953 """
5954 self.showMenu.emit("OtherTools", self.othersMenu)
5955
5956 @pyqtSlot()
5957 def __createSBOMFile(self):
5958 """
5959 Private slot to create a SBOM file of the project dependencies.
5960 """
5961 import CycloneDXInterface
5962
5963 CycloneDXInterface.createCycloneDXFile("<project>")
5917 5964
5918 # 5965 #
5919 # eflag: noqa = M601 5966 # eflag: noqa = M601

eric ide

mercurial