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
|
"""Contient toute la partie 'TUI' de Redim"""
from os import system
from sys import platform
class Ui:
"""Gestion de l'interaction avec l'utilisateur"""
def __init__(self, configuration):
self.banner = (
"\n ____ _ ____ ____ \n",
"| _ \\ _ __ ___ _ __ (_)_ _ _ __ ___ | _ \\ / ___|\n",
"| |_) | '__/ _ \\ '_ \\| | | | | '_ ` _ \\| |_) | | \n",
"| __/| | | __/ | | | | |_| | | | | | | __/| |___ \n",
"|_| |_| \\___|_| |_|_|\\__,_|_| |_| |_|_| \\____|\n",
"\n######################################################\n",
"\n[-] tailles (lxh): {0}".format(
", ".join(map(
str,
["x".join(map(str, configuration["dimensions"][i]))
for i in range(len(configuration["dimensions"]))]
))
),
"\n[-] rgb background:", configuration["background"],
"\n[-] formats acceptes:", configuration["formats_acceptes"],
"\n[-] format de sortie:", configuration["format_final"],
"\n\n######################################################"
)
self.menu = (
"\n[-] Que faire?\n",
"\n (1) -> Conversions",
"\n (5) -> Modification des tailles",
"\n (6) -> Modification du RGB",
"\n (7) -> Modification du format de sortie",
"\n (8) -> Reset des parametres",
"\n (9) -> Quitter\n"
)
def affichage_banner(self):
"""Reset de l'écran + affichage de la 'banner'"""
self.reset_screen()
print(*self.banner)
def affichage_menu(self):
"""Affichage du menu principal"""
print(*self.menu)
@staticmethod
def question_taille(configuration):
"""Récupère largeur & hauteur pour chaques tailles
enregistrées dans la configuration initiale
"""
texte = [
" [>] Largeur: ",
" [>] Hauteur: "
]
tailles = []
for i in range(len(configuration)):
print("\n[-] Taille {0!s}:".format(i + 1))
dimensions = []
for j in texte:
while True:
reponse = input(j)
try:
reponse = int(reponse.strip())
if 5 < reponse < 5000:
dimensions.append(reponse)
break
print(" [ERREUR] La valeur trop petite"
" ou trop grande.")
except ValueError:
print(" [ERREUR] La valeur entree"
" n'est pas un chiffre.")
tailles.append(dimensions)
return tailles
@staticmethod
def question_background(configuration):
"""Récupère 3 valeurs entre 0 & 255 pour la couleur qui servira
en remplissage si les photos sont redimensionnées ou avec alpha
"""
texte = [
" [>] Valeur Rouge: ",
" [>] Valeur Vert: ",
" [>] Valeur Bleu: "
]
background = []
print(
"\n[-] Modification de la couleur"
" du background (Valeur RGB 0-255):\n"
)
for i in range(len(configuration)):
while True:
reponse = input(texte[i])
try:
reponse = int(reponse.strip())
if 0 <= reponse < 256:
background.append(reponse)
break
print(" [ERREUR] La valeur trop petite"
" ou trop grande.")
except ValueError:
print(" [ERREUR] La valeur entree"
" n'est pas un chiffre.")
return background
@staticmethod
def question_format_final(configuration):
"""Récupère le choix de sortie en fonction des formats
acceptés dans la configuration initiale
"""
print("\n[-] Modification du format de sortie:\n")
for pos, i in enumerate(configuration[1:]):
print(
" ("
+ str(pos + 1)
+ ") ->",
i
)
while True:
reponse = input("\n[>] Choix (numero) : ")
try:
reponse = int(reponse.strip())
if 0 < reponse <= len(configuration[1:]):
format_final = "." + configuration[reponse]
return format_final
print("[ERREUR] Choix en dehors des possibilites.")
except ValueError:
print("[ERREUR] La valeur entree n'est pas un chiffre.")
@staticmethod
def affichage_fin():
"""Bête appuye sur entrer pour continuer"""
input("\n[-] fin, appuyer sur \'entrer\' pour continuer.")
@staticmethod
def reset_screen():
"""Reset de l'écran, cls pour CMD windows"""
if platform != "linux":
system("cls")
else:
system("clear")
|