1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
############################################################################
# #
# 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)
|