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 |