88 lines
3.7 KiB
Python
88 lines
3.7 KiB
Python
# Módulo: vista/panel_lateral.py
|
|
|
|
import tkinter as tk
|
|
from tkinter import ttk
|
|
from tkinter import messagebox
|
|
from logica.controlador import accion_placeholder, getPlataforma
|
|
from logica.T1.backup import accion_backup_t1
|
|
from logica.T1.runVScode import abrir_vscode
|
|
|
|
|
|
class PanelLateral(ttk.Frame):
|
|
"""Contiene el menú de botones y entradas para las tareas de T1."""
|
|
|
|
def __init__(self, parent, central_panel=None, *args, **kwargs):
|
|
super().__init__(parent, *args, **kwargs)
|
|
self.central_panel = central_panel # Guardamos la referencia
|
|
|
|
# ❌ ELIMINAR ESTA LÍNEA: self.pack(fill="y", padx=5, pady=5)
|
|
|
|
self.configurar_estilos_locales(parent)
|
|
|
|
# Entrada superior (amarilla)
|
|
ttk.Entry(self, width=25, style='Yellow.TEntry').pack(fill="x", pady=10, padx=5, ipady=3)
|
|
|
|
# 1. Área de Extracción/Navegación
|
|
acciones_extraccion = [
|
|
("Extraer datos", self.manejar_extraccion_datos),
|
|
("Navegar", lambda: accion_placeholder("Navegar")),
|
|
("Buscar API Google", lambda: accion_placeholder("Buscar API Google"))
|
|
]
|
|
self.crear_seccion(self, titulo="", acciones=acciones_extraccion)
|
|
|
|
# 2. Área de Aplicaciones
|
|
acciones_aplicaciones = [
|
|
("Visual Code", abrir_vscode),
|
|
("App2", lambda: accion_placeholder("App2")),
|
|
("App3", lambda: accion_placeholder("App3"))
|
|
]
|
|
self.crear_seccion(self, titulo="Aplicaciones", acciones=acciones_aplicaciones)
|
|
|
|
# 3. Área de Procesos Batch
|
|
acciones_batch = [
|
|
("Copias de seguridad", self.manejar_backup)
|
|
]
|
|
self.crear_seccion(self, titulo="Procesos batch", acciones=acciones_batch)
|
|
|
|
tk.Frame(self, height=1).pack(expand=True, fill="both")
|
|
|
|
def manejar_extraccion_datos(self):
|
|
"""
|
|
Llama a la lógica de actualización del gráfico de recursos
|
|
en el panel central (actualización manual).
|
|
"""
|
|
if self.central_panel:
|
|
print("Activando actualización del gráfico de Recursos (Manual)...")
|
|
self.central_panel.actualizar_grafico_recursos()
|
|
else:
|
|
messagebox.showerror("Error", "El Panel Central no está inicializado.")
|
|
|
|
def manejar_backup(self):
|
|
"""Llama a la lógica de backup de T1 e informa al usuario del resultado."""
|
|
print("Iniciando proceso de Copia de Seguridad...")
|
|
success, message = accion_backup_t1()
|
|
|
|
if success:
|
|
messagebox.showinfo("Backup Completado", message)
|
|
else:
|
|
messagebox.showerror("Error en el Backup", message)
|
|
|
|
def configurar_estilos_locales(self, parent):
|
|
"""Configura estilos para los widgets del panel lateral."""
|
|
style = ttk.Style(parent)
|
|
style.configure('Yellow.TEntry', fieldbackground='#fff8e1', foreground='#333333', padding=[5, 5],
|
|
relief='solid', borderwidth=1)
|
|
style.configure('Green.TButton', background='#4CAF50', foreground='white', font=('Arial', 10, 'bold'),
|
|
relief='flat', padding=[10, 5])
|
|
style.map('Green.TButton', background=[('active', '#388E3C'), ('pressed', '#1B5E20')])
|
|
|
|
def crear_seccion(self, parent_frame, titulo, acciones):
|
|
"""Función helper para crear secciones de etiquetas y botones."""
|
|
if titulo:
|
|
ttk.Label(parent_frame, text=titulo, font=('Arial', 11, 'bold')).pack(fill="x", pady=(10, 0), padx=5)
|
|
|
|
frame_botones = ttk.Frame(parent_frame, style='TFrame')
|
|
frame_botones.pack(fill="x", pady=5, padx=5)
|
|
|
|
for texto_boton, comando in acciones:
|
|
ttk.Button(frame_botones, text=texto_boton, command=comando, style='Green.TButton').pack(fill="x", pady=5) |