############################################################################ # # # Description: Gestion du "Menu bar" menu en haut de la fenêtre # # # ############################################################################ # Import de join de la bibliothèque de bas OS pour joindre plusieurs # nom en un chemin poitnant vers un dossier ou fichier from os.path import join # Import de path pour récupérer le chemin actuel from pathlib import Path # Import des éléments de PyQt5 from PyQt5.QtGui import QIcon from PyQt5.QtWidgets import QAction # Import des éléments locals from src.app import ( windowAPropos, windowAdmin, windowUserInfo, windowMissions ) def menu_init(mainWindow: object) -> None: """ Génère le 'menu bar' de l'app en fonction de si l'utilisateur est connecté et de son status. """ # On défini le logo de l'application logo: str = join("ressources", "icon.ico") mainWindow.setWindowIcon(QIcon(logo)) # On défini le titre de la fenêtre mainWindow.setWindowTitle("Alphajob") # On initialise le menu de la fenêtre principale, # ou on l'"attrape" si il existe déja (pointeur vers ce dernier) menu: object = mainWindow.menuBar() # On le réinitialise si jamais il existait déja menu.clear() # On le repeuple avec différents menu et boutons en fonction du type de compte if mainWindow.userConnected and mainWindow.userStatus == "Admin": # Ajout d'un menu "Admin" menuAdmin: object = menu.addMenu("Admin") # Création de 3 boutons, pour les 3 champs modifiables par l'admin btnEmplois: object = QAction("Gestion des emplois", mainWindow) btnUsers: object = QAction("Gestion des Utilisateurs", mainWindow) btnMissions: object = QAction("Gestion des missions", mainWindow) # On lie ces boutons a des fonctions, toujours avec un lambda pour que ces fonctions # ne soit pas déclencher à la'appel de la fonction menu_init btnEmplois.triggered.connect(lambda: windowAdmin.window_admin_emplois(mainWindow)) btnUsers.triggered.connect(lambda: windowAdmin.window_admin_users(mainWindow)) btnMissions.triggered.connect(lambda: windowAdmin.window_admin_missions(mainWindow)) # On ajoute ces boutons au menu "Admin" menuAdmin.addAction(btnEmplois) menuAdmin.addAction(btnUsers) menuAdmin.addAction(btnMissions) # Si client ou pro elif mainWindow.userConnected and ( mainWindow.userStatus == "Pro" or mainWindow.userStatus == "Client"): # Ajout d'un menu "mes infos" avec son bouton menuUserInfos: object = menu.addMenu("Mes infos") btnMesInfos: object = QAction("Gérer ses infos", mainWindow) btnMesInfos.triggered.connect(lambda: windowUserInfo.window_main(mainWindow)) menuUserInfos.addAction(btnMesInfos) # Ajout d'un menu "mes misisons" avec ses boutons menuMissions: object = menu.addMenu("Mes missions") btnPendingMission: object = QAction("Missions en attente", mainWindow) btnOngoignMission: object = QAction("Missions en cours", mainWindow) btnCompletedMission: object = QAction("Missions en terminées", mainWindow) btnPendingMission.triggered.connect(lambda: windowMissions.window_main(mainWindow, "pending")) btnOngoignMission.triggered.connect(lambda: windowMissions.window_main(mainWindow, "ongoing")) btnCompletedMission.triggered.connect(lambda: windowMissions.window_main(mainWindow, "completed")) menuMissions.addAction(btnPendingMission) menuMissions.addAction(btnOngoignMission) menuMissions.addAction(btnCompletedMission) # Dans tous les cas # Ajout d'un menu "Options" aves son bouton menuOptions: object = menu.addMenu("Options") btnApropos: object = QAction("A propos", mainWindow) btnApropos.triggered.connect(lambda: windowAPropos.window_main(mainWindow)) menuOptions.addAction(btnApropos)