-
Notifications
You must be signed in to change notification settings - Fork 1
/
menu.py
151 lines (133 loc) · 5.25 KB
/
menu.py
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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
from driverI2C import *
from button import *
from grove_rotary_angle_sensor import *
from grove_ultrasonic import *
from sport import *
from programme import *
from LED import *
from database import *
import time
# Fonction pour naviguer dans le menu principal
def choixMenu():
time.sleep(0.1)
print("Menu Général")
potentiometre(optionGeneral,keyOptionGeneral,valueOptionGeneral)
return 1
# Fonction pour récupérer les programmes personnalisés sur la base de données
def getProgrammePerso(nom):
programmeChoisi = {}
for programme in programmes.values():
if programme["Nom"] == nom:
programmeChoisi = programme["Exercices"]
break
return programmeChoisi
# Fonction pour lancer un programme personalisé
def programmePerso(nom):
programme = getProgrammePerso(nom)
personnalise(programme)
choixMenu()
# Charge les programmes personalisés dans la rasp
def updateProgrammesPersos():
global programmes
global optionProgrammesPersos
global keyOptionProgrammesPersos
global valueOptionProgrammePersos
programmes = getProgrammes()
listeProgrammes = {"Menu General" : choixMenu}
print(programmes, "\n")
for programme in programmes.values():
print('le programme en cours', list(programme))
values = list(programme.values())
listeProgrammes[values[1]] = programmePerso
optionProgrammesPersos = listeProgrammes # Copie du dictionnnaire des programmes personalisés
keyOptionProgrammesPersos = list(optionProgrammesPersos.keys()) # Liste des clés du dictionnaire de programmes personalisés
valueOptionProgrammePersos = list(optionProgrammesPersos.values()) # Liste des valeurs du dictionnaire de programmes personalisés
# Charge les stats dans la rasp
def updateStats():
global stats
global optionStats
global keyOptionStats
global valueOptionStats
stats = getStats()
listeStats = {}
for stat in stats:
values = list(stat.values())
chaine = ""
if (values[2] == 'repet'):
chaine = str(values[1]) + " " + str(values[0]) # 1 -> nombre de répétitions ; 0 -> nom
else:
chaine = str(values[1]) + " secondes de " + str(values[0]) # 1 -> nombre de secondes ; 0 -> nom
listeStats[chaine] = choixMenu # Retour a menu principal
optionStats = listeStats # Copie du dictionnnaire des statistiques
keyOptionStats = list(optionStats.keys()) # Liste des clés du dictionnaire de statistiques
valueOptionStats = list(optionStats.values()) # Liste des valeurs du dictionnaire de statistiques
updateProgrammesPersos()
# Fonction pour naviguer dans le menu des programmes personalisés
def programmesPersomenu():
updateProgrammesPersos()
time.sleep(0.1)
potentiometre(optionProgrammesPersos,keyOptionProgrammesPersos,valueOptionProgrammePersos)
return 1
# Fonction pour naviguer dans le menu des statistiques
def statsMenu():
updateStats()
time.sleep(0.1)
potentiometre(optionStats,keyOptionStats,valueOptionStats)
return 1
# Fonction pour naviguer dans le menu des séries
def serie():
time.sleep(0.1)
potentiometre(optionSport,keyOptionSport,valueOptionSport)
choixMenu()
return 1
# Fonction pour naviguer dans le menu des programmes
def programme():
time.sleep(0.1)
potentiometre(programme,keyProgramme,valueProgramme)
choixMenu()
return 1
# Fonction pour utiliser le potentiomètre dans la navigation des menus
def potentiometre(menu,keys,values):
global indexChoix
indexChoix = 0
setText(keys[0])
indiceEnCours = 0
while True:
indiceEnCours = getIndice(len(menu))
if (indiceEnCours != indexChoix):
indexChoix = indiceEnCours
setText(keys[indexChoix])
value = readButton(3)
time.sleep(.05)
if (value == 1): # si le bouton a été utilisé, c'est qu'on a choisi une option
if (values[indexChoix] == programmePerso):
setText(keys[indexChoix])
values[indexChoix](keys[indexChoix])
else:
setText(keys[indexChoix])
values[indexChoix]()
break
programmes = getProgrammes()
stats = getStats()
# Partie menu général
optionGeneral = {"Programmes" : programme, "Programmes perso" : programmesPersomenu, "Serie" : serie , "Statistiques" : statsMenu}
keyOptionGeneral = list(optionGeneral.keys())
valueOptionGeneral = list(optionGeneral.values())
# Partie exercice
optionSport = {"Menu General" : choixMenu, "Pompes" : pompes, "Squat" : squats, "Dips" : dips, "Gainage" : gainage, "Chaise" : chaise}
keyOptionSport = list(optionSport.keys())
valueOptionSport = list(optionSport.values())
# Partie programme
programme = {"Menu General" : choixMenu, "Debutant" : debutant, "Intermediaire" : intermediaire, "Avance" : avance}
keyProgramme = list(programme.keys())
valueProgramme = list(programme.values())
# Partie programme personalisé
optionProgrammesPersos = {}
keyOptionProgrammesPersos = list(optionProgrammesPersos.keys())
valueOptionProgrammePersos = list(optionProgrammesPersos.values())
# Partie stats
optionStats = {}
keyOptionStats = list(optionStats.keys())
valueOptionStats = list(optionStats.values())
# Le premier élément est afficher a l'arriver sur un menu
indexChoix = 0