Skip to content
Snippets Groups Projects
Commit 7e215c9c authored by Loloncio's avatar Loloncio
Browse files

Cambios de estructura y añadido boton ayuda

Añadida carpeta src y assets para organizar mejor.

En la vista menu ahora hay un botón ayuda que mostrará una guía de para que sirve y como usar la app.

La vista final muestra una imagen que indica que está cargando.
parent d3a24e31
No related branches found
No related tags found
No related merge requests found
assets/ayuda.png

20.3 KiB

assets/cargando.png

23 KiB

File moved
File moved
# Controlador para la vista listas de la app App-Perm
# Autor: Alejandro de la Cruz Garijo
import os
import sys
PROJECT_ROOT = os.path.abspath(os.path.join(
os.path.dirname(__file__),
os.pardir))
sys.path.append(PROJECT_ROOT)
from Model.GruposMod import GruposMod
from Model.PermisosMod import PermisosMod
class ListasContr():
modeloPermisos = PermisosMod()
modeloGrupos = GruposMod()
def getPermisos(self, opcion):
if opcion == 4:
return self.modeloPermisos.getPermisosNormales()
if opcion == 5:
return self.modeloPermisos.getPermisosSignature()
else:
return self.modeloPermisos.getPermisos()
def getGrupos(self):
return list(self.modeloGrupos.getGrupos())
def aFinal(self, permiso, grupos, protection, opcion):
if opcion == 1:
print(grupos[0], self.modeloPermisos.getGrupo(permiso))
if grupos[0] == self.modeloPermisos.getGrupo(permiso):
return "El permiso ya pertenece a ese grupo"
else:
return "OK"
elif opcion == 2:
return "OK"
elif opcion == 3:
if protection == self.modeloPermisos.getProtection(permiso):
return "El permiso ya tiene ese protection level"
else:
return "OK"
else:
return "OK"
\ No newline at end of file
......@@ -7,6 +7,7 @@ PROJECT_ROOT = os.path.abspath(os.path.join(
sys.path.append(PROJECT_ROOT)
from View.Defecto import defecto
from View.Listas import listas
from View.Final import final
class ControladorMenu:
def aDefecto(self, ventanaPrincipal):
......@@ -19,3 +20,5 @@ class ControladorMenu:
return
def aADB(self, ventanaPrincipal):
return
def aAyuda(self, ventanaPrincipal):
return
\ No newline at end of file
File moved
File moved
File moved
File moved
File moved
......@@ -3,9 +3,12 @@
# Autor: Alejandro de la Cruz Garijo
import tkinter as tk
import customtkinter as ctk
from PIL import Image, ImageTk
import os
import time
class final(ctk.CTkToplevel):
DONE = False
def __init__(self, parent, opt, *args, **kwargs):
super().__init__(parent, *args, **kwargs)
self.parent = parent
......@@ -14,3 +17,26 @@ class final(ctk.CTkToplevel):
self.parent.withdraw()
self.geometry("1280x720")
self.minsize(width=1280,height=720)
self.configure(fg_color = "#4B4B4B")
self.canvas = tk.Canvas(self, width=100, height=100,bg="#4B4B4B", highlightthickness=0)
self.canvas.pack(anchor="center", pady = 200)
self.update = self.draw().__next__
self.after(100, self.update)
def draw(self):
imagePath = os.path.join(os.path.dirname(os.path.abspath(__file__)), "../../assets/cargando.png")
image = Image.open(imagePath)
image = image.resize([100,100])
angle = 0
while not self.DONE:
tkimage = ImageTk.PhotoImage(image.rotate(angle))
canvas_obj = self.canvas.create_image(50, 50
, image=tkimage)
self.after_idle(self.update)
yield
self.canvas.delete(canvas_obj)
angle -= 10
angle %= 360
time.sleep(0.02)
def cerrar(self):
self.parent.destroy()
\ No newline at end of file
......@@ -5,6 +5,14 @@
# Autor: Alejandro de la Cruz Garijo
import tkinter as tk
import customtkinter as ctk
import os
import sys
PROJECT_ROOT = os.path.abspath(os.path.join(
os.path.dirname(__file__),
os.pardir))
sys.path.append(PROJECT_ROOT)
from Controller.ListasContr import ListasContr
class listas(ctk.CTkToplevel):
# Algunas variables globales para los parametros que pasaremos a la siguiente vista,
......@@ -16,6 +24,7 @@ class listas(ctk.CTkToplevel):
ERRORES = None
HEIGHT = None
WIDTH = None
controlador = ListasContr()
def __init__(self, parent, opt, *args, **kwargs):
super().__init__(parent, *args, **kwargs)
self.parent = parent
......@@ -36,25 +45,8 @@ class listas(ctk.CTkToplevel):
"Grupos de permisos",
"Protection level"
]
textoPermisos = [
"Permiso1",
"Permiso2",
"Permiso3",
"Permiso4",
"Permiso5",
"Permiso6",
"Permiso7",
"Permiso8",
"Permiso9",
]
textoGrupos = [
"Grupo1",
"Grupo2",
"Grupo3",
"Grupo4",
"Grupo5",
"Grupo6",
]
textoPermisos = self.controlador.getPermisos(opt)
textoGrupos = self.controlador.getGrupos()
textoProtection =[
"Normal",
"Dangerous",
......@@ -65,7 +57,7 @@ class listas(ctk.CTkToplevel):
# Fuentes de texto
headersFont = ctk.CTkFont(family="Inter", size=40, weight="bold")
textFont = ctk.CTkFont(family="Inter", size=30, weight="normal")
textFont = ctk.CTkFont(family="Inter", size=15, weight="normal")
errorFont = ctk.CTkFont(family="Inter", size=15, weight="normal")
# Creación de frames para las listas
......@@ -80,7 +72,7 @@ class listas(ctk.CTkToplevel):
permisos.append(ctk.CTkCheckBox(listas[0], text=i, text_color="white", font= textFont,
command=lambda check_var=check_var, permisos=permisos, textoPermisos= textoPermisos:
self.checkboxPermisos(check_var, permisos, textoPermisos),
variable=check_var, onvalue=i, offvalue="!"+i))
variable=check_var, onvalue="Perm"+i, offvalue="!"+i))
# Creación de checkboxes para los grupos
for i in textoGrupos:
grupos.append(ctk.CTkCheckBox(listas[1], text=i, text_color="white", font= textFont,
......@@ -152,42 +144,44 @@ class listas(ctk.CTkToplevel):
self.ERRORES.grid(row = 2, column = 1, padx=3, pady=3)
return
else:
print("OK1")
error = self.controlador.aFinal(self.PERMISO,self.GRUPO,None, self.OPT)
elif self.OPT == 2:
if len(self.GRUPO) != 2:
self.ERRORES.configure(text="Debes seleccionar 2 grupos de permisos.")
self.ERRORES.grid(row = 2, column = 1, padx=3, pady=3)
return
else:
print("OK2")
error = self.controlador.aFinal(self.PERMISO,self.GRUPO,None, self.OPT)
elif self.OPT == 3:
if self.PROTECTION == "":
self.ERRORES.configure(text="Debes seleccionar un protection level.")
self.ERRORES.grid(row = 2, column = 1, padx=3, pady=3)
return
else:
print("OK3")
error = self.controlador.aFinal(self.PERMISO,None,self.PROTECTION, self.OPT)
elif self.OPT == 4:
if len(self.GRUPO) != 1:
self.ERRORES.configure(text="Debes seleccionar un grupo de permisos.")
self.ERRORES.grid(row = 2, column = 1, padx=3, pady=3)
return
else:
print("OK4")
error = self.controlador.aFinal(self.PERMISO,self.GRUPO,None, self.OPT)
elif self.OPT == 5:
if len(self.GRUPO) != 1:
self.ERRORES.configure(text="Debes seleccionar un grupo de permisos.")
self.ERRORES.grid(row = 2, column = 1, padx=3, pady=3)
return
else:
print("OK5")
print("Permiso: ",self.PERMISO, " Grupo: ",self.GRUPO, " Protection: ",self.PROTECTION)
error = self.controlador.aFinal(self.PERMISO,self.GRUPO,None, self.OPT)
if error != "OK":
self.ERRORES.configure(text=error)
self.ERRORES.grid(row = 2, column = 1, padx=3, pady=3)
return
def checkboxPermisos(self, check_var, permisos, textoPermisos):
if(check_var.get()[0] != "!"):
clickedCheckbox = permisos[textoPermisos.index(check_var.get())]
self.PERMISO = check_var.get()
clickedCheckbox = permisos[textoPermisos.index(check_var.get()[4::])]
self.PERMISO = check_var.get()[4::]
for checkbox in permisos:
if checkbox != clickedCheckbox:
checkbox.deselect()
......@@ -207,6 +201,10 @@ class listas(ctk.CTkToplevel):
for checkbox in grupos:
if checkbox != grupos[textoGrupos.index(self.GRUPO[0])] and checkbox != grupos[textoGrupos.index(self.GRUPO[1])]:
checkbox.deselect()
elif self.OPT != 2:
self.GRUPO.clear()
else:
self.GRUPO.pop(self.GRUPO.index(check_var.get()[1::]))
def checkboxProtection(self, check_var, protection, textoProtection):
if(check_var.get()[0] != "!"):
......
......@@ -4,6 +4,7 @@
# Este menú nos permite ir a las distintas pruebas que se han planteado.
# Autor: Alejandro de la Cruz Garijo
import tkinter as tk
from PIL import Image, ImageTk
import customtkinter as ctk
import os
import sys
......@@ -49,6 +50,10 @@ class mainWindow(ctk.CTkFrame):
boton = ctk.CTkButton(gridBotones, command=funcion, text=texto, font=textFont, corner_radius=10,
fg_color="#D9D9D9", text_color="black", width=250, height=100)
botones.append(boton)
imagePath = os.path.join(os.path.dirname(os.path.abspath(__file__)), "../../assets/ayuda.png")
imagenAyuda = Image.open(imagePath)
imagenAyuda = ctk.CTkImage(imagenAyuda, size=(40,40))
ayuda = ctk.CTkButton(self, text="",image= imagenAyuda,command=self.ayuda, text_color="black", corner_radius=5,width=40, height=40, font=textFont, fg_color="#D9D9D9")
# Colocación de los botones en el Frame para los botones
cont = 0;
......@@ -60,6 +65,7 @@ class mainWindow(ctk.CTkFrame):
# Mostramos la etiqueta de texto y el frame de los botones
mainText.pack()
gridBotones.pack()
ayuda.pack(side="bottom", anchor="e",padx = 10, pady = 10)
# Funciones para los botones
def defecto(self):
......@@ -86,6 +92,10 @@ class mainWindow(ctk.CTkFrame):
def appsFirmadas(self):
print("Apps firmadas")
return
def ayuda(self):
self.controlador.aAyuda(self.parent)
print("ayuda")
return
if __name__ == "__main__":
# Creación de ventana principal
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment